Windows CE下类似Process.Start功能的解决方法

本文介绍了一个使用C#进行进程创建的方法,并展示了如何通过调用外部DLL来启动进程、获取进程ID及等待进程结束。此外,还提供了一个示例程序,演示了如何通过按钮点击事件来启动指定的应用程序。

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();
    
  [DllImport("CoreDll.dll")]
  private extern static Int32 WaitForSingleObject(  IntPtr Handle,Int32 Wait);

public static bool CreateProcess( String ExeName, String CmdLine, ProcessInfo pi )
  {
   Int32 INFINITE;
   unchecked {INFINITE = (int)0xFFFFFFFF;}
    
   if ( pi == null )
    pi = new ProcessInfo();
   byte [] si = new byte[128];
   CreateProcess(ExeName, CmdLine, IntPtr.Zero, IntPtr.Zero,
    0, 0, IntPtr.Zero, IntPtr.Zero, si, pi);
   WaitForSingleObject(pi.hProcess,INFINITE);
   return true;
  }

private void btnExecute_Click(object sender, System.EventArgs e)
  {

   String progPath = "iexplore.exe";//这里就是你要执行的程式路径名称
   ProcessInfo pi = new ProcessInfo();
   if (CreateProcess(progPath, "", pi) )
   {
    MessageBox.Show("Success! PID = " + pi.ProcessId.ToString());
   }
   else
   {
    MessageBox.Show("Failed! System Error = " + GetLastError().ToString());
   }  
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值