Microsoft MVP성태의 닷넷 이야기
대화상자에서 alt + tab 후킹 작업 [링크 복사], [링크+제목 복사],
조회: 11635
글쓴 사람
김인태 (kitvory at hanmail.net)
홈페이지
첨부 파일
 

안녕하세요.

오랜만에 들어와서 질문 드립니다.

제목과 같이 키보드 후킹을 작업하고 있습니다.
키보드 후킹 예제는 많이 있는데 실제 작업은 조금 어렵네요. (윈도우 프로그래밍 보다는 java로 작업하는게 훨씬 많다보니...)

작업 프로젝트는 다음과 같습니다.
서버에서 mstsc 등을 이용해서 대상 윈도우 접속을 시도 합니다.
서버 접속 정보를 이용해서 윈도우 접속 시 계정 정보를 입력하는 대화 상자를 사용자에게 출력합니다.
사용자가 아이디/패스워드를 입력하면 메시지 후킹을 진행합니다.

여기에서 계정 정보가 확인되면 윈도우 사용을 허용하고 그렇지 않으면 접속을 막아야 되는데,
계정 정보 확인 시 alt+tab을 통해 계정 확인 대화 상자를 건너뛰고 다른 프로그램을 실행할 수 있습니다.
그래서 alt+tab(win+tab)을 막아야 되는데 alt키 까지는 메시지 확인했는데 tab이 같이 눌려지면 경고창을 띄우고자 합니다.
경고창 후 alt+tab을 비활성화 해서 다른 프로그램을 넘어가면 안되도록 작업하는게 목적입니다.

알고리즘 상으로는 다음과 같습니다.

키보드가 눌려 있으면 키 메시지를 통해 시스템 키가 눌렸는지 확인. if (raw->data.keyboard.Message == WM_SYSKEYDOWN && 0x8000)
그리고 tab 키가 눌려 있는지 확인 if (raw->data.keyboard.VKey == VK_TAB && 0x8000) {
시스템 키 + tab 이면 경고창을 띄우고 무효화... AfxMessage(----);
무효화를 위한 코드가 어떤 것이 들어가야 할까요?

요약하면 alt + tab 을 인지하는 방법과,
무효화를 위한 코드는 어떻게 처리하는지 입니다.

도움 부탁 드립니다.








[최초 등록일: ]
[최종 수정일: 9/8/2022]


비밀번호

댓글 작성자
 



2022-09-08 03시35분
Alt + Tab 키는 사용자 응용 프로그램의 단축키가 아니고 윈도우 시스템의 단축키이기 때문에 개별 윈도우에서의 메시지로 처리할 수 있는 문제가 아닙니다.

아래의 github repo를 보면,

shanselman/babysmash
; https://github.com/shanselman/babysmash

"Baby Smash will lock out the Windows Key, as well as Ctrl-Esc and Alt-Tab..."라고 설명하는데, SetWindowsHookEx을 이용한 전역 후킹을 이용해 처리하는 소스코드가 실려 있으니 참고하세요.
정성태

... 76  77  [78]  79  80  81  82  83  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
554sky1/23/200715132<급질문> interop 를 사용함에 있어 [2]
557sky1/26/200712690    답변글 [답변]: <급질문> interop 를 사용함에 있어
553deve...1/15/200714652오류가 나는데 도저히 모르겠네여...좀 봐주세요... [3]파일 다운로드1
551sky1/23/200713677[급질문] vb6으로 만들어진 dll 를
552정성태1/10/200715395    답변글 [답변]: [급질문] vb6으로 만들어진 dll 를 [1]
546오택성1/2/200714136스마트클라이언트 DebugIEHost.log 좀 봐 주세요. [9]
545심현철12/28/200614301ClickOnce를 이용한 SmartClient의 설치 자동화 방법에 대해서 문의를 드립니다. [1]
53912/26/200613431COM+ 자동등록 하니 속도가 영...?
540정성태12/26/200615411    답변글 [답변]: COM+ 자동등록 하니 속도가 영...? [1]
538오택성12/26/200614630스마트클라이언트에서 그리드 컴포넌트 사용시 화면에 그리드가 올라오지 않네요~ [1]
537김현12/23/200615125스마트클라이언트 CAS배포문제와, ASP.NET에서 SmartClient로 DB인자 넘기는 문제 입니다. [3]
536오택성12/23/200612638스마트 클라이언트에서 A폼에서 B폼에 있는 그리드에 데이타를 담을려고 하는데요... [2]파일 다운로드1
541달봉이12/27/200615264    답변글 [답변]: 스마트 클라이언트에서 A폼에서 B폼에 있는 그리드에 데이타를 담을려고 하는데요...
535김태곤12/22/200618997ActiveX DLL( VB 6.0 )와 관련해 질문드립니다. [1]파일 다운로드1
534심현철12/21/200614571IE Embedded SmartClient관련 질문입니다. [1]
542달봉이12/27/200614850    답변글 [답변]: IE Embedded SmartClient관련 질문입니다.
543심현철12/27/200613736        답변글 [답변]: [답변]: IE Embedded SmartClient관련 질문입니다.
544달봉이12/28/200613454            답변글 [답변]: [답변]: [답변]: IE Embedded SmartClient관련 질문입니다.
53112/20/200615303업로드 시에 로컬의 파일을 페이지 submit 시에 같이 태워보낼 수 있을 까요?
532정성태12/20/200612844    답변글 [답변]: 업로드 시에 로컬의 파일을 페이지 submit 시에 같이 태워보낼 수 있을 까요? [1]
527심현철12/19/200615488VC++과 C# COM의 interop에서 디버깅을 하는 방법에 대해서 물어봅니다.
529정성태12/19/200616778    답변글 [답변]: VC++과 C# COM의 interop에서 디버깅을 하는 방법에 대해서 물어봅니다. [1]
526독불장군12/17/200613102아랫글 과련... [1]
525독불장군12/15/200613278일주일 공부하고 있는데 잘 안되네요 도와 주세요 스마트 클라이언트파일 다운로드1
528정성태12/19/200613554    답변글 [답변]: 일주일 공부하고 있는데 잘 안되네요 도와 주세요 스마트 클라이언트
530독불장군12/20/200613033        답변글 [답변]: [답변]: 답변에 감사 드립니다.
... 76  77  [78]  79  80  81  82  83  84  85  86  87  88  89  90  ...