他のプログラムでは、プログラムで編集ボックスにテキストを設定したいです。これはゲームアプリケーションで、directXを使用していますが、ウィンドウモードで実行します。私はこれをやっている:SendMessageを使用して、別のプロセスに属する編集コントロールにテキストを入力する
HWND hWnd = FindWindow(NULL,"Game");
HWND edit = FindWindowEx(hWnd, NULL, "Edit", NULL);
SendMessage(edit, WM_CHAR, (TCHAR) 'H', 0);
SendMessage(edit, WM_CHAR, (TCHAR) 'E', 0);
SendMessage(edit, WM_CHAR, (TCHAR) 'L', 0);
SendMessage(edit, WM_CHAR, (TCHAR) 'L', 0);
SendMessage(edit, WM_CHAR, (TCHAR) 'O', 0);
これは私のために働いていない....しかし、いくつかの方法一度働いた。私は何かを誤解していると思うかもしれませんが、おそらくコントロールの編集に焦点を当てて、カーソルをセットしてテキストを貼り付けてフォーカスを無効にする必要があります...私は本当に多くを知らないのです...時間と神経を保存して、 ....
作業私もこれを試みたが、動作していない:
SendMessage(hwnd, WM_SETTEXT, NULL, (LPARAM)"text");
HWNDは正しいのですが、テキストは更新されません...それは正しいハンドルに送るが、更新されません....私は何とかフォーカスや更新をする必要があると思う、それが成功した更新が、私は何が起こったか分からなかった...コードは一度働いたが、それ以上の作業...なぜ一度働いたの?
? –
@デビッドHeffernanの 私はこれを試してみましたが、動作していない: のSendMessage(HWND、WM_SETTEXT、NULL、(LPARAM) "のMyText"); 私はテキストを設定する前に、フォーカスやその他のことを設定する必要があると思う...しかし、どのように? – Jigberto
FindWindow呼び出しでのエラーチェックはありません。彼らは働いていますか?はい、デバッグを済ませていなければなりませんか? –