El motor de búsqueda de Windows


la Aplicación de Shell Búsqueda de Controlador usando Delphi

El Shell es compatible con varias utilidades de búsqueda que permiten a los usuarios localizar el espacio de nombres de objetos, tales como archivos o impresoras. Usted puede crear un motor de búsqueda personalizado y ponerla a disposición de los usuarios mediante la aplicación y el registro de búsqueda de controlador.

los Usuarios tienen dos formas de seleccionar un motor de búsqueda. La primera forma es desde el menú Inicio. Con los sistemas anteriores de Microsoft Windows 2000, seleccionando el comando Buscar en el menú Inicio muestra un submenú de los motores de búsqueda. Con Windows 2000 y versiones posteriores, el menú de Inicio del comando Find es cambiar el nombre de la Búsqueda.

los Usuarios también pueden iniciar una búsqueda desde el Explorador de Windows. En los sistemas anteriores a Windows 2000, haga clic en el comando Buscar en el menú Herramientas para mostrar esencialmente el mismo menú que la asociada con el menú de Inicio. Sin embargo, el Explorador de Windows para Windows 2000 controla los motores de búsqueda de una manera muy diferente. En lugar de la manipulación de los motores de búsqueda como un submenú del menú Herramientas, ahora hay un botón de Búsqueda en la barra de herramientas. Al hacer clic en este botón se abre el Explorer de la barra de Búsqueda del panel de

El siguiente ejemplo muestra cómo implementar Shell Búsqueda de Controlador usando Borland Delphi. Como cualquier Extensión de la Cáscara debe ser implementado en proceso de Modelo de Objetos Componentes (COM) de objeto. Se le debe asignar un identificador único global (GUID) y registrados mediante regsvr32.exe

biblioteca SearchHandler
usos
ComServ,
HandlerM en 'HandlerM.pas'
{$R *.RES}
las exportaciones
DllGetClassObject,
DllCanUnloadNow,
DllRegisterServer,
DllUnregisterServer
begin
fin
.

{*****************************************************************************
Nombre : TSearchEngine
Autor : Perevoznyk Serhiy
Descripción : Concha de Búsqueda de Controlador
*****************************************************************************}
unidad HandlerM
interfaz
usos
de Windows, ActiveX, ComObj, ShlObj, cuadros de diálogo
tipo
TSearchEngine = clase(TComObject, IShellExtInit, IContextMenu)
protegido
{ IShellExtInit }
función IShellExtInit.Inicializar = SEIInitialize // Evitar la advertencia del compilador
función SEIInitialize(pidlFolder: PItemIDList lpdobj: IDataObject
hKeyProgID: HKEY): HResult stdcall
{ IContextMenu }
función QueryContextMenu(Menú: HMENU indexMenu, idCmdFirst, idCmdLast,
uFlags: UINT): HResult stdcall
función InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult stdcall
función GetCommandString(idCmd, uType: UINT pwReserved: PUINT
pszName: LPSTR cchMax: UINT): HResult stdcall
fin
const
Class_SearchEngine: TGUID = '{B8091A44-1F5E-4EFE-8F26-194ACBDE4465}'
aplicación
usos
ComServ, SysUtils, ShellApi, Registro
función TSearchEngine.SEIInitialize(pidlFolder: PItemIDList lpdobj: IDataObject
hKeyProgID: HKEY): HResult
begin
Resultado := NOERROR
fin
función TSearchEngine.QueryContextMenu(Menú: HMENU indexMenu, idCmdFirst,
idCmdLast, uFlags: UINT): HResult
begin

Resultado := 0
fin

función TSearchEngine.InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult
begin
//ingrese aquí el código
ShowMessage('Ejecutado')
Resultado := NOERROR
fin
función TSearchEngine.GetCommandString(idCmd, uType: UINT pwReserved: PUINT
pszName: LPSTR cchMax: UINT): HRESULT
begin
si
(idCmd = 0)
begin
si
(uType = GCS_HELPTEXT)
// return cadena de ayuda para el elemento de menú
StrCopy(pszName, 'Buscar'documento)
Resultado := NOERROR
fin
else
Resultado := E_INVALIDARG
fin
tipo
TSearchEngineFactory = clase(TComObjectFactory)
público
procedimiento
UpdateRegistry(Registro: Boolean) reemplazar
fin

