的ShellExecute在Windows嵌入式

的ShellExecute在Windows嵌入式

问题描述:

我使用的ShellExecute在Windows嵌入式

ShellExecute(NULL,"open","control.exe","ncpa.cpl","c:\\windows\\system32\\",SW_NORMAL); 

打开网络连接窗口。这是我的系统上有Windows XP的工作。但是当我为该程序必须运行的机器构建时,它不起作用。它有Windows Embedded。我想这是因为Windows Embedded中没有control.exe。

所以我试图运行

ShellExecute(NULL,"open","Rundll32.exe","ncpa.cpl","c:\\windows\\system32\\",SW_NORMAL); 

,但不工作。它返回42,所以它的成功,但仍然没有发生。我尝试了各种其他选项,如使用“ncpa.cpl ,,”并使用“Rundll32.exe Shell32.dll”而不是“Rundll32.exe”,但这也不起作用。我如何使用ShellExecute,以便它可以在我的机器上以及在Windows Embedded上工作。即使有一个只能在Windows Embedded上工作的解决方案,因为我只会#定义它。

一个选项是跳过ShellExecute并直接加载并调用控制面板,使用其CPlApplet入口点。需要遵循的协议记录在案(从控制面板的角度)in MSDN。那么你不需要任何外部帮手应用程序来启动控制面板;你只需在你的过程中托管它。

+0

对不起,但不知道如何做到这一点大声笑。你能举一个简单的例子来说明如何使用CPIApplet来实现这个功能。我基本上在寻找一行代码,可以调出“网络连接”窗口。 CPIApplet感觉太复杂了,只能提出一个窗口。是否有可能做,如果不是与ShellExecute函数比任何其他函数? – user807665

+0

@ user807665,如果你缺少control.exe,那么这里并没有真正的一行代码;您需要重新实现control.exe的一部分,这是MSDN文档的文档。 – bdonlan

+0

我看过CPIApplet,但我觉得这太麻烦了。我尝试着使用别的东西。创建一个批处理文件来打开ncpa.cpl。然后我简单地使用了ShellExecute(NULL,“open”,“timepass.bat”,NULL,NULL,SW_HIDE);在Windows XP上完美运行,但在嵌入式Windows上无法运行。这里可能是什么问题?我确保timepass.bat在需要的位置(与exe文件位置相同)。对于Windows Embedded,我是否需要添加额外的东西? – user807665