Я пытаюсь зафиксировать событие изменения окна активного окна. Допустим, если пользователь работает над VS и он переключается на IE, я хочу записать это событие активного изменения окна. Я искал в интернете и нашел много примеров, но, кажется, ничего не работает для меня.
Это код, который я написал до сих пор, я не уверен, что не так в этом. Я не могу захватить требуемое событие через это
class Program
{
delegate void WinEventDelegate(IntPtr hWinEventHook, uint eventType, IntPtr hwnd, int idObject, int idChild, uint dwEventThread, uint dwmsEventTime);
[DllImport("user32.dll")]
static extern IntPtr SetWinEventHook(uint eventMin, uint eventMax, IntPtr hmodWinEventProc, WinEventDelegate lpfnWinEventProc, uint idProcess, uint idThread, uint dwFlags);
private const uint WINEVENT_OUTOFCONTEXT = 0;
private const uint EVENT_SYSTEM_FOREGROUND = 3;
static void Main(string[] args)
{
WinEventDelegate dele = new WinEventDelegate(WinEventProc);
IntPtr m_hhook = SetWinEventHook(EVENT_SYSTEM_FOREGROUND, EVENT_SYSTEM_FOREGROUND, IntPtr.Zero, dele, 0, 0, WINEVENT_OUTOFCONTEXT);
Console.ReadKey();
}
static void WinEventProc(IntPtr hWinEventHook, uint eventType, IntPtr hwnd, int idObject, int idChild, uint dwEventThread, uint dwmsEventTime)
{
Console.WriteLine("Something");
}
}
WinEventProc
никогда не звонят, кто-нибудь может определить, что я делаю неправильно программно или концептуально? Я использую Windows 7