windows - Sådan overføres flere tilknyttede filer til et program?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har skrevet en Windows-software, og jeg har tilknyttet en filudvidelse med dette program. Når jeg dobbeltklikker på en datafil, starter mit program op og åbner filen. Indtil videre fungerer det. Men når jeg vælger flere filer og derefter klikker på 'Åbn' i kontekstmenuen, startes der flere forekomster af mit program, en forekomst for en fil. Jeg vil have Windows til at åbne ALLE filer med en enkelt forekomst af mit program. Er det muligt uden at gennemføre en one-instans-handler i mit program?


I øjeblikket ser MyFileType/shell/open/command i registreringsdatabasen sådan ud:


"C:Program FilesMyAppMyApp.exe" "\%1"


Måske er der noget specielt Token/Variable, jeg skal bruge i stedet for '\% 1' for at få det til at fungere? På Linux skal jeg bruge\% f for en enkelt fil og\% F for en liste over filer. Er der noget lignende på Windows?

Bedste reference


Den enkleste måde er at forbinde din app med standard shell-verben (f.eks. 'Åben' eller 'afspilning') for filtypen og implementerer et drop-mål, der bruger SHCreateShellItemArrayFromDataObject for at hente de valgte filer. Foreslået læsning: Hvordan Shell påberåber Verbs [3]


Hvis du ikke vil overtage standardværdien, kan du tilføje dit verb til filforeningen s åbne med liste. [4]


En anden metode er at gøre din app en singleton og sende dokumentets vej til første instans via interprocess kommunikationsmetoder som DDE eller RPC. Dette kræver, at du holder din hovedvindue lydhør (f.eks. Vil du ikke arbejde hvis du viser en dialog)

Andre referencer 1


\% * kan være det, du leder efter.