talex |
опубликован 06-08-2001 12:37 MSK
SOS, SOS, SOS,.......... Как получить активный thread of application if HWND of window is available. Это я для SetWindowsHookEx хочу. Хоокнуть keyboard events оf определенной, работающей программы.Всем кто ответит, большой THX, заранее.
|
sps
|
опубликован 15-08-2001 18:35 MSK
Не думаю, что это верный путь, но... Во-первых, посмотри в MSDN: INFO: Thread Handles and Thread IDs ID: Q127992 Во-вторых, попробуй это:#include <windows.h> #include <iostream.h> #include <conio.h> void main() { HWND hWnd = (HWND)0x0445038C; //твой HWND!!! DWORD dwProcessID = 0, dwThreadID = 0; dwThreadID = ::GetWindowThreadProcessId(hWnd, &dwProcessID); cout << dwThreadID << endl << dwProcessID << endl; if (::DebugActiveProcess(dwProcessID)) { DEBUG_EVENT debugEvent = {0}; if (::WaitForDebugEvent(&debugEvent, INFINITE)) { ::TerminateThread(debugEvent.u.CreateThread.hThread, 0); ::TerminateProcess(debugEvent.u.CreateProcessInfo.hProcess, 0); } } else cout << ::GetLastError() << endl; getch(); } Я это попробовал. Работает. Делал я это при помощи MS Spy++ (этим приложением я находил HANDLE окна), MS Calculator (это приложение я как раз и закрывал при помощи моего консольного) и мое консольное, которое ты видишь выше. |