2009-06-24 15 views
2

私は、実行可能ファイルの関連するファイル(つまり、関連するファイル拡張子)にコマンドライン引数を渡すプログラムを持っています。実行ファイルは引数を受け取ることはありません。しかし、実行ファイルを直接起動し、関連するファイルと引数の両方のパスに渡すと、ファイルパスと引数の両方を受け取ることになります。コマンドライン引数を関連ファイル経由で実行可能ファイルに渡すことはできますか?

  • オペレーティングシステム:Windows XP
  • プログラミング言語:すべての援助のため、事前に

    System.Diagnostics.Process.Start(filepath, arguments) 
    

    ありがとう:C#

私が使用して、関連するファイルを始めています。

-EDIT

基本的に、私はC#プログラムによってそれに渡されるコマンドライン引数を受け取るために必要なプログラミング言語インタプリタを持っています。

C#プログラムを使用してコードファイルを開始すると、インタープリタは起動しますが、C#プログラムによってコードファイルに渡されたコマンドライン引数は受信されません。

だから3つのファイルの合計があります。

  1. 通訳
  2. コードファイル、プログラムであるかのようにコードファイルを起動しようとしている
  3. プログラム

また、インタプリタを直接起動することはオプションではありません。なぜなら、すべてのコンピュータ上の同じファイルパスに存在しないからです。

私はこれがより明確であることを望みますが、ソースコードを法的な制限に掲示することはできません。

+0

協力くださいuldあなたはソースのビットを投稿する、私はあなたが何をしているかはかなり '取得'ではない。 – bugmagnet

+0

彼はProcess.Start( "file.xls"、 "arg1 arg2")をやっているようです。 –

+1

そして、何が動作するのですか?Process.Start( "excel.exe"、 "file.xls arg1 arg2"); –

答えて

1

あなたは(通常はそれだけで%1を含みます)の引数に%2%3などが含まれるように(高度なペインの)ファイルの関連付けを変更する(未テスト)を試みることができる - しかし、これは、変更を必要とします(さらに重要なことに)引数を文書に渡すという考え方全体が、同じビューアを持っている(つまり、引数が分かりやすい)ものと推定しています。

IMO、もっと良い選択肢は、exeを明示的に起動し、doc(と他のもの)を引数として渡すことです。

例:

受信EXE(単に引数が受信したコマンドを示す):

static class Program { 
    [System.STAThread] 
    static void Main(string[] args) { 
     System.Windows.Forms.MessageBox.Show(string.Join("|", args)); 
    } 
} 

そして:「FOOを作成しました。ファイルの関連付けに入り、 "ふるい落とす"、 "開く"、編集する、追加する%2%3%4

次に別のexeで:

示し
Process.Start(@"c:\foo.flibble", "test of args"); 

:。!

c:\foo.flibble|test|of|args 

をだからこれは今文書を経由してexeファイルに追加の引数を渡された。しかし、クライアント構成の多く

+0

ありがとう、それは素晴らしいです! – Mackenzie

関連する問題