他のアプリのエディットボックスの値の設定

[戻る]
さっち 2002/07/08(月) 12:15:30
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を修正することはできません。)

ご助言をお願いします。

wood 2002/07/08(月) 12:35:34
MSDNの解説を見ると
WM_SETTEXT
を受け取りがわで受け取っているはずなので
これを受け取ったときの処理を記述しておく
のはどうでしょうか

実際にはやったこと無いんですけど、2〜3年自主学習している未熟者の発想です..

さっち 2002/07/08(月) 12:52:34
woodさん、ご助言ありがとうございます。

説明が足りませんでした。
woodさんは、次のように解釈してくれたのだと思います。
App1:受け取り側
App2:送り側

私が今回取り組んでいることでは、受け取り側に処理を追加することはできないのです。

受け取り側がどのような処理をしているかによって、できない場合もあると思っています。
ただ、App1のEditに「手入力」で値が入力できるのだから、
App2でも「手入力」のような処理をしてやれば良いのかな?という発想です。

App2で
::SetDlgItemText( hMainWnd , 1000, "Name" );
の後に何かしらのメッセージをApp1に送ってやれば良いのでしょうか????

まだ、解決できていません。引き続きお願い致します。

dairygoods 2002/07/08(月) 13:02:39
HWND hEdit = ::GetDlgItem(hMainWnd , 1000);
::SendMessage(hEdit, WM_SETTEXT, 0, (LPARAM)"Name");
としたらできませんか?

さっち 2002/07/08(月) 13:12:55
[[解決]]
お世話になっております。
dairygoodsさんの教えてくれた方法でできました。
#かなり感動してます^^;

皆さん、どうもありがとうございました。

古いスレッドには追加発言できません。