3

私の PC では、DWG ファイルは次のコマンドで開きます。

"C:\Program Files\AutoCAD LT 2007\acadlt.exe" "%1"

コマンドラインからこれを実行すると:

"C:\Program Files\AutoCAD LT 2007\acadlt.exe" "C:\Some Path\Test.dwg"

AutoCAD Lite で DWG ファイルを開きます。

同様に、コマンド プロンプトを開いて引数を指定して同じ exe を実行すると、正常に動作します。

しかし、私が使用する場合

var proc = new System.Diagnostics.Process();
var info = new System.Diagnostics.ProcessStartInfo();

その後

info.FileName = "C:\Some Path\Test.dwg";
proc.StartInfo = info;
proc.Start();

また

info.FileName = "C:\Program Files\AutoCAD LT 2007\acadlt.exe";
info.Arguments= "C:\Some Path\Test.dwg"
proc.StartInfo = info;
proc.Start();

また

info.FileName = "cmd.exe";
info.Arguments= "C:\Program Files\AutoCAD LT 2007\acadlt.exe" "C:\Some Path\Test.dwg"
proc.StartInfo = info;
proc.Start();

次のエラーが表示されます。


acadlt.exe - アプリケーション エラー

「0x01317c8c」の命令が「0x01317c8c」のメモリを参照していました。メモリを「読み取る」ことができませんでした。

[OK] をクリックしてプログラムを終了します [CANCEL] をクリックしてプログラムをデバッグします

OK キャンセル


ちなみに、デバッガーでコードをステップ実行すると、コードは正常に機能します。

Process.Start を使用してこの DWG を開く方法を知っている人はいますか?

4

3 に答える 3

5

正しい作業フォルダーが指定されていることを確認してください。

info.WorkingDirectory = "same path as current directory in cmd.exe";
于 2010-10-19T21:50:22.247 に答える
2

One difference between launching from the command line and using ProcessStartInfo in this manner is that the latter uses shell execution. I don't think it's likely to be causing this problem but can cause issues. Try adding the following and seeing if it fixes the problem.

info.UseShellExecute = false;
于 2010-10-19T21:38:51.283 に答える
0

Xenocode Postbuild がアプリケーション エラーの原因であることが判明しました。通常の .NET exe (難読化されていない) で同じコードを実行すると、正常に動作します。解決策として Xenocode を参照しました。

于 2010-10-21T22:13:02.237 に答える