windows - Er det muligt at erstatte systemets åbne fildialog?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil erstatte standard system open file dialog med den jeg skrev, det betyder uanset i hvilket program du åbner en fil, min dialog vil blive vist i stedet for standard en, er det muligt?


Det ser ud til, at der ikke er nogen sådan API, der er tilvejebragt for at opnå dette. Er det muligt at bruge nogle hooking-teknikker, men det skal være pålideligt og ikke behandles som spyware af antivirusværktøjer?


andre muligheder?


Hvis dette ikke er muligt, er det muligt at tilføje til mellemrumstasten eller værktøjslinjen i den standard åbne fildialog en knap, der påberåber min dialog, som tillader brugere at vælge en fil og igen vender banen for den valgte fil til 'Filnavn 'indlæsningsboks i standarddialogen?


Eventuelle hits, links og kodeeksempler vil blive værdsat.

Bedste reference


Fra Vista er FileOpen/FileSave dialogerne nu 'Common Item Dialogs', hvoraf IFileOpenDialog & IFileSaveDialog er de to offentliggjorte implementeringer. [1]


Da de kun er COM-objekter med kendte CLSID'er, kan du komme væk med bare at erstatte dem ved at genregistrere ved hjælp af deres CLSID'er. Aldrig prøvet noget sådan, kan de rejse alle slags alarmklokker.


Pre-Vista-fildialoger kan hookes i gang, men jeg har aldrig stødt på noget om globale kroge eller tilsvarende. [2]

Andre referencer 1


Hvis du kopierer en fil/mappe til en dialogboks filnavn, klipper det alligevel hele vejen.


Hvis du for eksempel har åbnet både et program, der kalder standard åben/gem dialogboksen og også har et vindue åbent på den fil eller sti, du vil arbejde med (åben fra/gem til), kan du simpelthen kopiere filen/mappe fra explorer vinduet og derefter indsætte i filnavn feltet i dialogboksen, og det vil indsætte den fulde sti i filen/mappen. Ingen brugerdefineret script er påkrævet!


Alternativt, for de programmer, der bruger brugerdefinerede dialogbokse, hvor dette trin fejler, skal du kopiere den samme fil/mappe i vinduet til adresselinjen i det samme vindue (forudsat at det er synligt). Dette vil indsætte den fulde sti, som du kan kopiere igen, og derefter indsætte denne fulde sti i den brugerdefinerede dialogboks. Jeg bruger ofte dette ved oprettelse af Office-hyperlinks (Ctrl + K), fordi dialogboksen Indsæt hyperlink ikke virker for den første metode.


Du kan også bruge lignende metoder, men indsætte i adresselinjer og det virker.