【聚杰网移动开发】VB.NET实现Smartphone进程启动
由于我一直是VB的拥趸,选择的编程工具当然是时下最火的Visual Basic NET2003了,实话说Microsoft .NET Framework SDK 提供的功能实在不感恭维,微软好象又要将所有走上光明大道的NET程序员拖入已前的API黑暗时代,指针、句柄、地址操作,最令人恼火就是没有为VB.net程序做WinCE的API 声明(令人怀念VB6的API浏览器)很快我就在如何启动手机中的应用程序的代码上困住了,Net没有为WinCE提供Process 对象这种不付责任的做法害得我好苦啊!开始时声明时老是将ShellExecuteEx 和CreateProcess这两个熟悉得不能再熟悉的Win32在VB 6中的声明直接粘到程序中,仅是将VB6的long改为NET的int32,结果老是报错。在网上查了N天资料,才发现原来Win CE的核心API都是在一个coredll.dll文件中,使得我差点没气死!还有一点是SHELLEXECUTEINFO结构中的lpFile这种指向字符串常量的指针由于字符的编码问题不能象在Win32编程中简单声明为String类型,所在必须声明为Intptr,这样问题就出现了,使用ShellExecuteEx函数必须使用微软在VB.net中不直接提供的指针操作,所以我只好根据网上的资料改写了一个VB.net对内存指针的封装类,详细代码及解释如下(新建一个模块,将以下代码粘贴进去即可使用):
有了这个辅助函数,净下的API调用问题就简单了,只需正确声明即可,以下是ShellExecuteEx及CreateProcess涵数及其结构的正确声明(同样是将代码粘贴到一个新建模块中即可调用):




