3669|1

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教用VB.NET怎么在WinCE下怎么打开一个外部可执行文件。 [复制链接]

请教用VB.NET怎么在WinCE下怎么打开一个外部可执行文件。
此帖出自WindowsCE论坛

最新回复

c#的一个完整类; 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, "");                 }                 #region localAlloc MemoryAllocFlags                 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                 }                 #endregion                 #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          }  详情 回复 发表于 2007-4-6 16:23
点赞 关注
 

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
c#的一个完整类;

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, "");
                }

                #region localAlloc MemoryAllocFlags

                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
                }

                #endregion

                #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
         }
此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表