Windows Verkenner aanpassen met behulp van shell-extensies

  • Shell-extensies maken een diepgaande aanpassing van de Verkenner mogelijk, die verder gaat dan wat het Register biedt.
  • Windows biedt meerdere besturingselementen (contextmenu, pictogrammen, miniaturen, metadata en naamruimte) om het gedrag per bestand aan te passen.
  • In Windows 11 kunt u Verkenner overzichtelijker en sneller maken door registerinstellingen voor menu's, het linkerpaneel en mapsjablonen aan te passen.
  • Moderne applicaties die met MSIX zijn verpakt, integreren contextmenu's en COM-servers via extensies die in het manifest zijn gedeclareerd.

Windows Bestandsverkenner aanpassen

Als je gefrustreerd raakt door menu's vol opties die je niet gebruikt, slecht geĆÆmplementeerde integraties of trage openingstijden van mappen, dan is dit iets voor jou., dan bent u hier aan het juiste adres.

In Windows kun je het gedrag van Verkenner en het contextmenu op verschillende manieren aanpassen (waaronder: Trucs met Bestandsverkenner in Windows 11): via het register, met klassieke shell-extensies in de vorm van DLL's, met moderne MSIX-pakketten, en zelfs door je eigen extensies te maken in .NET of C++. Laten we al deze mogelijkheden rustig bekijken, zonder eromheen te draaien.

Wat zijn shell-extensies en waarom schiet het register tekort?

De Windows Shell kan op een eenvoudige manier worden uitgebreid via registervermeldingen en .ini-bestanden.Deze aanpak is eenvoudig en meestal voldoende om pictogrammen aan te passen per bestandstype, extra opdrachten toe te voegen of extensies te koppelen. Er is echter een belangrijke beperking: alles wat u definieert, geldt voor het bestandstype, niet voor individuele bestanden.

Een typisch voorbeeld is dat van aangepaste pictogrammen via een extensie.: als je in het register een pictogram aan het .docx-bestand toewijst, todas Kopieƫn van dat bestandstype hebben hetzelfde pictogram, zelfs als je probeert ze van elkaar te onderscheiden. En er zijn gedeeltes van de Shell, zoals het eigenschappenvenster dat verschijnt wanneer je met de rechtermuisknop klikt en kiest. EIGENDOMMENdie simpelweg niet gewijzigd kunnen worden met alleen registerinstellingen.

