C#智能设备中程序的调用

由于在某些PDA上的操作系统不像PPC那样直接插上USB就可以连接上PC,必须手动选择菜单上的连接程序才可以连接,而在特殊情况下必须由用户控制连接,在此提供代码:

1、加入命名空间:
using System.Runtime.InteropServices;
using System.Reflection;

2、声明API和类
[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 );
public class ProcessInfo
  {
   public IntPtr hProcess;
   public IntPtr hThread;
   public Int32 ProcessId;
   public Int32 ThreadId;
  }
3、创建调用函数
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;
  }

4、调用连接程序 
        private void btnStart_Click(object sender, EventArgs e)
        {
            string progPath = "//Program Files//hx_fj_mobile//hx_fj-mobile.exe";     //在设备和桌面计算机之间建立ActiveSync 连接 //我的设备

            ProcessInfo pi = new ProcessInfo();
            CreateProcess(progPath, "", pi);
            if (CreateProcess(progPath, "", pi))
                MessageBox.Show("Success! PID = " + pi.ProcessId.ToString());成功调用时非0
            MessageBox.Show(pi.hProcess.ToString());//成功调用时非0
}

 

CreateProcess函数原型:
BOOL CreateProcess
(
    LPCTSTR lpApplicationName,       
    LPTSTR lpCommandLine,       
    LPSECURITY_ATTRIBUTES lpProcessAttributes。
    LPSECURITY_ATTRIBUTES lpThreadAttributes,       
    BOOL bInheritHandles,     

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值