|
메시지 훅을 이용하여 키보드키값을 버리는 예제를 만들어 봤습니다.
메인에서 버튼을 누르면 키 입력값을 전부 버려 키가 않먹히게 했구여
다시 버튼을 누르면 키값이 입력되게 했습니다.
그런데 처음에는 되는데 해제를 하고 다시 잠그려 하면 되질 않네여
왜그럴까여???? ㅠㅠ
아무리봐두 모르겠습니다.
조언좀 부탁드립니다.
혹시 훅 해제할때 시간이 좀 걸리나여???
제가 훅 해제하구 바루 또 훅 설정해서 그런것 같기도한데...
main함수에서는여
잠금버튼클릭시 InstallHook();
풀기버튼클릭시UninstallHook();
이렇게 했구여
헤더파일에는
extern "C" __declspec(dllimport) void InstallHook(HWND hWnd);
extern "C" __declspec(dllimport) void UninstallHook();
dll파일에는
#include <windows.h>
#pragma data_seg(".kbdata")
HINSTANCE hModule = NULL;
HHOOK hKeyHook = NULL;
#pragma data_seg()
#pragma comment (linker, "/SECTION:.kbdata,RWS")
LRESULT CALLBACK KeyHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode >= 0)
{
return true;
}
return CallNextHookEx(hKeyHook, nCode,wParam,lParam);
}
extern "C" __declspec(dllexport) void InstallHook()
{
hKeyHook = SetWindowsHookEx(WH_KEYBOARD, KeyHookProc, hModule, NULL);
}
extern "C" __declspec(dllexport) void UninstallHook()
{
UnhookWindowsHookEx(hKeyHook);
}
BOOL WINAPI DllEntryPoint(HINSTANCE hInst, DWORD fdwReason, LPVOID lpRes)// DllMain(HINSTANCE hInst, DWORD fdwReason, LPVOID lpRes)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
hModule=hInst;
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
이런식으로 했습니다. 고수님들 도와주세여 ㅠㅠ
|