1

私は使っている

System.Diagnostics.Process.Start(ProcessInfo);

Windowsフォームアプリケーション内からメモ帳でTEXTファイルを開く。

詳細なコード スニペットは

ProcessStartInfo PSI = new ProcessStartInfo("notepad.exe", LogFile);
PSI.WindowStyle = ProcessWindowStyle.Normal;
System.Diagnostics.Process p = System.Diagnostics.Process.Start(PSI);

ただし、デフォルトのデスクトップではメモ帳を開きますが、メイン アプリケーションが実行されている拡張デスクトップでは開きません。

さて、問題は、アクティブなデスクトップ、つまり現在のアプリケーションが実行されているウィンドウでメモ帳を開く方法です。

4

1 に答える 1

1

ウィンドウの初期状態 (通常、非表示など) を指定する以外に、新しく起動したアプリケーションの起動方法や表示場所を基本的に制御することはできません。

ここでの最善の策は、アプリケーションを起動し、そのウィンドウ ハンドルを使用して移動するように指示することです。これにはすべて、P/Invoke を使用して を呼び出す必要がありますMoveWindow。これらすべての関数の C# 署名はpinvoke.netにあります。

基本的な考え方を示す非常に単純な (VB.NET) 例を次に示します。この場合、@Lloyd が指摘しているように、必要なウィンドウ ハンドルはProcess.MainWindowHandleから返されProcess.Startます。Process.MainWindowHandleすぐには入力されないことに注意してください。通常WaitForInputIdle、ウィンドウが実際に作成されることを確認するために呼び出す必要があります。が 0 の場合MainWindowHandleは、早すぎることがわかります。

于 2013-01-24T17:16:36.350 に答える