Windows moteur de recherche


la mise en Œuvre de la Coquille de Recherche de Gestionnaire à l'aide de Delphi

Le Shell prend en charge plusieurs utilitaires de recherche qui permettent aux utilisateurs de localiser les noms des objets tels que des fichiers ou des imprimantes. Vous pouvez créer un moteur de recherche personnalisé et de les rendre disponibles aux utilisateurs par la mise en œuvre et l'enregistrement d'un gestionnaire de recherche.

les Utilisateurs disposent de deux moyens pour sélectionner un moteur de recherche. La première consiste à partir du menu Démarrer. Avec les systèmes antérieurs à Windows 2000, la sélection de la commande Rechercher dans le menu Démarrer affiche un sous-menu des moteurs de recherche disponibles. Avec Windows 2000 et versions ultérieures, le menu Démarrer de la commande Find est renommé de Recherche.

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 dans une manière très différente. Plutôt que de manipuler les moteurs de recherche comme un sous-menu du menu Outils, il y a maintenant un bouton de Recherche dans la barre d'outils. Un clic sur ce bouton ouvre l'Explorateur de la barre de Recherche, volet

L'exemple suivant montre comment implémenter Shell Recherche de Gestionnaire à l'aide de Borland Delphi. Comme toute Extension du Shell, il doit être mis en œuvre que dans le processus de Modèle d'Objet Composant (COM) de l'objet. Il doit être associé à un identificateur global unique (GUID) et est enregistré à l'aide de regsvr32.exe

bibliothèque SearchHandler
utilise
ComServ,
HandlerM de 'HandlerM.pas'
{$R *.RES}
les exportations
DllGetClassObject,
DllCanUnloadNow,
DllRegisterServer,
DllUnregisterServer
begin
fin
.

{*****************************************************************************
Nom : TSearchEngine
Auteur : Perevoznyk Serhiy
Description : Coque de Recherche Handler
*****************************************************************************}
unité HandlerM
interface

de Windows, ActiveX, ComObj, ShlObj, les boîtes de dialogue
type
TSearchEngine = class(TComObject, IShellExtInit, IContextMenu)
protected
{ IShellExtInit }
fonction IShellExtInit.Initialiser = SEIInitialize // Éviter d'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}'
application
utilise
ComServ, SysUtils, ShellApi, Registre
fonction TSearchEngine.SEIInitialize(pidlFolder: PItemIDList lpdobj: IDataObject
hKeyProgID: HKEY): HResult
begin
Result := NOERROR
fin
fonction TSearchEngine.QueryContextMenu(Menu: HMENU indexMenu, idCmdFirst,
idCmdLast, uFlags: UINT): HResult
begin

Result := 0
fin

fonction TSearchEngine.InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult
begin
//entrez votre code ici
ShowMessage('Exécutées')
Résultat := NOERROR
fin
fonction TSearchEngine.GetCommandString(idCmd, uType: UINT pwReserved: PUINT
pszName: LPSTR cchMax: UINT): HRESULT
begin
si
(idCmd = 0) puis
begin
si
(uType = GCS_HELPTEXT) puis
// retourner la chaîne d'aide pour l'élément de menu
StrCopy(pszName, 'Trouver le document' )
Result := NOERROR
fin
else
Résultat := E_INVALIDARG
fin
type
TSearchEngineFactory = class(TComObjectFactory)
public
procédure
UpdateRegistry(Inscrivez-vous: Booléen) remplacer
fin

procédure CreateKey(const , ValueName, Value: string)
var
Poignée: HKey
d'État, de la Disposition: Entier
begin
Etat := RegCreateKeyEx(HKEY_LOCAL_MACHINE, PChar(Clé), 0, ',
REG_OPTION_NON_VOLATILE, KEY_READ ou KEY_WRITE, nul Poignée
@Disposition)
si Statut = 0 puis
begin
RegSetValueEx(Poignée, PChar(ValueName), 0, REG_SZ,
PChar(Valeur), la Longueur(en Valeur) 1)
RegCloseKey(Manche)
fin
fin

