У меня есть метод, который извлекает дескриптор текущего переднего окна в проводнике Windows. Я хочу, чтобы метод/процедура запускалась, когда это окно закрывается или до закрытия окна. Какие доступные API Windows доступны для этой работы? (если есть) Примеры кода будут оценены. Спасибо
SetWinEventHook()
илиSetWindowsHookEx()
. Вы можете использоватьGetWindowThreadProcessId()
, чтобы получить поток окна и идентификаторы процессов для передачи им. - person Remy Lebeau   schedule 05.08.2015SetWindowsHookEx()
может установить перехватчикWH_CBT
для отслеживания событийHCBT_SYSCOMMAND
/SC_CLOSE
, но для перехвата другого процесса требуется DLL.SetWinEventHook()
не требует DLL, но не имеет события, специально предназначенного для закрытия окна, поэтому, возможно, отслеживайте событияEVENT_OBJECT_DESTROY
илиEVENT_OBJECT_STATECHANGE
. - person Remy Lebeau   schedule 05.08.2015RegisterShellHookWindow()
документация гласит: Эта функция не предназначена для общего использования. Он может быть изменен или недоступен в последующих версиях Windows. Кроме того, в нем нет события закрытия окна, только его уничтожение. То же, чтоSetWinEventHook()
. Не все окна уничтожаются, когда они закрыты, поэтому я думаю, чтоSetWindowsHookEx()
, вероятно, лучший выбор для ОП. - person Remy Lebeau   schedule 05.08.2015SetWindowsHookEx()
может установить хукWH_CALLWNDPROC/RET
для отслеживанияWM_CLOSE
сообщений. - person Remy Lebeau   schedule 05.08.2015