일단 98에서는 해결을 본 것 같습니다.
일반 키보드이벤트는 WH_KEYBOARD 후킹을 이용하여서 막고, 시스템 키보드는,
bool old_value;
SystemParametersInfo (SPI_SCREENSAVERRUNNING, true, &old_value, 0);//키 동작을 끈다.
SystemParametersInfo (SPI_SCREENSAVERRUNNING, false, &old_value, 0);//키 동작을 켠다.
로 처리하였습니다.
NT계열에서는 시스템 키보드는 low level keyboard를 후킹(WH_KEYBOARD_LL)를 이용하여 처리하였습니다. 마지막 남은 ctrl+alt+del 키가 문제인데, GINA DLL 방식으로 처리하면 된다는데, 이는 그냥 미루어 두었습니다.
혹, 저와 같은 것으로 고민하시는 분이 계시면 도움이 되었으면 하는 생각에 몇자 적었습니다.
하느리 님이 쓰신 글 :
: 아래 질문(
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=21324 )에 이어서 계속 질문합니다.
:
: 일단, CBT 후킹을 이용하여 시작메뉴키나 시스템팝업메뉴가 발생하지 않도록 하는 것은 성공을 하였습니다. CBT후킹은 아래에 소스를 올립니다. 그런데, alt+tab, alt+ctrl+del에 의한 이벤트는 막을 수가 없군요.
: 아시는 분은 제발 좀 알려주세요. ㅠ_ㅜ
:
:
:
: dll소스 -----------------------------------------------
: #ifdef __STATIC_DLL__
: LRESULT CALLBACK CBTLockProc (int nCode, WPARAM wParam, PARAM lParam)
: #else
: extern "C" __export __stdcall LRESULT CBTLockProc (int nCode, WPARAM wParam, LPARAM lParam)
: #endif
: {
: if ( gHookCBTLock.h_lock_CBT == 0 ) Read_MMF_CBTLock (&gHookCBTLock);
: if ( nCode == HCBT_SYSCOMMAND )
: return (long) true; // 다른 프로세스가 이 메세지 사용 못하도록 함
:
: return CallNextHookEx (gHookCBTLock.h_lock_CBT, nCode, wParam, lParam);
: }
: //---------------------------------------------------------------------------
: