Ранее я задавал вопрос о чем-то похожем, но я полагаю, что в этот раз обстоятельства другие.
У меня есть DLL, в которой есть стандартные функции hook, unhook и msgProc.Я загружаю эту DLL в свое основное приложение, а затем вызываю «hook», то есть ниже:
HOOKDLL_API BOOL setHook( HWND hWnd, DWORD threadID )
{
if( hWndServer != NULL )
return FALSE;
hook = SetWindowsHookEx( WH_GETMESSAGE, (HOOKPROC)msghook, hInstance, threadID );
if( hook != NULL )
{
hWndServer = hWnd;
ofstream logFile;
logFile.open( "LOG.txt" );
logFile << "Hooked for: " << hWndServer << endl;
logFile.close();
return TRUE;
}
return FALSE;
}
Проблема в том, что если я сделаю ее глобальной, с threadID = 0, то только msgHook захватываетсообщения, полученные окном процесса, который загрузил библиотеку и ничего больше, даже если предполагается, что это глобальный хук.
Если я предоставлю threadID какого-либо другого окна, я не получу сообщениявообще.
В чем может быть причина этого?