Implementing Shell Søk Handler bruker Delphi 
 Shell støtter flere søke verktøy som tillater brukere å finne navne gjenstander som filer eller skrivere. Du kan opprette en egendefinert søkemotor og gjøre den tilgjengelig for brukerne ved å implementere og registrere en søkehåndterer. 
 Brukere har to måter å velge en søkemotor. Den første måten er fra Start-menyen. Med systemer tidligere enn Microsoft Windows 2000, velger Finn-kommandoen på Start-menyen viser en undermeny av de tilgjengelige søkemotorer. Med Windows 2000 og senere, er Start-menyen Finn-kommandoen omdøpt Search. 
 Brukere kan også starte et søk fra Windows Utforsker. På systemer tidligere enn Windows 2000, klikker de på Finn-kommandoen på Verktøy-menyen for å vise hovedsak den samme menyen som den ene i forbindelse med Start-menyen. Men Windows Explorer for Windows 2000 håndterer søkemotorer på en helt annen måte. I stedet for å håndtere søkemotorer som en undermeny i Verktøy-menyen, er det nå en Søk-knappen på verktøylinjen. Ved å klikke på denne knappen åpner Explorer barens søkeruten 
 Følgende eksempel viser hvordan man implementerer Shell Søk Handler bruker Borland Delphi. Som enhver Shell Extension må det iverksettes som i-prosessen Component Object Model (COM) objekt. Det må tilordnes en globalt unik identifikator (GUID) og registreres med regsvr32.exe 
  bibliotek 
 Search;  bruker 
 comserv, HandlerM  i 
 'HandlerM.pas ';  {$ R * res} 
  eksporten 
 DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer;beginend
.{***************************************************************************** Navn: TSearchEngine Forfatter: Perevoznyk Serhiy Beskrivelse: Shell Søk Handler ************************************** ***************************************} 
  enhet Anmeldelser HandlerM;  interfaceuses 
 Windows, ActiveX, ComObj, ShlObj, Dialoger;  skriv 
 TSearchEngine =  klasse plakater (TComObject, IShellExtInit, IContextMenu)  beskyttet 
 < i> {IShellExtInit} 
  funksjon 
 IShellExtInit.Initialize = SEIInitialize;  //Unngå kompilatoren advarsel 
  funksjon 
 SEIInitialize (pidlFolder: PItemIDList; lpdobj: IDataObject; hKeyProgID: HKEY): hresult;  STDCALL 
;  {IContextMenu} 
  funksjon 
 QueryContextMenu (Meny: HMENU; indexMenu, idCmdFirst, idCmdLast, uFlags: UINT): hresult;  STDCALL 
;  funksjon 
 InvokeCommand ( Var 
 lpici: TCMInvokeCommandInfo): hresult;  STDCALL 
;  funksjon 
 GetCommandString (idCmd, uType: UINT; pwReserved: Puint; pszName: LPSTR; cchMax: UINT): hresult;  STDCALL 
;  end 
;  konst 
 Class_SearchEngine: TGUID = {B8091A44-1F5E-4EFE-8F26-194ACBDE4465};  implementationuses 
 comserv, SysUtils, ShellApi, Registry;  funksjon 
 TSearchEngine.SEIInitialize (pidlFolder: PItemIDList; lpdobj: IDataObject; hKeyProgID: HKEY): hresult;  begynne 
 Resultat: = noerror;  end 
;  funksjon 
 TSearchEngine.QueryContextMenu (Meny: HMENU; indexMenu, idCmdFirst, idCmdLast, uFlags: UINT): hresult;  begynne 
 Resultat: = 0;  end 
;  funksjon 
 TSearchEngine.InvokeCommand ( Var 
 lpici: TCMInvokeCommandInfo): hresult;  begynne 
  //angi koden her 
 ShowMessage ('Utført'); Resultat: = noerror;  end 
;  funksjon 
 TSearchEngine.GetCommandString (idCmd, uType: UINT; pwReserved: Puint; pszName: LPSTR; cchMax: UINT): HRESULT;  begynne hvis product: (idCmd = 0)  deretter begynne hvis plakater (uType = GCS_HELPTEXT)  deretter 
  //gjengjeld hjelpe streng for menyvalget 
 StrCopy (pszName, 'Finn dokument '); Resultat: = noerror;  end annet 
 Resultat: = E_INVALIDARG;  end 
;  skriv 
 TSearchEngineFactory =  klasse plakater (TComObjectFactory)  offentlig prosedyre 
 UpdateRegistry (  Registrer Bilde: Boolean);  styre 
;  end 
;  prosedyre 
 CreateKey ( konst 
 Key, Valuename, Verdi:  string 
);  Var 
 Handle: HKEY; Status, Disposition: Integer;  begynne 
 Status: = RegCreateKeyEx (HKEY_LOCAL_MACHINE, PChar (Key), 0, '', REG_OPTION_NON_VOLATILE, KEY_READ  eller 
 KEY_WRITE,  nil 
, Håndtak,Disposition);  hvis 
 Status = 0  deretter begynne 
 RegSetValueEx (Håndtak, PChar (Valuename), 0, REG_SZ, PChar (verdi), Lengde (Verdi) + 1); RegCloseKey (Handle);  end 
;  end 
;  prosedyre 
 DeleteKey ( konst 
 Key:  string 
);  begynne Anmeldelser RegDeleteKey (HKEY_LOCAL_MACHINE, PChar (Key));  end 
;  prosedyre 
 TSearchEngineFactory.UpdateRegistry ( Registrer Bilde: Boolean);  Var 
 ClassID: < b> string 
; Filename:  rekke product: [0..MAX_PATH]  av 
 Char;  begynne hvis Register deretter begynner arvet 
 UpdateRegistry ( Registrer 
); ClassID: = GUIDToString (Class_SearchEngine); GetModuleFileName (hInstance, Filename, sizeof (Filename)); CreateKey ('Software \\ Microsoft \\ Windows \\ Currentversion \\ Explorer \\' + 'FindExtensions \\ Static \\ Search', '', ClassID); CreateKey ('Software \\ Microsoft \\ Windows \\ Currentversion \\ Explorer \\' + 'FindExtensions \\ Static \\ Search \\ 0', '', 'Bruke Delphi ...'); CreateKey ('Software \\ Microsoft \\ Windows \\ Currentversion \\ Explorer \\' + 'FindExtensions \\ Static \\ Search \\ 0 \\ DefaultIcon', '', Filename + ", 0 ');  end annet begynne 
 DeleteKey ('Software \\ Microsoft \\ Windows \\ Currentversion \\ Explorer \\' + 'FindExtensions \\ Static \\ Search \\ 0 \\ DefaultIcon'); DeleteKey ('Software \\ Microsoft \\ Windows \\ Currentversion \\ Explorer \\' + 'FindExtensions \\ Static \\ Search \\ 0'); DeleteKey ('Software \\ Microsoft \\ Windows \\ Currentversion \\ Explorer \\' + 'FindExtensions \\ Static \\ Search');  arvet 
 UpdateRegistry ( Registrer 
);  end 
;  end 
;  initialisering 
 TSearchEngineFactory.Create (COMSERVER, TSearchEngine, Class_SearchEngine, '', 'Delphi Search Engine Eksempel' ciMultiInstance, tmApartment);  end 
. 
Windows Search Engine
Next Page:APIS bak Registry 
			 
        
