2

Ctrl + C コマンド (テキストのコピー) をカスタム ハンドルに送信しようとしているため、フォーカスが得られません。

Spy++ でメッセージを調べました。

<000001> 00540824 S WM_GETDLGCODE wParam:00000011 lParam:0018D218
<000002> 00540824 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS [lResult:00000001]
<000003> 00540824 S WM_GETDLGCODE wParam:00000043 lParam:0018D218
<000004> 00540824 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS [lResult:00000001]
<000005> 00540824 S WM_GETDLGCODE wParam:00000003 lParam:0018D218
<000006> 00540824 R WM_GETDLGCODE fuDlgCode:DLGC_WANTALLKEYS [lResult:00000004]

そこで、この C# を再現しようとしました (WM_GETDLGCODE = 0x0087):

[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, uint Msg, uint wParam, uint lParam);

...

SendMessage(new IntPtr(0x00540824), 0x0087, 0x00000011, 0x0018D218);
SendMessage(new IntPtr(0x00540824), 0x0087, 0x00000043, 0x0018D218);
SendMessage(new IntPtr(0x00540824), 0x0087, 0x00000003, 0x0018D218);

しかし、その結果、Spy++ は次のように言っています。

<000001> 00540824 S WM_GETDLGCODE wParam:00000011 lParam:0018D3C4
<000002> 00540824 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS [lResult:00000001]
<000003> 00540824 S WM_GETDLGCODE wParam:00000043 lParam:0018D3C4
<000004> 00540824 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS [lResult:00000001]
<000005> 00540824 S WM_GETDLGCODE wParam:00000003 lParam:0018D3C4
<000006> 00540824 R WM_GETDLGCODE fuDlgCode:DLGC_WANTALLKEYS [lResult:00000004]

lParam の変更がわかりません。Ctrl + C コマンドは実行されません。マウス クリックによる PostMessage は成功します。何か不足していますか?

4

0 に答える 0