2017-12-18 40 views
0

현재 VSTO Word 추가 기능 프로그램을 개발 중입니다. IME 메시지를 캡처하여 입력 상태를 모니터링해야합니다. 여기서 캡처하려고하는 메시지는 두 가지입니다.글로벌 훅을 사용하여 IME 메시지 캡처

1, IMC_OPENSTATUSWINDOW (후보 막대가 열려있을 때) 2, IMC_CLOSESTATUSWINDOW (후보 막대가 닫힐 때).

아래 코드는 제가 사용하고있는 코드입니다. Vsto Word Add-in 응용 프로그램에서이 코드를 사용하면 IMC_CLOSESTATUSWINDOW 메시지를 캡처 할 수 없지만 기본적으로 모든 응용 프로그램 (winform, wpf 또는 notepad ++ 같은 전역 후크를 사용하기 때문에)에서는 잘 작동합니다. 누구나 아이디어가 있거나 단서를 얻으실 수 있습니다.

int CandidateBarOpen = 0; 
LRESULT CALLBACK HookshurufaProcess(int nCode, WPARAM wParam, LPARAM lParam) 
{ 
    //win10 
    PMSG pmsg = (PMSG)lParam; 
    if (pmsg->message == WM_IME_NOTIFY){ 
    if (pmsg->wParam& IMC_CLOSESTATUSWINDOW){ 
     CandidateBarOpen = 1; 
    } 
    else if (pmsg->wParam& IMC_OPENSTATUSWINDOW){ 
     CandidateBarOpen = 0; 
    } 
    } 
    return TRUE; 
} 
+0

고맙습니다. C++로 편집 해 주셔서 감사합니다. – Yao

답변

0

Microsoft 문서는 (https://msdn.microsoft.com/en-us/library/windows/desktop/dd374139(v=vs.85).aspx)에 대해 명확합니다. WM_IME_NOTIFYIMN_OPENSTATUSWINDOWIMN_CLOSESTATUSWINDOW 매개 변수를 사용하고 IMC_OPENSTATUSWINDOWIMC_CLOSESTATUSWINDOW이 아닌 매개 변수를 사용해야합니다.

마지막 두 명령은 WM_IME_CONTROL과 함께 사용해야합니다.

+0

답장을 보내 주셔서 감사 드리며 IMN_OPENSTATUSWINDOW 및 IMN_CLOSESTATUSWINDOW를 시도했습니다.이 두 메시지는 일부 입력 방법에 의해 트리거 될 수 있지만 최근 개발 된 입력 방법의 경우 입력 방법 개발을위한 새로운 메커니즘이 있기 때문에이 메시지가 포기됩니다. 윈도우 10 이후. 그리고 나는 IMC_OPENSTATUSWINDOW와 IMC_CLOSESTATUSWINDOW가 내가 찾고있는 메시지라고 확신한다. 유일한 문제는이 두 가지를 Vsto Word Add-in에서 캡처 할 수 없다는 것입니다. 다른 응용 프로그램과도 잘 작동합니다. – Yao

관련 문제