Om de Verkenner echt te kunnen besturen, moet je een stap verder gaan en shell-extensiehandlers gebruiken.Dit zijn COM-componenten (meestal DLL's) die de shell aanroept telkens wanneer een specifieke actie wordt uitgevoerd: een pictogram weergeven, het contextmenu openen, een miniatuur renderen, een tooltip tonen, enzovoort. De Verkenner raadpleegt het stuurprogramma vlak voordat de bewerking wordt uitgevoerd, waardoor het de mogelijkheid heeft om het resultaat te wijzigen.

Een veelvoorkomend voorbeeld is de contextmenucontroller.Als u een component aanmaakt voor een specifiek bestandstype, zal Windows deze elke keer activeren wanneer u met de rechtermuisknop op een bestand van dat type klikt. Deze component kan verschillende menu-items toevoegen, afhankelijk van het specifieke bestand, het aantal geselecteerde items, het pad, enzovoort. Dit is onmogelijk te bereiken met een eenvoudige opdrachtkoppeling in het register.

Binnen deze familie van controllers zijn er twee hoofdgroepen.Dit zijn de commando's die gekoppeld zijn aan specifieke bestandstypen (en "per bestand" werken) en de commando's die in het algemeen in de shell worden uitgevoerd (zonder afhankelijk te zijn van een specifieke extensie). Door ze in detail te bekijken, krijg je inzicht in hun beperkingen.

Shell-extensies in Windows

Belangrijkste controllers die aan bestandstypen zijn gekoppeld.

Met op bestandstypen gebaseerde handlers kunt u het gedrag van Verkenner aanpassen voor specifieke bestandsextensies.Ze werken op bestandsniveau, waardoor je menu's, pictogrammen of eigenschappen kunt aanpassen aan elk afzonderlijk element.

  • Contextmenu-controller. Het wordt uitgevoerd vlak voordat het contextmenu van een bestand wordt weergegeven. Hiermee kunt u extra opdrachten toevoegen, items herschikken en opties alleen voor specifieke bestanden of situaties weergeven (bijvoorbeeld als er meerdere bestanden zijn geselecteerd, als het een speciale map is, enz.).
  • Gegevensverwerker. Het speelt een rol bij drag-and-drop-bewerkingen op Shell-objecten. Het kan bijdragen aan... Aanvullende klembordindelingen zodat de bestemming meer informatie heeft (bijvoorbeeld een alternatieve weergave in XML- of binair formaat).
  • Drop Handler. Deze opdracht wordt uitgevoerd wanneer u gegevens naar een specifiek bestand sleept. Hiermee kunt u een bestand als bestemming gebruiken voor een sleepbewerking, bijvoorbeeld om meerdere bestanden naar een .zip-bestand of een database te slepen.
  • Pictogramhandler. Deze functie wordt aangeroepen voordat de shell een bestandsicoon weergeeft. Hiermee kunt u het standaardicoon van een bestandstype vervangen door een aangepast icoon voor elk bestand. Dit is erg handig voor elementen zoals afbeeldingen, projectdocumenten, synchronisatiestatussen, enzovoort. Het is raadzaam om hiervoor de documentatie te raadplegen. beste extensies voor Explorer.
  • Eigenschappenbladcontroller. Het wordt geactiveerd wanneer u op het punt staat het dialoogvenster weer te geven. EIGENDOMMEN van een object. Je kunt het gebruiken om extra tabbladen toe te voegen of bestaande tabbladen te vervangen, zodat je applicatie de instellingen direct in het eigenschappenvenster van het bestand weergeeft.
  • Miniatuurhandler. Het genereert de afbeelding die u in de Verkenner-miniatuur ziet. Hierdoor kan een videobestand een representatief frame weergeven of een ongebruikelijk afbeeldingsformaat worden bekeken zonder afhankelijk te zijn van externe toepassingen.
  • InfoTip-handler. Dit wordt gebruikt om de tooltip te genereren die verschijnt wanneer u met uw muis over een bestand beweegt. Hier kunt u relevante metadata weergeven: audioduur, fotoresolutie, documentstatus, enz.
  • Metadata-controller. Het biedt lees- en schrijftoegang tot de eigenschappen die in een bestand zijn opgeslagen. Dankzij dit kunt u de weergave van Details, tooltipinformatie, groeperingen en extra kolommen met aangepaste metadata.

Andere Shell-stuurprogramma's die niet aan een bestandstype zijn gekoppeld

Naast stuurprogramma's die afhankelijk zijn van een bestandstype.Er zijn ook andere processen die de Shell aanroept vóór bepaalde algemene Explorer-bewerkingen. Deze processen maken aanpassingen op een hoger niveau mogelijk.

  • Kolomcontroller. De weergave wordt gecontroleerd voordat deze wordt getoond. Details vanuit een map. Het wordt gebruikt om aangepaste kolommen toe te voegen (bijvoorbeeld "Beoordeling", "Interne auteur", "Validatiestatus") die worden gevuld met informatie die door uw extensie wordt berekend.
  • Kopieer-hook-handler. Deze opdracht wordt uitgevoerd wanneer het systeem een ​​map of printer wil verplaatsen, kopiĆ«ren, verwijderen of hernoemen. Hiermee kunt u die bewerking goedkeuren of blokkeren, wat erg handig is in beveiligingsoplossingen, bedrijfsbeleid of bij bewaakte mappen.
  • Contextuele drag-and-drop-handler. Dit menu wordt geopend wanneer je een bestand sleept met de rechtermuisknop. Je kunt het contextmenu dat verschijnt wanneer je de muisknop loslaat, aanpassen en speciale acties toevoegen zoals 'Converteren en verplaatsen', 'Uploaden en origineel verwijderen', enzovoort.
  • Handler voor pictogramoverlays. Voeg een kleine markering toe aan een bestands- of mapicoon (bijvoorbeeld het groene vinkje voor gesynchroniseerde bestanden of een uitroepteken). De shell roept dit aan vlak voordat het icoon wordt getekend, en jouw code bepaalt welke overlay moet worden toegepast.
  • Zoekcontroller. Het wordt gebruikt om aangepaste zoekmachines te starten die in de shell zelf zijn geĆÆntegreerd. Hiermee kunt u uw eigen zoekmachine beschikbaar maken via het menu. Home of vanuit de Explorer, die werkt met externe gegevens of niet-standaard structuren.

Contextmenu en Explorer-extensies

Naamruimte-extensies: virtuele mappen in Verkenner

Windows Explorer leert je niet alleen het traditionele bestandssysteem kennen.Het weerspiegelt in feite een complete 'naamruimte' die virtuele mappen zoals de Prullenbak, Bibliotheken of Printers omvat. Met een naamruimte-extensie kunt u elke gegevensgroep omsluiten en presenteren alsof het een normale map is.

Wanneer u een naamruimte-extensie aanmaakt, toont Verkenner uw gegevens als een hiĆ«rarchie van mappen en bestanden.Ook als ze zich daadwerkelijk in een database bevinden, op een extern apparaat staan ​​of simpelweg logische links zijn (zoals bij printers), gedragen ze zich voor de gebruiker als elke andere map: bestanden kunnen worden gekopieerd, verplaatst, verwijderd, de eigenschappen ervan kunnen worden bekeken en er kan zelfs naar worden gezocht.

Technisch gezien wordt elke map die zichtbaar is in Verkenner weergegeven door een COM-object dat een 'mapobject' wordt genoemd.Wanneer de gebruiker interactie heeft met die map of de inhoud ervan, communiceert de shell met dat object via standaardinterfaces zoals IShellFolderHet object reageert op verzoeken (lijstitems, retourpictogrammen, namen, attributen, enz.) en de shell werkt de grafische interface bij.

Dit model is met name handig wanneer uw gegevens niet goed passen in de standaard bestands- en mapstructuur.Beschouw een database waar je doorheen wilt navigeren als mappen, de inhoud van een digitale camera zonder Windows-bestandssysteem, of een verzameling puur logische objecten (bijvoorbeeld printopdrachten in een wachtrij).

Een naamruimte-extensie is grofweg onderverdeeld in twee delen.Een gegevensbeheerder (hoe en waar u de informatie opslaat, volgens uw voorkeuren) en een interface-laag met de Verkenner die die gegevens verpakt als mappen en bestanden. Dit tweede onderdeel implementeert de COM-interfaces, zodat DefView (de standaard mapweergave) en de rest van de Shell weten hoe de inhoud moet worden weergegeven en bewerkt.

Hoe Explorer-weergaven samenwerken met een extensie

Het Verkenner-venster bestaat uit verschillende onderdelen: de boomstructuur, de mapweergave, de menu- en werkbalken en de statusbalk.Wanneer u een map opent die wordt beheerd door uw naamruimte-extensie, kan uw code alle mappen daarin beĆÆnvloeden, zij het in verschillende mate.

De boomstructuur geeft een overzicht van de hiƫrarchie op hoog niveau.Het bevat een TreeView-besturingselement dat elke map in de naamruimte en de bijbehorende positie weergeeft. Vanuit hier kan de gebruiker niveaus uitvouwen, mappen slepen, het contextmenu gebruiken of submappen openen. De Verkenner communiceert voornamelijk via IShellFolderwaarbij attributen worden opgevraagd, submappen worden weergegeven en weergavenamen en pictogrammen worden opgevraagd.

De mapweergave (het rechterpaneel met de bestanden) is nog flexibeler.In tegenstelling tot de boomstructuurweergave beheert de Verkenner de inhoud niet direct; hij maakt simpelweg een subvenster aan en geeft dit door aan uw mapobject. Dat venster kan een klassieke ListView, een webbrowserbesturingselement met dynamische HTML of iets anders bevatten dat relevant is voor uw gegevens.

De gebruikelijke werkwijze is om DefView opnieuw te gebruiken met de SHCreateShellFolderView-functie.Dit biedt u de standaardweergave met pictogrammen, details, sortering, groeperingen, enzovoort, zodat u zich kunt concentreren op het presenteren van de gegevens. Als u echter een zeer specifieke presentatie nodig hebt, kunt u een volledig aangepaste weergave creƫren.

Het menu en de werkbalken van de Verkenner kunnen via uw extensie worden aangepast.De shell stelt de interface beschikbaar IShellBrowserHiermee kunt u knoppen en menu-items toevoegen of verwijderen, of reageren op specifieke opdrachten. Wanneer de gebruiker op een aangepaste knop klikt, stuurt de Explorer het bericht door. WM_COMMAND naar je venster, zodat je de actie kunt verwerken.

De statusbalk is ook een zeer nuttig kanaal.Van hetzelfde IShellBrowser Je kunt de tekst bijwerken om contextuele informatie weer te geven over het geselecteerde object, het aantal items, fouten in je extensie, enzovoort, waardoor de integratie met het systeem wordt verbeterd.

Ontwikkel browserextensies met behulp van een .NET-klassenbibliotheek.

Als je ontwikkelt in .NET, kun je een bibliotheek met basisklassen gebruiken om het maken van veel van deze extensies te vereenvoudigen.Het idee is heel eenvoudig: je maakt een klassebibliotheekproject aan, voegt een COM-klasse toe en laat deze overerven van de basisklasse die overeenkomt met het type extensie dat je wilt implementeren.

BrowserHelperObjectBase maakt het bijvoorbeeld eenvoudig om Browser Helper Objects voor Internet Explorer te maken.Het in kaart brengen van browsermethoden, -gebeurtenissen en -eigenschappen naar je code. Je stelt zaken zoals de IE-instantie (eigenschap) beschikbaar. Internet Explorer), het venster waarin het object wordt uitgevoerd (Websiteen u behandelt gebeurtenissen zoals Bij verbinding u Bij verbinding verbreken.

ContextMenuHandlerBase vereenvoudigt het maken van contextmenu's voor de Verkenner.Je hoeft alleen maar de collectie te vullen. Menu-items met MenuItem-objecten, zoals je dat in een Windows Forms-formulier zou doen, en koppel je aan de gebeurtenis Klik van elke optie. Het eigendom Bestanden Het geeft je een lijst met geselecteerde bestanden en de methode. Bij menu geselecteerd Het wordt gebruikt om de helptekst in de statusbalk bij te werken.

Met DropHandlerBase implementeer je drag-and-drop-handlers die aan een bestand zijn gekoppeld.Je hebt eigenschappen zoals Bestandsnaam (de bestemming waar bestanden worden neergezet) en Bestanden (degenen die werden meegesleept), en van methoden zoals OnDragEnter, Bij slepen, Bij slepen en verlaten y Bij slepen en neerzetten om op elke fase van de weerstand te reageren.

Met IconHandlerBase kunt u het pictogram retourneren dat de Verkenner zal weergeven. voor elk bestand. Van OnGetIconLocation jij bepaalt waar het pictogram zich bevindt en in OnExtractIcon Je retourneert de specifieke pictogramhandlers, waarmee je miniaturen of geavanceerde weergaven kunt genereren.

De registratie van deze .NET-extensies gebeurt via COM met behulp van regasm.exe.De basisklassen bevatten methoden die zijn gemarkeerd met ComRegisterFunction y ComUnregisterFunction Deze klassen zijn verantwoordelijk voor het aanmaken of verwijderen van de juiste registervermeldingen wanneer u de assembly registreert. Daarnaast ondersteunen veel van deze klassen het attribuut. ExtensionFileTypes om aan te geven op welke bestandstypen ze van invloed zijn (dit kan een door komma's gescheiden lijst zijn of het jokerteken * voor alles).

Vervang of wijzig de shell (explorer.exe) op systeemniveau.

Een andere manier om de Windows-omgeving radicaal te veranderen, is door de standaard shell aan te passen.Dat wil zeggen, het programma dat start wanneer u inlogt. Op systemen met ƩƩn specifiek doel (kiosken, industriƫle apparaten, terminals) wilt u soms niet dat Explorer wordt uitgevoerd, maar liever ƩƩn enkele toepassing op volledig scherm; als u andere opties nodig hebt, zie alternatieven voor Windows Verkenner.

In Windows Server- en clientomgevingen wordt dit gedrag via het register geregeld., in de sleutel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ShellDoor de waarde te vervangen door het pad naar uw uitvoerbare bestand, zorgt u ervoor dat uw programma wordt geladen in plaats van de klassieke Verkenner wanneer u inlogt.

De waarschuwing is hier duidelijk.Door explorer.exe als shell uit te schakelen, heeft de eindgebruiker geen bureaublad, taakbalk of mapvensters meer. Deze optie is daarom het meest geschikt voor gesloten systemen. Daarnaast is het altijd raadzaam om een ​​alternatieve methode voor beheer en herstel te hebben (RDP, veilige modus, GPO, enz.).

Windows 11 Bestandsverkenner aanpassen via het register

Naast COM-extensies willen veel gebruikers simpelweg vervelende opties uit het contextmenu verwijderen of de klassieke werking herstellen.In Windows 11 hebben het herontwerp van het contextmenu en de integratie van functies zoals Copilot behoorlijk wat kritiek opgeleverd, met name van gevorderde gebruikers.

Het eerste wat je moet onthouden, is dat knoeien met het register geen kinderspel is.Een onjuiste wijziging kan het systeem destabiliseren, dus maak eerst een herstelpunt of een back-up van het register. En zorg er natuurlijk voor dat u de paden exact overneemt zoals ze worden weergegeven.

Om de Register-editor te openen, typt u eenvoudigweg "regedit" in het Startmenu. en gooi de Register-editorVan daaruit kunt u door elke tak die we gaan bespreken navigeren en naar behoefte sleutels, tekenreekswaarden of DWORD's aanmaken.

Verwijder 'Vraag de copiloot' en andere items uit het contextmenu.

Als je de Copilot-app of -integratie op Windows 11 hebt geĆÆnstalleerdAls je met de rechtermuisknop op een bestand klikt, zie je waarschijnlijk de optie ā€œVraag het aan Copilootā€Deze optie neemt ruimte in beslag in het menu en zit alleen maar in de weg als je de functie niet gebruikt.

Om dit via het register uit te schakelen, ga naar HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell ExtensionsMaak binnen deze tak een nieuwe sleutel aan met de naam geblokkeerdEenmaal binnen, voeg een nieuwe toe. ketenwaarde wiens naam zal zijn {CB3B0003-8088-4EDE-8769-8B354AB2FF8C} en laat de inhoud leeg.

Dezelfde truc werkt ook om andere opties te wissen, zoals 'Bewerken met Kladblok', Paint of Clipchamp.Altijd werkzaam onder de afdeling HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell Extensions en binnen de sleutel geblokkeerdJe kunt verschillende tekenreekswaarden maken:

  • {CA6CC9F1-867A-481E-951E-A28C5E4F01EA} verbergen ā€œBewerken met Kladblokā€.
  • {8BCF599D-B158-450F-B4C2-430932F2AF2F} om de optie te verwijderen Clipchamp.
  • {2430F218-B743-4FD6-97BF-5C76541B4AE9} om de integratie te verwijderen Schilder.

Nadat deze waarden zijn aangemaakt, start u Verkenner of uw computer opnieuw op, zodat Windows de instellingen opnieuw laadt.Om een ​​van deze wijzigingen ongedaan te maken, hoeft u alleen de bijbehorende waarde of de hele sleutel te verwijderen. geblokkeerd als u alle tickets wilt terugvinden.

Breng het klassieke Windows 10-contextmenu terug

Een van de meest besproken veranderingen in Windows 11 is het nieuwe, vereenvoudigde contextmenu.Het is niet dat het op zich "slecht" is, maar veel ervaren gebruikers missen het volledige Windows 10-menu, met alle opties zichtbaar zonder dat ze op "Meer opties weergeven" hoeven te klikken.

Om terug te keren naar de klassieke stijl, kunt u een kleine aanpassing in het register doorvoeren.. Ga naar HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID (Let op: verwar dit niet met de .cls-tak) en maak een nieuwe sleutel aan met de naam {86ca1aa0-34aa-4e8b-a509-50c905bae2a2}.

Voeg binnen deze nieuw aangemaakte sleutel nog een sleutel toe met de naam InprocServer32.Dubbelklik in het rechterpaneel op de waarde. (Vooraf bepaald) Zorg ervoor dat het gegevensveld volledig leeg is. Accepteer de wijzigingen en sluit de editor.

Na het opnieuw opstarten van uw pc verschijnt het contextmenu weer wanneer u met de rechtermuisknop op bestanden of mappen klikt, net zoals in Windows 10.met alle traditionele opties direct beschikbaar. Als u wilt terugkeren naar het oorspronkelijke gedrag van Windows 11, verwijdert u eenvoudigweg deze CLSID-sleutel (en de bijbehorende subsleutel InprocServer32).

Verbeter de prestaties van Verkenner door de mapweergave aan te passen.

Bestandsverkenner kan behoorlijk traag worden als Windows probeert specifieke mapsjablonen op elk pad toe te passen. (bijvoorbeeld "Afbeeldingen", "Video's", "Documenten", enz.) en moet de inhoud analyseren om te bepalen welke weergave te gebruiken. Dit is vooral merkbaar op computers met veel bestanden of mechanische harde schijven.

Een truc om sneller te navigeren is om het systeem te laten weten dat alle mappen generiek zijn.zodat de analyse directer wordt. Dit wordt bereikt in de sleutel HKEY_CURRENT_USER\Software\Klassen\Lokale instellingen\Software\Microsoft\Windows\Shell\Tassen\Alle mappen\Shell.

Maak binnen deze sleutel een tekenreekswaarde aan met de naam FolderType. en wijst het toe als inhoud Niet gespecificeerdSla de wijzigingen op en herstart uw computer, of log uit en weer in.

Wanneer u Verkenner opnieuw opent, zult u merken dat het wisselen tussen mappen soepeler verloopt.Vooral handig als je vaak werkt met bestanden die duizenden subbestanden bevatten of met een grote verscheidenheid aan bestandstypen. Het is geen toverkunst, maar het scheelt hier en daar wel een paar seconden. Deze instelling is met name nuttig als Explorer is traag.

Integratie van de Explorer met MSIX-pakketapplicaties

Tot nu toe hebben we het vooral gehad over extensies die direct in het register zijn geregistreerd.Dit is de klassieke aanpak die gebruikt wordt door MSI- of ClickOnce-installatieprogramma's. Deze technologieƫn maken sleutels aan in verschillende takken van het register om contextmenu's, bestandskoppelingen, enzovoort te registreren.

Bij applicaties die in MSIX-pakketten zijn verpakt, verandert het beeld.Het register is gevirtualiseerd voor de app en u kunt er niet langer op vertrouwen dat het Explorer-extensies registreert. In plaats daarvan moet u de pakketuitbreidingen gedefinieerd in het pakketmanifest (Package.appxmanifest), waar u bestandstypekoppelingen, contextmenu-opdrachten en COM-servers declareert.

De eenvoudigste manier om te integreren met Explorer op MSIX is via de windows.fileTypeAssociation-extensie.Je geeft aan welke bestandstypen je ondersteunt (bijvoorbeeld .foo), welke parameters je uitvoerbare bestand ontvangt wanneer de gebruiker een van die bestanden opent, en welke extra acties in het contextmenu verschijnen (bijvoorbeeld "Bestandsgrootte wijzigen").

Het element FileTypeAssociation definieert de logische naam van de associatie en de typen die deze ondersteunt.In zijn kenmerk Kenmerken Het duurt meestal minstens %1Dit geeft het pad naar het geselecteerde bestand weer. Binnenin bevindt zich het element OndersteundeBestandstypen Geef de specifieke extensies weer (.foo, .bar, enz.), en Ondersteunde werkwoorden Het bevat de werkwoorden die met hun eigen parameters aan het contextmenu worden toegevoegd.

Dit model kent twee belangrijke beperkingen.Je kunt alleen werkwoorden weergeven voor bestandstypen die al aan je app zijn gekoppeld, en ze worden alleen weergegeven als je app de standaardapp voor dat type is. Bovendien kan het werkwoord alleen het hoofd-executable van de app starten (zij het met andere parameters), niet een ander willekeurig EXE-bestand.

Geavanceerde Shell COM-extensies in MSIX-pakketten

Als je meer wilt doen (algemene mappen beheren, andere taken starten of de hoofdapp niet elke keer openen)Een andere optie is om een ​​klassieke Shell COM-extensie (DLL) te maken en deze te registreren in het MSIX-manifest, in plaats van het systeemregister te gebruiken.

Een Shell COM-extensie is in principe een DLL die een of meer COM-klassen beschikbaar stelt met een unieke CLSID.Windows laadt deze DLL wanneer Verkenner het contextmenu, pictogrammen, miniaturen, enz. moet weergeven en roept methoden aan zoals GetTitle, GetIcon, GetTooltip o inroepen (in het geval van menuopdrachten).

De gebruikelijke implementatie gebeurt in C++ vanwege prestatie- en geheugenbesparingsredenen.Een klassiek voorbeeld is een project vergelijkbaar met "ExplorerCommandVerb", waarbij de klasse CExplorerCommandVerb De menuopdracht is geĆÆmplementeerd. De methode inroepen Het is het proces dat wordt uitgevoerd wanneer de gebruiker op uw item in het contextmenu klikt, en van daaruit kunt u praktisch alles doen wat u wilt: dialoogvensters weergeven, andere processen starten, meerdere items verwerken, enzovoort.

Om de COM-server in een MSIX-pakket te registreren, gebruikt u de naamruimte 'com' in het manifest.Bij het knooppunt com:Extension Category=»windows.comServer» Je declareert de COM-server en het servertype (bijvoorbeeld, SurrogateServer) en binnen een element com:Class waarbij u aangeeft Id (uw CLSID) en de Pad (de DLL die de implementatie bevat).

Integratie met de bestandsverkenner vindt later plaats met behulp van de windows.fileExplorerContextMenus-extensie., gedeclareerd binnen een knooppunt desktop4:ExtensieHet definieert een of meer desktop5:ItemType (bijvoorbeeld Directory, * of een specifieke uitbreiding) en daarbinnen elementen desktop5:Werkwoord die verwijzen naar uw CLSID.

Het DLL-bestand moet in het MSIX-bestand worden opgenomen en samen met de applicatie worden gekopieerd.Als u een Windows-applicatieverpakkingsproject gebruikt, is de eenvoudigste manier om de DLL aan het project toe te voegen en aan te geven dat deze altijd naar de uitvoermap moet worden gekopieerd, of om het kopiƫren te automatiseren met een post-compilatiegebeurtenis in het C++-project.

Na het installeren van het MSIX-pakket zal Verkenner de nieuwe extensie pas laden na een herstart.Je kunt de hele computer opnieuw opstarten of het proces beƫindigen. explorer.exe Open Taakbeheer en herstart de computer. Vanaf dat moment verschijnt de nieuwe contextmenuoptie op de door u opgegeven plek.

Het ecosysteem van shell-extensies, registeraanpassingen en MSIX-manifesten biedt je de mogelijkheid om Verkenner naar een hoger niveau te tillen.Of het nu gaat om het opruimen van rommelige menu's, het versnellen van de navigatie, het integreren van eigen applicaties of zelfs het omzetten van complexe datastructuren in gebruiksvriendelijke 'mappen', met de juiste aanpassingen in het register en een goede planning van COM-extensies kunt u een Verkenner creƫren die perfect aansluit op uw behoeften, zonder dat dit ten koste gaat van de systeemstabiliteit.

10 Windows Logo
Gerelateerd artikel:
De beste bestandsverkenners voor Windows 10