2012-06-14 11 views
23

Estoy interesado en saber cómo puedo hacer lo mismo que el apllication se enumeran a continuación hace: Start Menu Calculatorpestaña de búsqueda personalizada en la búsqueda del menú de inicio de Windows con C#

Quiero saber cómo puedo crear una ficha personalizada en Inicie la búsqueda en el menú y luego maneje con mi aplicación WPF. Solo debe habilitarse hasta que se ejecute mi aplicación. (Al igual que The calculator does)

He leído algo sobre windows API Code Pack y lo descargué pero no sé cómo puedo usarlo. He buscado a través de él, pero no he encontrado nada. (Si usted sabe cómo podría hacer esto utilizando con el código de paquete de API de Windows, por favor escriba un ejemplo que explica cómo hacerlo en C#)

+7

interesante. No sabía que podía escribir programas que interactuaban con el menú de inicio. –

+2

Como parte de la descarga (haciendo clic en su enlace y luego en la pestaña de descargas), hay documentación y ejemplos de acuerdo con la descarga que se detalla. Es posible que desee ver la ubicación de instalación de una carpeta de documentos o ejemplos. –

+0

Brad: Revisé ejemplos pero no encontré nada ... ¿Puede decir cuál de los ejemplos quiere decir? – mahdavipanah

Respuesta

4
  • La principal exe "Start Menu Calculator.exe" instala un gancho de Windows (usando SetWindowsHookEx) en explorer.exe. El gancho se implementa como de costumbre en SBLib.dll que luego se inyecta en el espacio de memoria del Explorador de Windows.

  • Este gancho busca los identificadores de ventana que pertenecen al cuadro de búsqueda. Ver una discusión en torno a esta aquí: How do I get a "handle" on the Windows Search textbox? y clases probablemente sub las ventanas cuadro de búsqueda (si matas el proceso de "Menú Inicio calculator.exe" bruscamente, se bloquea el Explorador de Windows, que también ... un poco lo confirma)

  • A continuación, reacciona a las pulsaciones de teclas, y supongo que mata la ventana de resultados. En las jerarquías de Windows, creo que es una ventana llamada "Búsqueda abierta de búsqueda de escritorio", puede acceder a ella con SPY ++ en "Menú de inicio", aparte de las ventanas mencionadas en el foro msdn anterior.

Por lo tanto, no hay una buena API detrás de esta buena aplicación. Massive hacks en su lugar :-)

Creo que, sin embargo, es posible algún nivel de integración, utilizando el comportamiento documentado, con el cuadro de búsqueda. No he profundizado más, pero existe la noción de búsqueda federada en Windows (Windows 7 Federated Search). No veo si esto sería capaz de reaccionar instantáneamente a lo que escribe el usuario ...

Como nota al margen, si también está buscando una forma de ejecutar el código javascript desde C#, existe una pregunta aquí en SO que lo dice todo: parse and execute JS by C#

2

Al hacer la calculadora del menú de inicio intenté inicialmente utilizar la búsqueda federada y el código administrado (.NET); sin embargo, no puede integrar en el menú de inicio, solo la búsqueda de shell (para la búsqueda basada en el servicio web que le permite devolver resultados personalizados en función de una cadena de búsqueda). El problema es que la búsqueda federada está estructurada de modo que todos los datos de búsqueda están indexados previamente, así que para que la calculadora funcione tendría que haber indexado todos los cálculos posibles. La razón por la que todo funciona de esta manera es asegurarse de que al hacer clic en el menú de inicio siempre sea rápido y receptivo (no desea una llamada al servicio web cada vez que presiona iniciar en el shell).

Terminé contratando a alguien para escribir una aplicación de Windows nativa que coloca un control de IE en el área de búsqueda del menú Inicio y pasa el texto buscado con la fuente. Todo lo visual se acaba de hacer para que parezca la representación del menú de inicio y los cálculos manejados en javascript.

Así que sí, es un truco pero parece que funciona y hasta ahora no he tenido ni oído hablar de ningún problema.

Cuestiones relacionadas