使用Process.Start运行程序时,它无法找到它的资源文件

时间:2015-07-09 11:41:13

标签: c# graphics process

我有这段代码:

private void button1_Click(object sender, EventArgs e)
{
    Process p = new Process();
    p.StartInfo.FileName = "C:/Users/Valy/Desktop/3dcwrelease/3dcw.exe";
    p.Start();
}

3dcw.exe是OpenGL图形的应用程序。

问题是,当我点击按钮时,可执行文件会运行,但无法访问其纹理文件。

有没有人有解决方案?我想像在后台加载位图文件,然后运行exe文件,但我该怎么做?

2 个答案:

答案 0 :(得分:4)

我在互联网上搜索了您的问题的解决方案并找到了这个网站:http://www.widecodes.com/0HzqUVPWUX/i-am-lauching-an-opengl-program-exe-file-from-visual-basic-but-the-texture-is-missing-what-is-wrong.html

在C#代码中,它看起来像这样:

<cfinput type="text" name="NAME_HERE" 
    value="#VARIABLE_HERE#" 
    size="60" maxlength="1250">

答案 1 :(得分:3)

问题很可能是 3dcw.exe 正在查找其当前工作目录中的文件。使用Process.Start运行应用程序时,该应用程序的当前工作目录将默认为%SYSTEMROOT%\system32。该程序可能需要一个不同的目录,很可能是可执行文件所在的目录。

您可以使用以下代码设置流程的工作目录:

private void button1_Click(object sender, EventArgs e)
{
    string path = "C:/Users/Valy/Desktop/3dcwrelease/3dcw.exe";

    var processStartInfo = new ProcessStartInfo();

    processStartInfo.FileName = path;
    processStartInfo.WorkingDirectory = Path.GetDirectoryName(path);

    Process.Start(processStartInfo);
}