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 调试程序

确定 取消


顺便说一句,如果我使用调试器单步执行代码,代码就可以正常工作。

任何人都知道我如何使用 Process.Start 打开这个 DWG?

4

3 回答 3

5

确保指定了正确的工作文件夹:

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

从命令行启动和ProcessStartInfo以这种方式使用的一个区别是后者使用 shell 执行。我认为这不太可能导致此问题,但可能会导致问题。尝试添加以下内容并查看是否可以解决问题。

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

事实证明是 Xenocode Postbuild 导致了应用程序错误。如果我在普通的 .NET exe(未混淆)上运行相同的代码,它工作正常。我已经参考 Xenocode 寻求解决方案。

于 2010-10-21T22:13:02.237 回答