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
[63167] 윈도우 창 포커스 유지 방법 하는 ... 키보드후킹할시
문현민 [qodwlql] 2547 읽음    2010-12-06 16:46
if(wParam == WM_LBUTTONDOWN)//왼쪽 클릭된 위치가 키보드의 화면이면 사용자 메세지를 키보드프로그램으로 보내고 아니면 그냥 통과
        {
         
            if(((LPMOUSEHOOKSTRUCT)lParam)->hwnd == hwndMain && ((LPMOUSEHOOKSTRUCT)lParam)->hwnd) // 키보드윈도우의 핸들과 같으면
            {   
                if(GetForegroundWindow() != hwndPrevForeground && hwndPrevFocused)
                {
                    SetForegroundWindow(hwndPrevForeground);
                    if(GetFocus() != hwndPrevFocused && hwndPrevFocused)
                        SetFocus(hwndPrevForeground);
             
                }

                PostMessage(hwndMain, WM_KEYBOARDCLICKED, wParam,lParam);//(WPARAM)lParam, (LPARAM)hwndPrevForeground);
                // PostMessage(hMainMain, WM_KEYBOARDCLICKED, 0,0);
                // PostMessage(hwndPrevForeground, WM_KEYBOARDCLICKED, (WPARAM)lParam, (LPARAM)hwndPrevForeground);
                //Sleep(1);
                return true;
            }
            else if(((LPMOUSEHOOKSTRUCT)lParam)->hwnd)
            {
            }
        }
        else if(wParam == WM_LBUTTONUP)
        {
           
        if(((LPMOUSEHOOKSTRUCT)lParam)->hwnd != hwndMain && ((LPMOUSEHOOKSTRUCT)lParam)->hwnd)
            {
                hwndTempForeground = GetForegroundWindow();
                hwndTempFocused = GetFocus();

                if(!hwndTempForeground || hwndTempForeground == hwndPrevForeground)
                    hwndTempForeground = GetForegroundWindow();
                if(!hwndTempFocused || hwndTempFocused == hwndPrevFocused)
                    hwndTempFocused = GetFocus();

                hwndPrevFocused = hwndTempFocused;
                hwndPrevForeground = hwndTempForeground;
            }
        }
    }
    return CallNextHookEx(myhHookMouse, nCode, wParam, lParam);
}

소스는 가상키보드 DLL전역 후킹입니다.

만약 메모장을 띄우고 프로그램을 실행시켜서 가상키보드를 클릭했을때

메모장에 포커스가 유지되게 하려고합니다.

마우스 클릭하면 포커스가 가상키보드쪽으로 왓다가 메모장으로 다시 포커스가 잡힙니다.

혹여 메모장에 포커스를 계속 유지되게 할수있는 방법 아시나요

+ -

관련 글 리스트
63167 윈도우 창 포커스 유지 방법 하는 ... 키보드후킹할시 문현민 2547 2010/12/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.