Process.Start()使用.netcf-3.5在CE5中打开.exe。 Win32Exception

时间:2011-09-05 12:01:41

标签: c# .net-3.5 windows-ce

希望这个问题能得到解答。基本上我试图从我创建的应用程序中打开一个可执行文件,该应用程序在使用.net紧凑框架3.5的unitech条形码扫描器上的windows ce5上运行。我在这里尝试了一段代码。

每次我通过VS2008调试应用程序时,我都会收到Win32Exception但没有进一步的细节(有或没有try catch语句)。它没有告诉我异常是什么,也没有提供错误代码。

以下是我尝试启动该过程的代码。你能看到任何可能导致错误的错误吗?我有双重和三重检查文件名以及它存储的目录,所以它不是那样。

private void CustomButtonEvent(object sender, EventArgs e)
{
    string buttonName = ((Control)sender).Name;
    ProcessStartInfo processStartInfo = new ProcessStartInfo();

    buttonName = buttonName.Remove(0, 3);
    buttonName = buttonName.Replace(' ', '_');

    switch (buttonName)
    {//todo need to open the different exe's here
        case "End_Of_Line":
            {
                MessageBox.Show(@"No app behind this button yet.");
                break;
            }
        case "Asset_Tracking":
            {
                processStartInfo.FileName = "AssetTrackingScanner.exe";
                processStartInfo.WorkingDirectory = @"\Flash Storage\CompoundingManagementScannerSuite\Applications\AssetTrackingScanner\AssetTrackingScanner\bin\Debug";

                try
                {
                    Process.Start(processStartInfo);
                }
                catch (Exception f)
                {
                    MessageBox.Show(f.ToString());
                }

                break;
            }
        case "Stock Take":
            {

                MessageBox.Show(@"No app behind this button yet.");
                break;
            }
        case "Despatch":
            {
                MessageBox.Show(@"No app behind this button yet.");
                break;
            }
    }
}

1 个答案:

答案 0 :(得分:6)

我看到两个问题。首先,CE需要完全限定的路径,因此processStartInfo.FileName应该是这样的

processStartInfo.FileName = 
@"\Flash Storage\CompoundingManagementScannerSuite\Applications\AssetTrackingScanner\AssetTrackingScanner\AssetTrackingScanner.exe"; 

其次,CE没有WorkingDirectory的概念,所以删除调用来设置它。

我也有点担心你路径的\bin\debug\部分。 Studio不会部署到设备上的bin\debug\文件夹。它在PC上构建为一个,但在目标设备上,唯一的方法就是手动设置它。这使我认为您需要检查设备上的应用程序路径。