- - PR -
Vb.NetからVB6.0で作成したexeを起動したい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-01-12 12:35
いつも参考にさせていただいてます蘭子と申します。
今回どうしても希望通りの動きにならないので投稿しました。 やりたいことは @Visual Basic .NETのフォーム(以下フォームA)から Visual Basic 6.0で作ったc:\Project1.exe(以下このメインフォームをフォームB)を起動 AフォームAをフォームBの親フォームとする(閉じるイベントや最小化最大化イベントの同期) BフォームAからフォームBの表示位置やサイズの変更を行う の3点です。(環境はWindows XP) 今のところ@起動は出来ました。 Aについては閉じるイベントについては出来たのですが(Aフォームを閉じればBフォームも閉じる) リサイズなどのイベントがうまくいきません(Aフォームを小さくしたらBフォームがはみ出したりする)。 同じくBについてもフォームBのexeの初期表示の位置に表示されます。 以下がソース(一部抜粋)です。 フォームA側 [フォーム] メニュー作成 [ソース]
フォームB側(c:\Project1.exe) ひとまずフォーム1つだけ 上記で[c:\Project1.exe]を[notepad.exe]とすると@ABともにきちんと動きます。 なので、フォームB側の設定不足かとも思うのですが。 何か設定が足りないのかもしくは別の方法でも上記の実現方法などありましたら アドバイスよろしくお願いいたしします。 | ||||
|
投稿日時: 2005-01-18 17:44
中途半端な回答になります。。すいません。
詳細原因は不明なのですが、 起動した”Project1.exe”のMainWindowHandle(prc.MainWindowHandle)の値が 目的のウィンドウのメインハンドルでは無いようです。 ためしに、VB6で作成したexeのFormのCaption名を用い、 別API:FindWindow()でCaption名からウィンドウハンドルを取得し、 値を比較したところ、そうでした。 FindWindow()で取得したハンドルを使用すると、 SetParent()もMoveWindow()も成功します。 SPYにてウィンドウハンドルからウィンドウクラス名を確認しましたが、 ○prc.MainWindowHandle ->ThunderRT6Main クラス ○FindWindow() ->ThunderRT6FormDC クラス です。 試しましたが、VC++で作成した物はこのようなことにはなりません。 VB6特有のことかもしれませんが・・。?? 中途半端でごめんなさい・・。 |
1