2017-12-18 150 views
0

現在、VSTO Wordアドインプログラムを開発中です。 IMEメッセージをキャプチャして入力ステータスを監視する必要があります。ここでキャプチャしようとしている2つのメッセージがあります。グローバルフックを使用してIMEメッセージを取得する

1、IMC_OPENSTATUSWINDOW(候補バーが開いているとき)2、IMC_CLOSESTATUSWINDOW(候補バーが閉じているとき)。

以下は私が使用しているコードです。ただし、Vsto Wordアドインアプリケーションでこのコードを使用すると、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

マイクロソフトのドキュメントはこれについて明確です(https://msdn.microsoft.com/en-us/library/windows/desktop/dd374139(v=vs.85).aspx)。 WM_IME_NOTIFYIMN_OPENSTATUSWINDOWIMN_CLOSESTATUSWINDOWパラメータは、IMC_OPENSTATUSWINDOWIMC_CLOSESTATUSWINDOWではなく使用してください。

最後の2つのコマンドは、WM_IME_CONTROLと一緒に使用してください。

+0

IMN_OPENSTATUSWINDOWとIMN_CLOSESTATUSWINDOWを試してみましたが、これらの2つのメッセージはいくつかの入力メソッドによってトリガされる可能性がありますが、近年開発された入力メソッドでは、入力メソッドを開発するための新しいメカニズムがあるので、私は、IMC_OPENSTATUSWINDOWとIMC_CLOSESTATUSWINDOWが私が探しているメッセージだと確信しています。唯一の問題は、この2つをVsto Word Add-inでキャプチャすることができないことです。他のアプリでうまく動作します。 – Yao

関連する問題