0

Outlook スイッチを使用して、詳細が事前入力された新しい Outlook メッセージを作成するプログラムを作成しようとしています。

コマンドプロンプトを使用している場合、次のコマンドで新しい空白のメッセージが正常に作成されます。

"C:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE" /c ipm.note

ここで、C# でコマンド プロンプトを使用する方法に関するいくつかの投稿を見つけました。この同じスイッチ コマンドを C# から実行しようとしましたが、点滅するコマンド プロンプト ボックスにエラーが表示されます。ipm.note is not recognized as an internal or external command, operable program or batch file.

ipm.note がスイッチに対して正しいことはわかっていますが、C# コードで渡すときに何かが足りないようです。もしかして逃げキャラ?これが使用中の私のコードです。

System.Diagnostics.Process.Start("CMD.exe", "\"C:\\Program Files (x86)\\Microsoft Office\\Office14\\OUTLOOK.EXE\" /c ipm.note");

また、これに関して、@記号を使用できるようにしたかったので、各特殊文字をエスケープする必要はありませんでしたが、それを使用して文字列内に引用符を追加できるかどうかはわかりません。次に例を示します。

string temp = @""C:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE" /c ipm.note" 上記では、最初の引用符のセットが開いて閉じ、次の引用符のセットまですべてが文字列の一部とは見なされません。

これらの状況の両方に関する推奨事項は大歓迎です。

4

2 に答える 2

1

/c スイッチも cmd.exe に渡す必要があります。これを試して:

Process.Start("cmd.exe", @"/c """"C:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE"" /c ipm.note""");

ただし、実際には、outlook.exe を直接実行して、多くの引数の問題を回避する方がはるかに優れています。

Process.Start(@"C:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE", "/c ipm.note");

@ 文字で始まる文字列に関する質問に関しては、これらの文字列はそのままの文字列リテラルと呼ばれます。コード スニペットで行ったように、2 つの二重引用符を一緒に使用して、これらのいずれかの内部に二重引用符を含めることができます。

于 2013-01-16T20:42:23.780 に答える