C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[37156] 메시지훅인데여 왜 처음엔 되는되 나중에는 안될까여???
금영이 [] 950 읽음    2004-09-07 19:05
메시지 훅을 이용하여 키보드키값을 버리는 예제를 만들어 봤습니다.
메인에서 버튼을 누르면 키 입력값을 전부 버려 키가 않먹히게 했구여
다시 버튼을 누르면 키값이 입력되게 했습니다.
그런데 처음에는 되는데 해제를 하고 다시 잠그려 하면 되질 않네여
왜그럴까여???? ㅠㅠ
아무리봐두 모르겠습니다.
조언좀 부탁드립니다.
혹시 훅 해제할때 시간이 좀 걸리나여???
제가 훅 해제하구 바루 또 훅 설정해서 그런것 같기도한데...

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;
}
이런식으로 했습니다. 고수님들 도와주세여 ㅠㅠ

+ -

관련 글 리스트
37156 메시지훅인데여 왜 처음엔 되는되 나중에는 안될까여??? 금영이 950 2004/09/07
37183     Re:메시지훅인데여 왜 처음엔 되는되 나중에는 안될까여??? 하느리 999 2004/09/09
37185         Re:Re:메시지훅인데여 왜 처음엔 되는되 나중에는 안될까여??? 하느리 1067 2004/09/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.