Я использовал код, приведенный в следующей статье CodeProject в прошлом, с успехом, но, похоже, частично работает на Vista/7 (я предполагаю, из-за UAC) , Он работает для текущей темы, но не поднимает активность системы. Я попытался добавить requireAdministrator в манифесты и подписать как неуправляемые, так и управляемые сборки, и это, похоже, не помогает.System Wide Shell Hook из .NET с использованием неуправляемой DLL
Using Window Messages to Implement Global System Hooks in C#
Моей главной цель состоит в том, чтобы использовать SetWindowsHookEx, чтобы поймать сообщения HSHELL_WINDOWCREATED и HSHELL_WINDOWDESTROYED в неуправляемой сборке, и уведомить об этом C# приложения таким образом, что он может использовать эту информацию в режиме реального времени. Это в основном просто нужно знать, когда окно создается или уничтожается в системе.
Я также нашел пример приложения, который является чистым C/C++, который отлично работает в Vista/7, но я действительно не хочу писать все приложение на C/C++, как я предпочитаю C#.
System Wide Hook Example that Works
Каждый знает, как исправить код в первой статье CodeProject так, что он работает на Vista/7, а? Или есть другие примеры способов, которыми я могу это сделать, не создавая таймеров и подобных хаков в C#?
Спасибо, Марк
я не знал о существовании RegisterShellHookWindow в User32 ... что делает вещи намного проще. Спасибо за то, что поделился этим! В конце концов, я узнал что-то новое. :) Я собираюсь сыграть с ним немного сегодня, и если я смогу заставить его работать, я дам вам ответ. Еще раз спасибо. – Lusid