c#.net实现Smartphone,PocketPC进程启动
2009-11-09 23:25
561 查看
using System; using System.Runtime.InteropServices; using System.Text; namespace RDP { /// <summary> /// Utility class for launch programs and files. /// </summary> public class ShellExecute { public static void Start(string fileName, string parameters) { int nSize; SHELLEXECUTEEX see; IntPtr pFile; IntPtr pParams; see = new SHELLEXECUTEEX(); nSize = fileName.Length * 2 + 2; pFile = localAlloc(MemoryAllocFlags.LPtr, nSize); Marshal.Copy(Encoding.Unicode.GetBytes(fileName), 0, pFile, nSize - 2); nSize = parameters.Length * 2 + 2; pParams = localAlloc(MemoryAllocFlags.LPtr, nSize); Marshal.Copy(Encoding.Unicode.GetBytes(parameters), 0, pParams, nSize - 2); see.lpFile = pFile; see.lpParameters = pParams; ShellExecuteEx(see); LocalFree(pFile); LocalFree(pParams); //return see.hProcess; } public static void Start(string fileName) { Start(fileName, ""); } private static IntPtr localAlloc(MemoryAllocFlags uFlags, int uBytes) { const int GMEM_FIXED = 0x0000; const int LMEM_ZEROINIT = 0x0040; const int LPTR = (GMEM_FIXED | LMEM_ZEROINIT); IntPtr ptr = LocalAlloc(LPTR, (uint)uBytes); if (ptr == IntPtr.Zero) throw new Exception("Out of memory!"); return ptr; } private enum MemoryAllocFlags : int { Fixed = 0x00, ZeroInit = 0x40, LPtr = ZeroInit | Fixed } #region APIs [DllImport("coredll.dll")] private static extern IntPtr LocalAlloc(uint uFlags, uint Bytes); [DllImport("coredll")] private static extern IntPtr LocalFree(IntPtr hMem); [DllImport("coredll")] private extern static int ShellExecuteEx( SHELLEXECUTEEX ex ); private class SHELLEXECUTEEX { public UInt32 cbSize = 60; public UInt32 fMask = 0; public IntPtr hwnd = IntPtr.Zero; public IntPtr lpVerb = IntPtr.Zero; public IntPtr lpFile = IntPtr.Zero; public IntPtr lpParameters = IntPtr.Zero; public IntPtr lpDirectory = IntPtr.Zero; public int nShow = 0; public IntPtr hInstApp = IntPtr.Zero; public IntPtr lpIDList = IntPtr.Zero; public IntPtr lpClass = IntPtr.Zero; public IntPtr hkeyClass = IntPtr.Zero; public UInt32 dwHotKey = 0; public IntPtr hIcon = IntPtr.Zero; public IntPtr hProcess = IntPtr.Zero; } #endregion } }
相关文章推荐
- c#.net实现Smartphone,PocketPC进程启动
- 用VB.net实现Smartphone中进程启动 (转载)
- 用VB.net实现Smartphone中进程启动
- 用VB.net实现Smartphone中进程启动
- C# 实现shellcode 进程启动注入eip注入
- asp.net C# 语言 Wait方式启动多个 进程的示例
- C#实现启动,关闭与查找进程的方法
- NET(C#)使用WMI事件查询实现对进程和可移动磁盘的监控
- c# wcf NetNamePipeBinding 实现同一系统上不同进程之间的通信
- C#实现进程管理的启动和停止实例
- C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转
- C# asp.net 搭建微信公众平台(可实现关注消息与消息自动回复)
- Winform(C#.NET)自动更新组件的使用及部分功能实现(一点改进功能)
- C#实现开机启动与取消开机启动
- ASP.net(c#)用类的思想实现插入数据到ACCESS例子
- 如何用c#实现开机启动?
- c# 启动关闭进程
- asp.net(c#)实现从sqlserver存取二进制图片
- Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类 (C# DIY HttpWebClient)
- ASP.NET(C#)实现一次性上传多张图片(多个文件)