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 は成功します。何か不足していますか?