4

関連する質問[stackoverflow]はこちら

私は上記を実行しようとしていますが、プロセスをさらに一歩進めたいと思います。ファイルタイプのデフォルトエディタを使用して任意のファイルを開きたい。その時点から、ユーザーが通常どおりにファイルを操作できるようにするか、アプリケーションで作業を続行できるようにします。拡張機能は、ユーザーが編集を終了した後に発生するものです。外部アプリケーションからクローズ(理想的には保存)イベントをキャプチャし、それをトリガーとして使用して他のことを行う方法はありますか?私の目的では、外部アプリケーションの終了を追跡することで十分です。

私は特定の場合にこれを行うことができます。たとえば、アプリケーションからWordインスタンスを開いて、アプリケーションに関係するイベントを追跡できます。ただし、アプリケーションをWordから切り離したいのですが、ユーザーが任意のドキュメントエディターを使用できるようにし、バックグラウンドで個別に編集されているファイルのストレージを管理できるようにします。

4

4 に答える 4

3

参照されている質問と同様の方法でこれを行うことができますが、構文はわずかに異なります。

System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo = 
    new System.Diagnostics.ProcessStartInfo("C:\...\...\myfile.html");
process.Start();
process.WaitForExit(); // this line is the key difference

WaitForExit() 呼び出しは、他のアプリケーションが閉じられるまでブロックされます。このコードを別のスレッドで使用して、その間ユーザーがアプリケーションを使い続けることができるようにします。

于 2009-09-14T00:17:25.490 に答える
2

FileSystemWatcherクラスを使用して、ファイルへの変更を監視します。

編集:オブジェクトのExitedイベントを処理Processして、プログラムがいつ終了したかを確認することもできます。ただし、ユーザーがファイルを閉じてもプロセスを終了しないことはわかりません。(これは特にWordで発生する可能性があります)。

于 2009-09-14T00:05:40.800 に答える
0

ファイルの変更をリッスンするには、FileSystemWatcherを使用して、最終変更日の変更をリッスンできます。

プロセスを監視し、プロセスが終了したときにファイルを確認してファイルすることもできます。

于 2009-09-14T00:04:48.973 に答える
0

この便利なヒントをオンラインで見つけました。それはあなたが探しているもののようです。この記事 (リンク切れ)には、C# プログラミングに関するより詳細で役立つ、要点を説明したヒントが含まれています。

string filename = "instruction.txt";
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(@filename);

System.Diagnostics.Process rfp = new System.Diagnostics.Process();
rfp = System.Diagnostics.Process.Start(psi);

rfp.WaitForExit(2000);

if (rfp.HasExited)
{
   System.IO.File.Delete(filename);
}

//execute other code after the program has closed
MessageBox.ShowDialog("The program is done.");
于 2009-09-14T00:24:19.127 に答える