1. ホーム
  2. c#

[解決済み] 関連アプリケーションでファイルを開く

2023-06-09 04:34:25

質問

c#アプリから、関連するアプリでファイルを開く方法を教えてください。 私はこれを試してみました。

      ProcessStartInfo pi = new ProcessStartInfo(file);
      pi.Arguments = Path.GetFileName(file);
      pi.UseShellExecute = true;
      pi.WorkingDirectory = Path.GetDirectoryName(file);
      pi.FileName = file;
      pi.Verb = "OPEN";
      Process.Start(pi);

またはこれ

      Process.Start(file);

どこの文字列 file は、いずれも開こうとしているファイルへのフルパスを表しています。さて、すべてがうまくいっているのですが (jpg) 画像を ACDSee アプリで表示した場合 . Irfanviewの関連付けはうまくいき、MSオフィス文書もうまくいきます。acdsee に関連付けられた jpg 画像を開こうとした後、通知領域で acdsee が実行されるだけで、ファイルは開きません。

私は、レジストリに CLASSES_ROOT において、*.jpg 画像のために、関連するアプリとして ACDSee.JPG 値があり、このキーの下にある シェル->開く->コマンド というパスがあります。

"C:\Program Files\ACD Systems\ACDSee\ACDSee.exe" /dde

そして、私はこの奇妙な /dde が原因で、ファイルを開くことができません。私は、同じREGキーで シェル->開く があることに気づきました。 DDEExec という値を持つキー項目があります。 [open("%1")]

Irfanビューや他のチェックされたアプリの場合は、ddeexecはなく、次のような通常のコマンドだけです。

"C:\Program Files (x86)\IrfanView\i_view32.exe" "%1"

は、%1 をファイル名に置き換えてコマンドラインから実行することができます。 が、コマンドラインの acdsee エントリからコマンドを実行できませんでした :(

そこで質問なのですが、どのようにすれば ProcessStartInfo オブジェクトを のすべてのファイルを実行するようにします。 をダブルクリックでエクスプローラで実行されるように、標準とこの DDEExec のものですか?のような他の何かはありますか? DDEExec のように、私が知っておくべきことはありますか? ありがとうございます、そして私のENを申し訳ありません

アップデイト : この質問はまだupvoteされているので、私は受け入れられた答えが動作することを明確にしたい。私はACDSeeの古いバージョンで問題があっただけであって Process.Start コマンドでも jpg 拡張を使用することもできます。

どのように解決するのですか?

ただ書くだけです。

System.Diagnostics.Process.Start(@"file path");

System.Diagnostics.Process.Start(@"C:\foo.jpg");
System.Diagnostics.Process.Start(@"C:\foo.doc");
System.Diagnostics.Process.Start(@"C:\foo.dxf");
...

そして、通常のダブルクリックのように、レジストリから読み込んだ関連プログラムをシェルが実行します。