0

別のプログラムのテキストボックスにテキストを貼り付けようとすると、テキストが挿入されますが、プログラムはそれを認識しません。

 [DllImport("user32.dll", CharSet = CharSet.Auto)]
 static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
 const uint WM_SETTEXT = 0x000C;

 IntPtr text = Marshal.StringToCoTaskMemUni("100");
 IntPtr thisWindow = FindWindow(null, "AnotherWindow");
 IntPtr handle = FindWindowEx(thisWindow, IntPtr.Zero, "AnotherTextBox", null);
 SendMessage(handle, WM_SETTEXT, IntPtr.Zero, text);
 Marshal.FreeCoTaskMem(text);

たぶん、テキストボックスが更新されたというメッセージを親に送信する必要がありますか?このような:

 //Wrong code, because I do not know how correctly send a message
 SendMessage(handle, WM_COMMAND, EM_SETMODIFY, handle);
4

3 に答える 3

0

あなたは次のようなことをしようとしています:

PostMessage(GetParent(handle), WM_COMMAND, MAKEWPARAM(GetWindowLong(handle, GWL_ID), EN_CHANGE), (LPARAM)handle);
于 2013-02-26T20:15:10.887 に答える