Article
FONT SIZE :
fontsize_dec
fontsize_inc
Auteur: Admin
Vues: 9
Date: Juin 9, 2015
Temps: 20:24:32 | 4 années depuis

Moteur de recherche pour Windows


La mise en œuvre Shell Recherche Handler dans Delphi

Le Shell prend en charge différente utilitaire de recherche qui permet aux utilisateurs de localiser des objets espace de noms sous forme de fichiers ou d'imprimantes. Vous pouvez créer un moteur de recherche personnalisé et de le rendre accessible aux utilisateurs par la mise en œuvre et l'enregistrement d'un gestionnaire de la recherche.

Les utilisateurs ont deux façons de sélectionner un moteur de recherche. La première est dans le menu Démarrer. Avec les systèmes antérieurs à Microsoft Windows 2000, sélectionner la commande Rechercher du menu Démarrer affiche un sous-menu des moteurs de recherche disponibles. Avec Windows 2000 et versions ultérieures, la commande Rechercher sur la recherche du menu Démarrer est renommé.


Les utilisateurs peuvent également lancer une recherche à partir de l'Explorateur Windows. Sur les systèmes antérieurs à Windows 2000, cliquez sur la commande Rechercher dans le menu Outils pour afficher essentiellement le même menu que celui qui est associé avec le menu Démarrer. Cependant, l'Explorateur Windows pour Windows 2000 gère les moteurs de recherche d'une manière très différente. Au lieu de gérer les moteurs de recherche comme un sous-menu du menu Outils, il ya maintenant un bouton de recherche dans la barre d'outils. Cliquer sur ce bouton ouvre la boîte de recherche dans la barre d'exploration

L'exemple suivant montre comment implémenter le gestionnaire de Shell Recherche par Borland Delphi. Comme chaque extension du shell doit être mis en œuvre comme modèle en cours COM (Component Object). Vous devez avoir un identifiant globalement unique (GUID) et enregistré à l'aide regsvr32.exe

bibliothèque SearchHandler;



utilisations

ComServ,

HandlerM dans "HandlerM.pas»;



{$ R * .RES}



exportations

DllGetClassObject,

DllCanUnloadNow,

DllRegisterServer,

DllUnregisterServer;



commencer

fin
.





{************************************************* ****************************

Nom: TSearchEngine

Auteur: Serhiy Perevoznyk

Description: Shell Recherche Handler

************************************************** ***************************}



unité HandlerM;



interface



utilisations

de Windows, ActiveX, ComObj, ShlObj, les boîtes de dialogue;



genre de

TSearchEngine = classe (TComObject, IShellExtInit, IContextMenu)

protégé

{} IShellExtInit

fonction = IShellExtInit.Initialize SEIInitialize; // Évitez avertissement du compilateur

fonction SEIInitialize (pidlFolder: PItemIDList; lpdobj: IDataObject;

hKeyProgID: HKEY): HRESULT; stdcall;

IContextMenu {}

fonction QueryContextMenu (Menu: HMENU; indexMenu, idCmdFirst, idCmdLast,

uFlags: uint): HRESULT; stdcall;

fonction InvokeCommand (var lpici: TCMInvokeCommandInfo): HRESULT; stdcall;

fonction GetCommandString (idCmd, uType: UINT; pwReserved: Puint;

pszName: LPSTR; cchMax: uint): HRESULT; stdcall;

fin;



const

Class_SearchEngine: TGUID = '{B8091A44-1F5E-4EFE-8F26-194ACBDE4465}';



exécution



utilisations
ComServ, SysUtils, ShellAPI, la greffe;



fonction TSearchEngine.SEIInitialize (pidlFolder: PItemIDList; lpdobj: IDataObject;

hKeyProgID: HKEY): HRESULT;

commencer

Résultat: = NOERROR;

fin;



fonction TSearchEngine.QueryContextMenu (Menu: HMENU; indexMenu, idCmdFirst,

idCmdLast, uFlags: uint): HRESULT;

commencer

Résultat: = 0;

fin;





fonction TSearchEngine.InvokeCommand (var lpici: TCMInvokeCommandInfo): HRESULT;

commencer

// entrer le code ici

ShowMessage («Terminé»);

Résultat: = NOERROR;

fin;



fonction TSearchEngine.GetCommandString (idCmd, uType: UINT; pwReserved: Puint;

pszName: LPSTR; cchMax: uint): HRESULT;

commencer

si
(idCmd = 0) et alors

commencer

si
(uType GCS_HELPTEXT =) et alors

// chaîne d'aide de retour à l'élément de menu

StrCopy (pszName, «Trouver le document);

Résultat: = NOERROR;

fin

autre

Résultat: = E_INVALIDARG;

fin;



genre de

TSearchEngineFactory = classe (TComObjectFactory)

public

procédure
UpdateRegistry (Se connecter: Boolean); Remplacer;

fin;





procédure CreateKey (const Key, ValueName, Valeur: chaîne);

var

Poignée: HKEY;

État Disposition: Integer;

commencer

État: = RegCreateKeyEx (HKEY_LOCAL_MACHINE, PChar (Key), 0, '',

REG_OPTION_NON_VOLATILE, KEY_READ ou KEY_WRITE, zéro Poignée

Disposition);

si État = 0 et alors

commencer

RegSetValueEx (Poignée, PChar (ValueName), 0, REG_SZ,

PChar (Value) Longueur (Value) + 1);

RegCloseKey (Manche);

fin;

fin;





procédure DeleteKey (const Key: chaîne);

commencer

RegDeleteKey (HKEY_LOCAL_MACHINE, PChar (Key));

fin;



procédure TSearchEngineFactory.UpdateRegistry (Se connecter: Boolean);

var

IDClasse: chaîne;

FileName: tableau [0..MAX_PATH] de Char;

commencer

si alors S'inscrire

commencer

hérité
UpdateRegistry (Se connecter);

IDClasse: = GUIDToString (Class_SearchEngine);

GetModuleFileName (hInstance, FileName, sizeof (FileName));

CreateKey («Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ '+
«FindExtensions \ Static \ SearchHandler ',' ', ClassID);

CreateKey («Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ '+ «FindExtensions \ Static \ SearchHandler \ 0 '
,' ',' Utilisation de Delphi ...");

CreateKey («Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ '+ «FindExtensions \ statique \ SearchHandler \ 0 \ DefaultIcon '
,' ', NomFichier +", 0);

fin

autre

commencer

DeleteKey («Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ '+ «FindExtensions \ Static \ SearchHandler \ 0 \ DefaultIcon '
);

DeleteKey («Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ '+ «FindExtensions \ Static \ SearchHandler \ 0 '
);

DeleteKey («Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ '+ «FindExtensions \ statique \ SearchHandler '
);

hérité UpdateRegistry (Se connecter);

fin;

fin;



initialisation

TSearchEngineFactory.Create (ComServer, TSearchEngine, Class_SearchEngine,

'', 'Delphi Exemple Search Engine », ciMultiInstance,

tmApartment);

fin.

Commentaires (0)
Sans commentaires

Ajouter un commentaire

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Caractères restants: 3000
captcha