Подтвердить что ты не робот

Вкладка "Пользовательский поиск" в меню "Пуск" в Windows с помощью С#

Мне интересно узнать, как я могу сделать то же самое, что и приведенная ниже ссылка: Калькулятор начального меню

Я хочу знать, как создать пользовательскую вкладку в меню "Пуск", а затем обработать ее с помощью приложения WPF. Он должен быть включен только до тех пор, пока мое приложение не будет запущено. (Точно так же, как Калькулятор делает)

Я прочитал что-то о API-интерфейсе Windows API, и я загрузил его, но я не знаю, как его использовать. Я просмотрел его, но ничего не нашел. (Если вы знаете, как я могу это сделать, используя код Windows API Code Pack, напишите пример, объясняющий, как это сделать на С#)

4b9b3361

Ответ 1

  • В главном меню "Start Menu Calculator.exe" устанавливается крючок Windows (используя SetWindowsHookEx) в explorer.exe. Крюк реализован, как обычно, в SBLib.dll, который затем вводится в пространство памяти Windows Explorer.

  • Этот крючок ищет ручки окна, принадлежащие окну поиска. См. Обсуждение здесь: Как мне получить "дескриптор" в текстовом поле Windows Search? и, возможно, подклассы окна окна поиска (если вы внезапно уничтожаете "Start Menu Calculator.exe", он также вызывает Windows Explorer), который подтверждает это)

  • Затем он реагирует на нажатия клавиш, и я полагаю, что он отбивает окно результатов. В иерархиях Windows я думаю, что это окно с именем "Desktop Search Open View", вы можете получить его с помощью SPY ++ в "Меню" Пуск ", кроме окон, упомянутых в форуме msdn выше.

Итак, никакого хорошего API за этим приятным приложением. Массивные хаки вместо: -)

Я думаю, однако, что некоторый уровень интеграции возможен, используя документированное поведение, с полем поиска. Я еще не вырыл, но есть понятие федеративного поиска в Windows (Windows 7 Federated Search). Я не вижу, сможет ли это реагировать мгновенно на то, что пользователь вводит, хотя...

В качестве побочного примечания, если вы также ищете способ запуска javascript-кода из С#, здесь возникает вопрос о SO, который говорит все: разобрать и выполнить JS на С#

Ответ 2

При создании Калькулятора начального меню я сначала попытался использовать код объединенного поиска и Managed (.NET), однако вы не можете интегрироваться в меню "Пуск" , а только поиск в оболочке (для поиска по веб-сервису, который позволяет вам возвращать пользовательские результаты на основе в строке поиска). Проблема заключается в том, что федеративный поиск структурирован таким образом, что все данные поиска предварительно проиндексированы, поэтому для работы калькулятора я должен был предварительно проиндексировать все возможные вычисления! Причина, по которой все это работает, заключается в том, чтобы всегда щелкнуть меню "Пуск" и быстро реагировать (вы не хотите, чтобы вызов веб-службы каждый раз, когда вы нажимаете кнопку запуска в оболочке).

Я закончил тем, что нанял кого-то, чтобы написать собственное приложение для Windows, которое помещает элемент управления IE в область поиска в меню "Пуск" и передает найденный текст в исходный код. Все визуальные материалы просто css сделаны, чтобы выглядеть как рендеринг исходного меню и вычисления, обрабатываемые в javascript.

Итак, да, немного взломать, но, похоже, он работает, и я до сих пор не слышал о каких-либо проблемах.