vb .netから実行できるように、dllに変換した大きなvb6アプリがあります。デバッグで vb6 & .net プロジェクトを実行すると、すべて正常に動作します。モーダルではないフォームを開くと、すべてが常に正常に機能します。
ただし、vb6 を dll にコンパイルすると、モーダルで開いたときに vb6 フォームが .Net コンテナー フォームに配置されません (非モーダルは問題ありません)。vb6 フォームは画面の左上に表示されます。
私は、2007 年 7 月の Eduardo Campano による .Net アプリケーションへの vb6 フォームの埋め込みに関する codeproject に関する記事に基づいて、このソリューションを思いつきました。素晴らしい記事であり、私のように .net に変換するコードが 100 万行ある場合は良いアイデアです。
サンプル コードはありますが、フォーラムにアップロードする方法がわかりません。
vb6 をコンテナーにロードするためのコードは、.net のコンテナー ロード イベントからのものです。
SetParent(mintFormHandle, Me.Handle.ToInt32)
SendMessage(Me.Handle.ToInt32, WM_NCACTIVATE, 1, 0)
SetForegroundWindow(Me.Handle.ToInt32)
LockWindowUpdate(0)