O
fehler gelöst
an windowHookDll lags nicht, der wert bleibt auch die ganze zeit über der gleiche.
es lag wie ich vermutet hab, and er proc, und zwar subclassed die immer das aktive fenster, und ich hab versucht den hook zu killen, als noch ein paar fenster subclassed waren
falls es immer noch interessiert, hier die funktion, stilistisch bin ich aber nicht sehr stolz drauf^^
//messageTarget ist eine globale variable mit dem HWND des Zielfensters, welches die nachrichten erhalten soll
LRESULT CALLBACK hookProc(int nCode,WPARAM wParam,LPARAM lParam){
//das aktuelle gesubclasste window
static HWND subclassedWindow=0;
//die nachricht
CWPRETSTRUCT* message=(CWPRETSTRUCT*)lParam;
//ist der hook deaktiviert, aussteigen
if(!messageTarget){
if(subclassedWindow){
removeSubclass(subclassedWindow);
}
return CallNextHookEx (hook, nCode, wParam, lParam);
}
//das zielfenster darf nicht gehookt werden
if(message->hwnd==messageTarget){
return CallNextHookEx (hook, nCode, wParam, lParam);
}
//sonst nachricht testen
if(nCode==HC_ACTION&&message->message==WM_ACTIVATE){
if(LOWORD(message->wParam)==WA_CLICKACTIVE||LOWORD(message->wParam)==WA_ACTIVE){
//erst aufräumen
if(subclassedWindow){
removeSubclass(subclassedWindow);
}
subclassedWindow=message->hwnd;
subclass(subclassedWindow,messageTarget);
}
else
{
//fenster wird inaktiv:subclass entfernen
removeSubclass(subclassedWindow);
subclassedWindow=0;
}
}
return CallNextHookEx (hook, nCode, wParam, lParam);
}