Shell Integrere i Windows til en bestemt filtype med C #

Indlæg af Hanne Mølgaard Plasc

Problem



Så jeg søgte efter en vejledning om hvordan man skal integrere din ansøgning (tilføj den til højre klikmenuen) med C #, men jeg kunne ikke finde ud af, hvordan man kun gør det for en bestemt filtype. Jeg ved, det er muligt, fordi WinRar gør det. så hvordan kan jeg gøre det

Bedste reference


Der er normalt to-måder, du kan implementere dette.



  1. Registreringsnøgler - Du kan skrive nøgler og værdier under HKEY\_CLASSES\_ROOT. Hvis du ser på den hive, ser du udvidelserne på din pc. Se på denne artikel for detaljer om nøgler og værdier. Der er noget nemt som en mulighed for at åbne .myfile typer med din ansøgning her. er en filforening eksempel [5] [6]

  2. Shell Extensions (skrevet i COM): Her kan du gøre mere komplicerede ting som Handlers. De bliver kaldt af Windows, så du kan gøre ting som maling på menuer eller tilføje tilpassede handlinger, når en fil er højreklikket. Der er mere til det her end filer, du kan endda tilføje egenskabsark og brugerdefinerede værktøjstips. [7]



Du vil finde nogle snak om ikke at bruge .NET til at skrive en Shell Handler **. Dette gælder kun ældre versioner af .NET. Det er alt ok med. NET4. [8] [9]


Denne artikel skal hjælpe dig med en kontekstmenuhåndterer i .NET4 [10]


** Hvorfor var det anbefales ikke:


Når du skriver en shell handler, bliver den kaldt af værtsprocessen (typisk windows explorer), men også ting som FileOpenDialogs og FolderBrowser dialoger. Så et problem ville opstå, hvis du skrev en shell extension i .NET 2.0, og en .NET 1.1 app kaldte en File Open Dialog og derefter din. NET 2.0 shell handler ville blive indkaldt til og din. NET 1.1 app, som har en ældre CLR og der ville være versionskonflikt.


Så jeg er glad for at have fundet ud af det, det er blevet rettet på en eller anden måde i. NET 4 =)

Andre referencer 1


Windows Stifinder Højreklikk menuer styres af registreringsdatabasen. Specifikt HKEY\_CLASSES\_ROOT-bøven.


En god måde at få en god ide om, hvordan alting fungerer der, er at tjekke HKCR.txt, som viser, hvad der vil ske for tekstfiler i højre klikmenu. Se på (Standard) -tasten, som peger på 'txtfile'. HKCR xtfile vil så have en undernøgle HKCR xtfileshellopencomman d. (Standard) -tasten for det viser kommandoen for at åbne notepad.exe med en parameter af '\% 1', hvilket angiver den fil, der åbnes. Udskift den åbne nøgle med et andet navn (se print og printto nøgler i txtfile-tasten) for at tilføje en anden brugerdefineret kommando til højreklikmenuen.


Når du har taget fat på, hvad du skal tilføje for at integrere din ansøgning, kan du tjekke navneområdet Microsoft.Win32 for klasser for at hjælpe med at manipulere registreringsdatabasen via c # kode. [11]