0

以下のコードを含むフォームでexeを開こうとしています。

これは私のプログラムを開いていますが、フォームの外にあります。このプログラムをフォームの中に入れたいです。よろしくお願いします

Process p = new Process();

p.StartInfo.FileName = @"C:\Program Files\Cadence Design Systems\Allegro Free Physical Viewers 16.6\tools\pcb\bin\allegro_free_viewer";
p.StartInfo.Arguments = "ProcessStart.cs";
p.Start();
p.WaitForExit();
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
4

2 に答える 2

2

プロセスを使用してアプリケーション内で他のアプリケーションを実行することはできません。オブジェクトのリンクと埋め込みを使用して実行できます。アプリケーション内から開きたいアプリケーションは、ole. このコードプロジェクトの記事では、C# アプリケーション内に acrobat ドキュメントを埋め込む方法について説明しています。

于 2013-02-08T11:05:24.317 に答える
-1

あなたが言っているのは、Windows フォーム アプリケーション内にウィンドウを持ちたいということである場合、これは簡単には実現できません。

最善の策は、MDI ホスト ウィンドウをセットアップし、WinAPI を使用しFindWindowSetParent外部プロセス ウィンドウを検索し (開始したら)、このウィンドウの親を独自のフォーム ホスト ウィンドウに設定することです。

このようなもの(メソッドをインポートした後)が機能するはずです:

Process p = new Process();

p.StartInfo.FileName = @"C:\Program Files\Cadence Design Systems\Allegro Free Physical Viewers 16.6\tools\pcb\bin\allegro_free_viewer.exe";
p.StartInfo.Arguments = "ProcessStart.cs";
p.Start();
var handle = FindWindow(null, "allegro_free_viewer.exe");
SetParent(handle, this.Handle);
p.WaitForExit();

もちろん、外部プロセスを使用するのではなく、アプリケーションに組み込むことができる ActiveX / OLE コントロールをアプリケーションが提供できるかどうかを確認することをお勧めします。

于 2013-02-08T11:06:26.117 に答える