procédure DeleteKey(const : string)
begin
RegDeleteKey(HKEY_LOCAL_MACHINE, PChar(Clés))
fin
procédure TSearchEngineFactory.UpdateRegistry(Inscrivez-vous: Booléen)
var
ClassID: string
nom du fichier: array [0..MAX_PATH] de Char
begin
s'Enregistrer
begin
hérité
UpdateRegistry(Inscrivez-vous)
ClassID := GUIDToString(Class_SearchEngine)
GetModuleFileName(HInstance, nom de fichier, SizeOf(FileName)))
CreateKey('Software\Microsoft\Windows\CurrentVersion\Explorer\'
'FindExtensions\Statique\SearchHandler'
, ', ClassID)
CreateKey('Software\Microsoft\Windows\CurrentVersion\Explorer\'
'FindExtensions\Statique\SearchHandler\0'
, ', 'l'Aide de Delphi...')
CreateKey('Software\Microsoft\Windows\CurrentVersion\Explorer\'
'FindExtensions\Statique\SearchHandler\0\DefaultIcon'
, ', Nom ',0')
fin
else
begin
DeleteKey('Software\Microsoft\Windows\CurrentVersion\Explorer\'
'
FindExtensions\Statique\SearchHandler\0\DefaultIcon')
DeleteKey('Software\Microsoft\Windows\CurrentVersion\Explorer\'
'FindExtensions\Statique\SearchHandler\0'
)
DeleteKey('Software\Microsoft\Windows\CurrentVersion\Explorer\'
'FindExtensions\Statique\SearchHandler'
)
hérité UpdateRegistry(Inscrivez-vous)
fin
fin
initialisation
TSearchEngineFactory.Créer(ComServer, TSearchEngine, Class_SearchEngine,
', 'Delphi Moteur de Recherche Exemple' , ciMultiInstance,
tmApartment)
fin.









Windows moteur de recherche


Windows moteur de recherche : Plusieurs milliers de conseils pour vous faciliter la vie.


la mise en Œuvre de la Coquille de Recherche de Gestionnaire a l'aide de Delphi

Le Shell prend en charge plusieurs utilitaires de recherche qui permettent aux utilisateurs de localiser les noms des objets tels que des fichiers ou des imprimantes. Vous pouvez creer un moteur de recherche personnalise et de les rendre disponibles aux utilisateurs par la mise en œuvre et l'enregistrement d'un gestionnaire de recherche.

les Utilisateurs disposent de deux moyens pour selectionner un moteur de recherche. La premiere consiste a partir du menu Demarrer. Avec les systemes anterieurs a Windows 2000, la selection de la commande Rechercher dans le menu Demarrer affiche un sous-menu des moteurs de recherche disponibles. Avec Windows 2000 et versions ulterieures, le menu Demarrer de la commande Find est renomme de Recherche.

les Utilisateurs peuvent egalement lancer une recherche a partir de l'Explorateur Windows. Sur les systemes anterieurs a Windows 2000, cliquez sur la commande Rechercher dans le menu Outils pour afficher essentiellement le meme menu que celui qui est associe avec le menu Demarrer. Cependant, l'Explorateur Windows pour Windows 2000 gere les moteurs de recherche dans une maniere tres differente. Plutot que de manipuler les moteurs de recherche comme un sous-menu du menu Outils, il y a maintenant un bouton de Recherche dans la barre d'outils. Un clic sur ce bouton ouvre l'Explorateur de la barre de Recherche, volet

L'exemple suivant montre comment implementer Shell Recherche de Gestionnaire a l'aide de Borland Delphi. Comme toute Extension du Shell, il doit etre mis en œuvre que dans le processus de Modele d'Objet Composant (COM) de l'objet. Il doit etre associe a un identificateur global unique (GUID) et est enregistre a l'aide de regsvr32.exe

bibliotheque SearchHandler
utilise
ComServ,
HandlerM de 'HandlerM.pas'
{$R *.RES}
les exportations
DllGetClassObject,
DllCanUnloadNow,
DllRegisterServer,
DllUnregisterServer
begin
fin
.

{*****************************************************************************
Nom : TSearchEngine
Auteur : Perevoznyk Serhiy
Description : Coque de Recherche Handler
*****************************************************************************}
unite HandlerM
interface

de Windows, ActiveX, ComObj, ShlObj, les boîtes de dialogue
type
TSearchEngine = class(TComObject, IShellExtInit, IContextMenu)
protected
{ IShellExtInit }
fonction IShellExtInit.Initialiser = SEIInitialize // Eviter d'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}'
application
utilise
ComServ, SysUtils, ShellApi, Registre
fonction TSearchEngine.SEIInitialize(pidlFolder: PItemIDList lpdobj: IDataObject
hKeyProgID: HKEY): HResult
begin
Result := NOERROR
fin
fonction TSearchEngine.QueryContextMenu(Menu: HMENU indexMenu, idCmdFirst,
idCmdLast, uFlags: UINT): HResult
begin

Result := 0
fin

fonction TSearchEngine.InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult
begin
//entrez votre code ici
ShowMessage('Executees')
Resultat := NOERROR
fin
fonction TSearchEngine.GetCommandString(idCmd, uType: UINT pwReserved: PUINT
pszName: LPSTR cchMax: UINT): HRESULT
begin
si
(idCmd = 0) puis
begin
si
(uType = GCS_HELPTEXT) puis
// retourner la chaîne d'aide pour l'element de menu
StrCopy(pszName, 'Trouver le document' )
Result := NOERROR
fin
else
Resultat := E_INVALIDARG
fin
type
TSearchEngineFactory = class(TComObjectFactory)
public
procedure
UpdateRegistry(Inscrivez-vous: Booleen) remplacer
fin

procedure CreateKey(const , ValueName, Value: string)
var
Poignee: HKey
d'Etat, de la Disposition: Entier
begin
Etat := RegCreateKeyEx(HKEY_LOCAL_MACHINE, PChar(Cle), 0, ',
REG_OPTION_NON_VOLATILE, KEY_READ ou KEY_WRITE, nul Poignee
@Disposition)
si Statut = 0 puis
begin
RegSetValueEx(Poignee, PChar(ValueName), 0, REG_SZ,
PChar(Valeur), la Longueur(en Valeur) 1)
RegCloseKey(Manche)
fin
fin

procedure DeleteKey(const : string)
begin
RegDeleteKey(HKEY_LOCAL_MACHINE, PChar(Cles))
fin
procedure TSearchEngineFactory.UpdateRegistry(Inscrivez-vous: Booleen)
var
ClassID: string
nom du fichier: array [0..MAX_PATH] de Char
begin
s'Enregistrer
begin
herite
UpdateRegistry(Inscrivez-vous)
ClassID := GUIDToString(Class_SearchEngine)
GetModuleFileName(HInstance, nom de fichier, SizeOf(FileName)))
CreateKey('Software\Microsoft\Windows\CurrentVersion\Explorer\'
'FindExtensions\Statique\SearchHandler'
, ', ClassID)
CreateKey('Software\Microsoft\Windows\CurrentVersion\Explorer\'
'FindExtensions\Statique\SearchHandler\0'
, ', 'l'Aide de Delphi...')
CreateKey('Software\Microsoft\Windows\CurrentVersion\Explorer\'
'FindExtensions\Statique\SearchHandler\0\DefaultIcon'
, ', Nom ',0')
fin
else
begin
DeleteKey('Software\Microsoft\Windows\CurrentVersion\Explorer\'
'
FindExtensions\Statique\SearchHandler\0\DefaultIcon')
DeleteKey('Software\Microsoft\Windows\CurrentVersion\Explorer\'
'FindExtensions\Statique\SearchHandler\0'
)
DeleteKey('Software\Microsoft\Windows\CurrentVersion\Explorer\'
'FindExtensions\Statique\SearchHandler'
)
herite UpdateRegistry(Inscrivez-vous)
fin
fin
initialisation
TSearchEngineFactory.Creer(ComServer, TSearchEngine, Class_SearchEngine,
', 'Delphi Moteur de Recherche Exemple' , ciMultiInstance,
tmApartment)
fin.


Windows moteur de recherche

Windows moteur de recherche : Plusieurs milliers de conseils pour vous faciliter la vie.
Recommander aux amis
  • gplus
  • pinterest

Messages récents

Commentaire

Laisser un commentaire

évaluation