编写Pocket PC程序遇到的问题:在.net compact framework中,System.Diagnostics没有了Process,那么怎样调用另一个exe?急急! (海蛰)

海蛰 2002-08-27 01:57:41
我看前面有人说System.Diagnostics.Process.start("a.exe"),可以运行一个外部的exe,
可是我是用C#写PocketPC程序,使用的是.net Compact framework环境,可是System.Diagnostics后面没有了Process,那该怎样调用exe程序?
...全文
33 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hogwarts 2002-08-28
  • 打赏
  • 举报
回复
您可以用CoreDll.DLL中的CreateProcess()函数。下面是转载自microsoft.public.dotnet.framework.compactframework讨论组的一段例子代码:

using System;
using System.Runtime.InteropServices;
//...

class ExecSample
{
public class ProcessInfo
{
public IntPtr hProcess;
public IntPtr hThread;
public Int32 ProcessId;
public Int32 ThreadId;
}

[DllImport("CoreDll.DLL", SetLastError=true)]
private extern static int CreateProcess( String imageName,
String cmdLine,
IntPtr lpProcessAttributes,
IntPtr lpThreadAttributes,
Int32 boolInheritHandles,
Int32 dwCreationFlags,
IntPtr lpEnvironment,
IntPtr lpszCurrentDir,
byte [] si,
ProcessInfo pi );

[DllImport("CoreDll.dll")]
private extern static Int32 GetLastError();

public static bool CreateProcess( String ExeName, String CmdLine, ProcessInfo pi )
{
if ( pi == null )
pi = new ProcessInfo();

byte [] si = new byte[128];
return CreateProcess(ExeName, CmdLine, IntPtr.Zero, IntPtr.Zero, 0, 0, IntPtr.Zero, IntPtr.Zero, si, pi) != 0;
}

public static void Main()
{
String progPath = "Calc.exe";
Console.WriteLine("Launching \"{0}\"...", progPath);
ProcessInfo pi = new ProcessInfo();
if ( CreateProcess(progPath, "", pi) )
Console.WriteLine("Success! (pid = {0})", pi.ProcessId.ToString());
else
Console.WriteLine("Failed (system error = {0})", GetLastError().ToString());
}
}

希望能够对您有帮助。


Hogwarts - S(u)ddenly dis@ppeared...
-
本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。



110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