Su mejor fuente de la información y de las noticias alrededor ventanas, conductores y xp en el Internet

ARTÍCULOS de Vista TAPA 50 Vista VIDEOS Vista SUAVE AYUDA de Vista

Extensión del namespace de Shell: Permitir búsqueda profunda


Descripción

De mis últimos postes sobre poner su propio namespace de Shell en ejecución, ha habido algunas grandes preguntas fijadas por los lectores. Muchos de éstos provienen el hecho de que el ejemplo del namespace es bastante simple en que no pone todo el comportamiento en ejecución que sea posible en explorador. Esto fue hecha para centrarse en los pasos de la base en conseguir un namespace de trabajo puesto en ejecución. Todavía, hay algunas medidas adicionales que usted puede tomar que no requieren demasiada más codificación en su parte agregar características más útiles. Una pregunta particularmente que sube absolutamente es a menudo cómo permitir profundamente buscar en su namespace.

Usted notará del ejemplo existente del namespace que si usted incorpora un término de la búsqueda a la caja de la búsqueda en explorador, la búsqueda filtra solamente los artículos que están actualmente en la visión. No busca en las carpetas. En abajo las imágenes, intentamos buscar para “dos” en la caja de la búsqueda que da lugar solamente a 1 artículo. Así, las carpetas secundarias no eran incluidas.

Búsqueda del filtro

Resultados del filtro - bajos

¿Qué un ejecutor del namespace tiene que hacer para incluir carpetas secundarias en sus resultados de la búsqueda del namespace? Esto es realmente bastante simple.

Poner IShellFolderViewCB e IFolderViewSettings en ejecución

En nuestro código anterior, no pusimos en ejecución IShellFolderViewCB para nuestro namespace. Esto permite que su namespace sea notificado de los acontecimientos asociados a la visión. Una puesta en práctica de IShellFolderViewCB se puede especificar en su llamada a SHCreateShellFolderView. Esto es opcional y éramos previamente justos pasando la FALTA DE INFORMACIÓN para esto. Necesitamos crear una clase esa los instrumentos IShellFolderViewCB así como IFolderViewSettings. Para nuestra puesta en práctica de IFolderViewSettings, necesitamos solamente proporcionar a un tratante para GetFolderFlags método. Es con este método que notificamos Shell que deseamos realizar búsquedas profundas dentro de nuestro namespace.

IFACEMETHODIMP CFolderViewCB:: GetFolderFlags (*pfolderMask del __out FOLDERFLAGS, *pfolderFlags del __out FOLDERFLAGS)

{

si (pfolderMask)

{

*pfolderMask = FWF_USESEARCHFOLDER;

}

si (pfolderFlags)

{

*pfolderFlags = FWF_USESEARCHFOLDER;

}

S_OK de vuelta;

}

Como usted puede ver de la puesta en práctica antedicha de GetFolderFlags, cuidamos solamente para notificar Shell de la bandera de FWF_USESEARCHFOLDER. Esto dice a Shell que nuestro namespace utilice la carpeta de la búsqueda para realizar apilar y buscar. Usted podría también especifique otras banderas para modificar el aspecto y el comportamiento de su namespace.

El código modificado para esta muestra se liga abajo. Usted notará que la puesta en práctica de IShellFolderViewCB y de IFolderViewSettings es algo escasa - la mayoría de la vuelta justa E_NOTIMPL de los métodos pues no los estamos utilizando aquí. You can implement these yourself if you see the need to extend your code.
Now that we have notified the Shell to use the Search Folder, we can perform deep searches within our Namespace. When we perform the same search we did previously, we now get the following results:

deep search

This Namespace simply generates 10 virtual items to a default depth of 5. The Search enumerates the contents of the Namespace to that depth. It should also be called out that we had to implement our namespace's ParseDisplayName method in order for our namespace to function in the Search folder.

*Please note that the method described here only works with the default shell view (Defview). It is not supported for custom IShellView implementations.

Building the FolderView SDK Sample

  1. To build the FolderViewImpl sample, be sure to download and install the Windows SDK.
  2. Download the modified FolderView SDK sample
  3. Launch FolderViewImpl.sln in Visual Studio (The solution file is for Visual Studio 2008)
  4. Open the properties for the project
  5. Add a path to the SDK includes to the C/C++ - General page
  6. Add a path to the SDK libs to the Linker – General page
  7. Build

Installing the FolderView SDK Sample

  1. Once you have built the sample, copy the FolderViewImpl.dll and FolderViewImpl.propdesc to the same directory
  2. From an elevated cmd window, regsvr32 FolderViewImpl.dll
  3. Restart explorer
  4. Open explorer to Computer
  5. There should be a list item named “FolderView SDK Sample”

Popularity: 1%


Written by chrdavis. Read more great feeds at is source WEBSITE
no comments.
Read more articles on namespace and otherSoftware and extension and Search and Organize and shell and Coding and Programming and vista and search and API and Windows Vista.

Related articles

No comments

There are still no comments on this article.

Leave your comment...

If you want to leave your comment on this article, simply fill out the next form:




You can use these XHTML tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong> .