procedimiento CreateKey(const , ValueName, Valor: cadena)
var
Mango: HKey
el Estado, la Disposición: Integer
begin
Estado := RegCreateKeyEx(HKEY_LOCAL_MACHINE, PChar(Clave), 0, ',
REG_OPTION_NON_VOLATILE, KEY_READ o KEY_WRITE, nil, Mango,
@Disposición)
si Estado = 0
begin
RegSetValueEx(Mango, PChar(ValueName), 0, REG_SZ,
PChar(Valor), Longitud(Valor) 1)
RegCloseKey(Asa)
fin
fin

procedimiento DeleteKey(const : cadena)
begin
RegDeleteKey(HKEY_LOCAL_MACHINE, PChar(Clave))
fin
procedimiento TSearchEngineFactory.UpdateRegistry(Registro: Boolean)
var
ClassID: cadena
nombre del archivo: array [0..MAX_PATH] de Char
begin
si se Registra luego
begin
heredado
UpdateRegistry(Registro)
ClassID := GUIDToString(Class_SearchEngine)
GetModuleFileName(HInstance, nombre de archivo, SizeOf(Archivo))
CreateKey('Software/Microsoft/Windows/CurrentVersion/Explorer/'
'FindExtensions/Estática/SearchHandler'
, ', ClassID)
CreateKey('Software/Microsoft/Windows/CurrentVersion/Explorer/'
'FindExtensions/Estática/SearchHandler/0'
, ', 'Con Delphi...')
CreateKey('Software/Microsoft/Windows/CurrentVersion/Explorer/'
'FindExtensions/Estática/SearchHandler/0/DefaultIcon'
, ', nombre de archivo ',0')
fin
else
begin
DeleteKey('Software/Microsoft/Windows/CurrentVersion/Explorer/'
FindExtensions/Estática/SearchHandler/0/DefaultIcon')
DeleteKey('Software/Microsoft/Windows/CurrentVersion/Explorer/'
'FindExtensions/Estática/SearchHandler/0'
)
DeleteKey('Software/Microsoft/Windows/CurrentVersion/Explorer/'
'FindExtensions/Estática/SearchHandler'
)
heredado UpdateRegistry(Registro)
fin
fin
inicialización
TSearchEngineFactory.Crear(ComServer, TSearchEngine, Class_SearchEngine,
', 'Delphi Motor de Búsqueda Ejemplo', ciMultiInstance,
tmApartment)
fin.









El motor de busqueda de Windows


El motor de busqueda de Windows : Multi-millones de consejos para hacer su vida mas facil.


la Aplicacion de Shell Busqueda de Controlador usando Delphi

El Shell es compatible con varias utilidades de busqueda que permiten a los usuarios localizar el espacio de nombres de objetos, tales como archivos o impresoras. Usted puede crear un motor de busqueda personalizado y ponerla a disposicion de los usuarios mediante la aplicacion y el registro de busqueda de controlador.

los Usuarios tienen dos formas de seleccionar un motor de busqueda. La primera forma es desde el menu Inicio. Con los sistemas anteriores de Microsoft Windows 2000, seleccionando el comando Buscar en el menu Inicio muestra un submenu de los motores de busqueda. Con Windows 2000 y versiones posteriores, el menu de Inicio del comando Find es cambiar el nombre de la Busqueda.

los Usuarios tambien pueden iniciar una busqueda desde el Explorador de Windows. En los sistemas anteriores a Windows 2000, haga clic en el comando Buscar en el menu Herramientas para mostrar esencialmente el mismo menu que la asociada con el menu de Inicio. Sin embargo, el Explorador de Windows para Windows 2000 controla los motores de busqueda de una manera muy diferente. En lugar de la manipulacion de los motores de busqueda como un submenu del menu Herramientas, ahora hay un boton de Busqueda en la barra de herramientas. Al hacer clic en este boton se abre el Explorer de la barra de Busqueda del panel de

El siguiente ejemplo muestra como implementar Shell Busqueda de Controlador usando Borland Delphi. Como cualquier Extension de la Cascara debe ser implementado en proceso de Modelo de Objetos Componentes (COM) de objeto. Se le debe asignar un identificador unico global (GUID) y registrados mediante regsvr32.exe

biblioteca SearchHandler
usos
ComServ,
HandlerM en 'HandlerM.pas'
{$R *.RES}
las exportaciones
DllGetClassObject,
DllCanUnloadNow,
DllRegisterServer,
DllUnregisterServer
begin
fin
.

{*****************************************************************************
Nombre : TSearchEngine
Autor : Perevoznyk Serhiy
Descripcion : Concha de Busqueda de Controlador
*****************************************************************************}
unidad HandlerM
interfaz
usos
de Windows, ActiveX, ComObj, ShlObj, cuadros de dialogo
tipo
TSearchEngine = clase(TComObject, IShellExtInit, IContextMenu)
protegido
{ IShellExtInit }
funcion IShellExtInit.Inicializar = SEIInitialize // Evitar la advertencia del compilador
funcion SEIInitialize(pidlFolder: PItemIDList lpdobj: IDataObject
hKeyProgID: HKEY): HResult stdcall
{ IContextMenu }
funcion QueryContextMenu(Menu: HMENU indexMenu, idCmdFirst, idCmdLast,
uFlags: UINT): HResult stdcall
funcion InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult stdcall
funcion GetCommandString(idCmd, uType: UINT pwReserved: PUINT
pszName: LPSTR cchMax: UINT): HResult stdcall
fin
const
Class_SearchEngine: TGUID = '{B8091A44-1F5E-4EFE-8F26-194ACBDE4465}'
aplicacion
usos
ComServ, SysUtils, ShellApi, Registro
funcion TSearchEngine.SEIInitialize(pidlFolder: PItemIDList lpdobj: IDataObject
hKeyProgID: HKEY): HResult
begin
Resultado := NOERROR
fin
funcion TSearchEngine.QueryContextMenu(Menu: HMENU indexMenu, idCmdFirst,
idCmdLast, uFlags: UINT): HResult
begin

Resultado := 0
fin

funcion TSearchEngine.InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult
begin
//ingrese aqui el codigo
ShowMessage('Ejecutado')
Resultado := NOERROR
fin
funcion TSearchEngine.GetCommandString(idCmd, uType: UINT pwReserved: PUINT
pszName: LPSTR cchMax: UINT): HRESULT
begin
si
(idCmd = 0)
begin
si
(uType = GCS_HELPTEXT)
// return cadena de ayuda para el elemento de menu
StrCopy(pszName, 'Buscar'documento)
Resultado := NOERROR
fin
else
Resultado := E_INVALIDARG
fin
tipo
TSearchEngineFactory = clase(TComObjectFactory)
publico
procedimiento
UpdateRegistry(Registro: Boolean) reemplazar
fin

procedimiento CreateKey(const , ValueName, Valor: cadena)
var
Mango: HKey
el Estado, la Disposicion: Integer
begin
Estado := RegCreateKeyEx(HKEY_LOCAL_MACHINE, PChar(Clave), 0, ',
REG_OPTION_NON_VOLATILE, KEY_READ o KEY_WRITE, nil, Mango,
@Disposicion)
si Estado = 0
begin
RegSetValueEx(Mango, PChar(ValueName), 0, REG_SZ,
PChar(Valor), Longitud(Valor) 1)
RegCloseKey(Asa)
fin
fin

procedimiento DeleteKey(const : cadena)
begin
RegDeleteKey(HKEY_LOCAL_MACHINE, PChar(Clave))
fin
procedimiento TSearchEngineFactory.UpdateRegistry(Registro: Boolean)
var
ClassID: cadena
nombre del archivo: array [0..MAX_PATH] de Char
begin
si se Registra luego
begin
heredado
UpdateRegistry(Registro)
ClassID := GUIDToString(Class_SearchEngine)
GetModuleFileName(HInstance, nombre de archivo, SizeOf(Archivo))
CreateKey('Software/Microsoft/Windows/CurrentVersion/Explorer/'
'FindExtensions/Estatica/SearchHandler'
, ', ClassID)
CreateKey('Software/Microsoft/Windows/CurrentVersion/Explorer/'
'FindExtensions/Estatica/SearchHandler/0'
, ', 'Con Delphi...')
CreateKey('Software/Microsoft/Windows/CurrentVersion/Explorer/'
'FindExtensions/Estatica/SearchHandler/0/DefaultIcon'
, ', nombre de archivo ',0')
fin
else
begin
DeleteKey('Software/Microsoft/Windows/CurrentVersion/Explorer/'
FindExtensions/Estatica/SearchHandler/0/DefaultIcon')
DeleteKey('Software/Microsoft/Windows/CurrentVersion/Explorer/'
'FindExtensions/Estatica/SearchHandler/0'
)
DeleteKey('Software/Microsoft/Windows/CurrentVersion/Explorer/'
'FindExtensions/Estatica/SearchHandler'
)
heredado UpdateRegistry(Registro)
fin
fin
inicializacion
TSearchEngineFactory.Crear(ComServer, TSearchEngine, Class_SearchEngine,
', 'Delphi Motor de Busqueda Ejemplo', ciMultiInstance,
tmApartment)
fin.


El motor de búsqueda de Windows

El motor de búsqueda de Windows : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación