Potrzebuję pomocy,
czy ktoś może mi wyjaśnić czemu ten kod wykonywany jest dwukrotnie:
LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
if (code < 0)
{
return CallNextHookEx(HookHandle,code,wParam,lParam);
}
if (wParam == VK_INSERT)
{
TCanvas &Pulpit = *new TCanvas();
Graphics::TBitmap *Bmp = new Graphics::TBitmap;
Pulpit.Handle = GetDC(0);
Bmp->Width = Screen->Width;
Bmp->Height = Screen->Height;
Bmp->Canvas->CopyRect(Rect(0,0,Screen->Width,Screen->Height), &Pulpit, Rect(0,0,Screen->Width,Screen->Height));
Clipboard()->Assign(Bmp);
ReleaseDC(0, Pulpit.Handle);
delete Bmp;
ShowWindow(hHandle, SW_SHOW);
Sleep(200);
if (hHandle)
{
ShowMessage(S2);
//SendMessage(hHandle, MYMESSAGE, 0, 0);
}
else
{
ShowMessage("niema");
}
}
// wywołanie nastepnego hooka w lancuchu
return CallNextHookEx(HookHandle, code, wParam, lParam);
}
Dokładnie chodzi mi o to, że po naciśnięciu INSERT pojawia mi się dwukrotnie komunikat z ShowMessage.
Drugie pytanie
Uhwyt okna hHandle jest ustawiany przy pomocy funkcji FindWindow podczas wywołania procedury WINAPI DllEntryPoint
czemu w kodzie podanym powyżej gdy szukane okno jest widoczne (niekoniecznie aktywne) funkcja if(hHandle) zwraca true, a gdy jest ono zminimalizowane zwraca false, czy da się to jakoś ominąć - zależałoby mi żeby okno zostało przywrócone i zareagowało na komunikat MYMESSAGE
Dziękuję za wszelką pomoc
Daniel