メイン プロセスで CreateProcess を使用して GUI アプリケーションを開き、メイン プロセス内から作成したウィンドウに GUI を表示できるようにしたいと考えています。これを達成する方法を知っている人はいますか?ありがとう!
2 に答える
両方のアプリケーションを管理している場合は、はい。
これは、スクリーン セーバーがスクリーン セーバー コントロール パネルに表示される方法です。コントロール パネルは、コマンド ラインでダイアログ ウィンドウを渡し、.scr ファイル (単純な exe ファイル) は、指定された hwnd を使用して子としてウィンドウを作成します。親。
ただし、以前に作成されたトップ レベル ウィンドウをキャプチャし、それを独自のフレーム内に強制的に存在させることは、十分にサポートされていません。
繰り返しますが、これは簡単に試すことができるものです。空のフレーム ウィンドウを作成するテスト アプリを作成し、メモ帳のコピーに対して FindWindow を実行し、メモ帳ウィンドウの親をフレームの子に変更しました。
したがって、少なくともこの単純なシナリオでは機能しますが、保証はありません。独自のフレーム スタイルを変更するより複雑なアプリケーションは、非常にうまく機能しなくなる可能性があります。さらに、子ウィンドウと親ウィンドウが異なるスレッドにあると、デッドロックが発生する可能性があります。
いいえ、これはできません。
何かうまくいくかもしれません...ただし、プロセスを開始してから、ウィンドウハンドルを使用して一連の変更をウィンドウに適用し、フレームを外します。次に、ウィンドウ内の他の配置コントロールの位置に移動し、移動/サイズ変更イベントがあるときに、この子ウィンドウのサイズも変更できます。