[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/09/10(Sat) 17:06
投稿者名:金次朗
Eメール:gangin_gingan_1270@mail.goo.ne.jp
URL :
タイトル:
二つの実行ファイル間でのデータの設定
環境:VB6 + WindowsXP

お世話になります。

二つの実行ファイル、Main.exeからSub.exe上のテキストボックスに文字列をセット
させたいのですが、良い方法を存知ではないでしょうか?

目的は
Main.exeから不定期にSub.exe上のテキストボックスに命令をセットし、
Sub.exeはテキストボックスの命令をテキストチェンジイベントで毎回配列に溜め
配列に保存した命令が無くなるか、命令が来なくなるまで処理を繰り返しさせます。

過去ログを参照して、FindWindow()、FindWindowEx()を使い、ノートパッドの
"Edit"に文字列をセットするところまで行えました。
同様にSub.exeのキャプションからハンドルを取得しましたが、Sub.exe上のテキスト
ボックスに文字をセットする、という部分がノートパッドのようにうまくいきません。

以上よろしくお願いします。

投稿時間:2005/09/10(Sat) 17:22
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 二つの実行ファイル間でのデータの設定
> 二つの実行ファイル、Main.exeからSub.exe上のテキストボックスに文字列をセット
上記がVB6.0で作られているならDDE通信で設定できます。

>Sub.exe上のテキストボックスに文字をセットする、という部分が
>ノートパッドのようにうまくいきません。

テキストボックス(ChildWindow)のハンドルを取得していますか?

投稿時間:2005/09/10(Sat) 18:36
投稿者名:金次朗
Eメール:gangin_gingan_1270@mail.goo.ne.jp
URL :
タイトル:
Re^2: 二つの実行ファイル間でのデータの設定
> > 二つの実行ファイル、Main.exeからSub.exe上のテキストボックスに文字列をセット
> 上記がVB6.0で作られているならDDE通信で設定できます。
>
> >Sub.exe上のテキストボックスに文字をセットする、という部分が
> >ノートパッドのようにうまくいきません。
>
> テキストボックス(ChildWindow)のハンドルを取得していますか?

早速のアドバイスありがとうございます。

DDE通信については経験がなく、ネットで調べてみたのですが、
エクセルとの通信資料ばかりですぐには理解できなさそうなので、諦めます。

> テキストボックス(ChildWindow)のハンドルを取得していますか?
これについてですが、ノートパッドの時は
    '' メモ帳の Edit ハンドルを取得
    hWnd2 = FindWindowEx(hwnd, 0&, "Edit", vbNullString)
でノートパッドの編集領域のハンドルがhWnd2に入っていました。

フォーム上のテキストボックスの「"Edit"」の部分に該当する
キーワードがわかればテキストボックスのハンドルが取れると考え
以下のようにテキストボックスのオブジェクト名を
    hWnd2 = FindWindowEx(hwnd, 0&, "Text1", vbNullString)
セットしてみましたが、結果は hWnd2 = 0 でした。
hwnd の方は正常にハンドル値の取得は行えてました。

すみませんが以上よろしくお願いします。

投稿時間:2005/09/10(Sat) 18:58
投稿者名:金次朗
Eメール:gangin_gingan_1270@mail.goo.ne.jp
URL :
タイトル:
解決しました。
過去ログからスパイ++を起動してSub.exeのキャプション名で
実行ファイルを探しフォーム上のテキストボックスのクラス名称を見つけ
"ThunderRT6TextBox"としたところ、Main.exeで渡した文字列が
Sub.exeのテキストボックスに表示されました。

同じコントロールが複数あった場合の識別など、問題は山積みですが、
なんとか文字の表示まですすむことができました。

アドバイスありがとうございました。