1


追加の引数を指定して、拡張機能に登録されているデフォルトのアプリケーションを起動しようとしています:

 ProcessStartInfo p = new ProcessStartInfo();
 p.Arguments = "myargument";
 p.FileName = "file.ext";
 Process.Start(p);

アプリケーションは、指定されたファイルを正しく開き始めます。問題は、追加の「引数」を完全に無視して、1 つのパラメーター (ファイルの名前) だけを取得していることです。
私がやりたいことをすることは可能ですか?私は何か間違ったことをしていますか?

助けてくれてありがとう、
パオロ

4

3 に答える 3

1

これは予想通りだと思います。舞台裏で、Windows はレジストリで既定のアプリケーションを見つけ、新しいプロセスを作成してファイル名をそれに渡しています。コマンド プロンプトに移動して"filename.ext argument"と入力すると、引数がアプリケーションに渡されないという同じ動作が発生します。

おそらく行う必要があるのは、レジストリを調べて、既定のアプリケーションを自分で見つけることです。次に、ファイルタイプの関連付けによって開始しようとする代わりに、引数を使用してそのプロセスを開始できます。レジストリでデフォルトのアプリケーションを見つける方法については、次の回答があります。

Windows で特定のファイルの種類を開くための既定のアプリケーションを見つける

于 2011-02-16T14:02:36.073 に答える
0

もっと簡単な方法は cmd コマンドを使用することだと思います

 void LaunchAssociatedProgram(string filename) {
     Process.Start( @"cmd.exe", "/C start "+ filename );
 }

編集:

引数で機能するかどうかはわかりませんが、関連するプログラムを起動するために探していたものです...

于 2012-10-09T10:13:13.917 に答える
0

あなたの「引数」は正確には何ですか、スペース、バックスラッシュなどがありますか?

    Process process = new Process();
    process.StartInfo.FileName = @"C:\process.exe";
    process.StartInfo.Arguments = @"-r -d something else";
    process.StartInfo.CreateNoWindow = false;
    process.StartInfo.UseShellExecute = false;
    process.Start();

アプリを起動できず、引数に拡張子と引数を使用できない理由はありますか?

于 2011-02-16T14:02:05.253 に答える