Есть ли способ использовать Win32, чтобы зарегистрироваться для уведомлений при создании нового окна. Я пытаюсь сохранить список текущих открытых окон, но сейчас просто опрашиваю список текущих окон, используя EnumWindows()
.
Кто-нибудь делал что-то подобное?
Спасибо
Я не уверен, правильно ли я это делаю, но не могу запустить метод SetWindowsHookEx.
что-нибудь приходит на ум?
вот мой снайпер
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr SetWindowsHookEx(HookType hook, HookProc callback, IntPtr hMod, uint dwThreadId);
[DllImport("user32.dll")]
private static extern int CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);
const int HSHELL_WINDOWCREATED = 1;
private static HookProc winDelegate = ShellHookProcDelegate;
internal static void RegisterWindowCreatedEvent()
{
SetWindowsHookEx(HookType.WH_SHELL, winDelegate, IntPtr.Zero, 0);
}
private static int ShellHookProcDelegate(int code, IntPtr wParam, IntPtr lParam)
{
if (code != HSHELL_WINDOWCREATED)
{
return CallNextHookEx(IntPtr.Zero, code, wParam, lParam);
}
//App specific code here
return CallNextHookEx(IntPtr.Zero, code, wParam, lParam);
}