VC++6.0での質問です。
次のような二つのアプリケーションがあります。
・App1:
Editがあるダイアログボックスを表示し、OKボタンが押されたら、Editに入力された
値をMessageBoxで表示する。
・App2:
App1のEditに値をセットする。
App2では次の処理で、App1のEditの値をセットしています。
////////
void CAppAuthenDlg::OnSendSetitem()
{
HWND hMainWnd = NULL;
//App1のハンドル取得
hMainWnd = ::FindWindow( #123456, TEST );
if ( hMainWnd == NULL )
{
MessageBox(失敗);
return;
}
::SetDlgItemText( hMainWnd , 1, おーけー ); // OKボタン
::SetDlgItemText( hMainWnd , 1000, Name ); // Edit
return;
}
////////
上記処理を実行後、以下のような結果になります。
・OKボタンのキャプションはおーけーと表示されます。
・EditはNameと表示されず、App2実行前の"(空)です。
ただし、Spy++でEditのキャプションを見るとNameに変わっています。
また、App1のOKボタンをクリックで表示されるEditの値は、"です。
もちろんApp1のEditに手入力でhogehogeと入力し、OKボタンをクリックすると
hogehogeと表示されます。
どのようにApp2を修正すれば、App1のエディットの値を変更することが
できるのでしょうか?(App1を修正することはできません。)
ご助言をお願いします。
MSDNの解説を見ると
WM_SETTEXT
を受け取りがわで受け取っているはずなので
これを受け取ったときの処理を記述しておく
のはどうでしょうか
実際にはやったこと無いんですけど、2~3年自主学習している未熟者の発想です..
woodさん、ご助言ありがとうございます。
説明が足りませんでした。
woodさんは、次のように解釈してくれたのだと思います。
App1:受け取り側
App2:送り側
私が今回取り組んでいることでは、受け取り側に処理を追加することはできないのです。
受け取り側がどのような処理をしているかによって、できない場合もあると思っています。
ただ、App1のEditに「手入力」で値が入力できるのだから、
App2でも「手入力」のような処理をしてやれば良いのかな?という発想です。
App2で
::SetDlgItemText( hMainWnd , 1000, Name );
の後に何かしらのメッセージをApp1に送ってやれば良いのでしょうか????
まだ、解決できていません。引き続きお願い致します。
HWND hEdit = ::GetDlgItem(hMainWnd , 1000);
::SendMessage(hEdit, WM_SETTEXT, 0, (LPARAM)Name);
としたらできませんか?
お世話になっております。
dairygoodsさんの教えてくれた方法でできました。
#かなり感動してます^^;
皆さん、どうもありがとうございました。