process.Start 在按下按钮时导致 Win32Exception
process.Start causing Win32Exception on button push
我正在尝试在 C#
中为 WINDOWS POCKET PC
创建一个启动器应用程序,这是我所知道的唯一一种编程语言。当我尝试在同一目录中启动外部 EXE 时,它抛出 Win32Exception。
代码如下:
using System;
using System.Diagnostics;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace app
{
public partial class SMO2010 : Form
{
public SMO2010()
{
InitializeComponent();
}
private void 2010Image_Click(object sender, EventArgs e)
{
}
private void PM_Click(object sender, EventArgs e)
{
}
private void PMLabel_ParentChanged(object sender, EventArgs e)
{
}
private void P_Click(object sender, EventArgs e)
{
}
private void TMLauncher_Click(object sender, EventArgs e)
{
string str = "TextMaker.exe";
Process process = new Process();
process.StartInfo.FileName = "TextMaker.exe";
process.Start();
}
}
}
process.Start();
导致 Win32Exception。这适用于 Windows Mobile 2005。
有什么建议吗?
编辑:这里是例外:
App.exe
Win32Exception
at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at Launcher.Launcher_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.ButtonBase.WnProc(WM wm, Int32 wParam, Int32 lParam)
at System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam)
at Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain)
at System.Windows.Forms.Application.Run(Form fm)
at Launcher.Program.Main()
异常就不多说了。我假设这只是因为找不到应用程序 exe。
如您所知,Windows 基于 CE 5 的系统不知道当前目录,并且可执行文件的搜索路径是有限的。
尝试指定 TextMaker.exe 的完整路径,即“\Programs\TextMaker\TextMaker.exe”。
这对于从 cmd 行测试此类可执行文件非常有帮助。不幸的是,Windows CE PocketPC 没有 CLI。但是有 ITS 工具提供了一个修剪工具,可以在连接的设备(ActiveSync、WMDC)上使用它来向设备发出命令。在你的情况下,我会用 'prun "TextMaker.exe"' 进行测试,这将不起作用,然后用 'prun "\Programs\TextMaker\TextMaker.exe"' 进行测试,只要 TextMaker.exe 与 PocketPC 兼容。
我正在尝试在 C#
中为 WINDOWS POCKET PC
创建一个启动器应用程序,这是我所知道的唯一一种编程语言。当我尝试在同一目录中启动外部 EXE 时,它抛出 Win32Exception。
代码如下:
using System;
using System.Diagnostics;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace app
{
public partial class SMO2010 : Form
{
public SMO2010()
{
InitializeComponent();
}
private void 2010Image_Click(object sender, EventArgs e)
{
}
private void PM_Click(object sender, EventArgs e)
{
}
private void PMLabel_ParentChanged(object sender, EventArgs e)
{
}
private void P_Click(object sender, EventArgs e)
{
}
private void TMLauncher_Click(object sender, EventArgs e)
{
string str = "TextMaker.exe";
Process process = new Process();
process.StartInfo.FileName = "TextMaker.exe";
process.Start();
}
}
}
process.Start();
导致 Win32Exception。这适用于 Windows Mobile 2005。
有什么建议吗?
编辑:这里是例外:
App.exe
Win32Exception
at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at Launcher.Launcher_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.ButtonBase.WnProc(WM wm, Int32 wParam, Int32 lParam)
at System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam)
at Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain)
at System.Windows.Forms.Application.Run(Form fm)
at Launcher.Program.Main()
异常就不多说了。我假设这只是因为找不到应用程序 exe。 如您所知,Windows 基于 CE 5 的系统不知道当前目录,并且可执行文件的搜索路径是有限的。 尝试指定 TextMaker.exe 的完整路径,即“\Programs\TextMaker\TextMaker.exe”。
这对于从 cmd 行测试此类可执行文件非常有帮助。不幸的是,Windows CE PocketPC 没有 CLI。但是有 ITS 工具提供了一个修剪工具,可以在连接的设备(ActiveSync、WMDC)上使用它来向设备发出命令。在你的情况下,我会用 'prun "TextMaker.exe"' 进行测试,这将不起作用,然后用 'prun "\Programs\TextMaker\TextMaker.exe"' 进行测试,只要 TextMaker.exe 与 PocketPC 兼容。