Jets dany hook obsługujący klawiaturę
//---------------------------------------------------------------------------
#include <vcl.h>
#include <windows.h>
#pragma hdrstop
//---------------------------------------------------------------------------
// funkcje eksportowane
extern "C" __declspec(dllexport)bool InstallKeyboardHook();
extern "C" __declspec(dllexport)bool RemoveKeyboardHook();
// deklaracja procedury zwrotnej hooka (ang. callback hook procedure)
LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam);
// zmienne globalne
HHOOK HookHandle;
HINSTANCE DllInstance;
bool IsInRect = false;
//---------------------------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
DllInstance = hinst;
return 1;
}
//---------------------------------------------------------------------------
bool InstallKeyboardHook()
{
HookHandle = SetWindowsHookEx(WH_KEYBOARD,
reinterpret_cast<HOOKPROC>(KeyboardProc), DllInstance, 0);
if (HookHandle == NULL)
return false;
else
return true;
}
//---------------------------------------------------------------------------
bool RemoveKeyboardHook()
{
if (UnhookWindowsHookEx(HookHandle) == 0)
return false;
else
return true;
}
//---------------------------------------------------------------------------
LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
if (code < 0)
return CallNextHookEx(HookHandle, code, wParam, lParam);
if(wParam)
ShowMessage(char(wParam));
// wywołanie nastepnego hooka w lancuchu
return CallNextHookEx(HookHandle, code, wParam, lParam);
}
//---------------------------------------------------------------------------
I zamiast jednego okienka z klawiszem wyświetlają mi się 2.
Co zrobić aby pojawiała się tylko jedna wiadomość ?