3446|8

77

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

WinCE WM6 调用计算器 [复制链接]

使用
PROCESS_INFORMATION pi = {0};
                        ::CreateProcess(TEXT("\\Windows\\calc.exe"),NULL,NULL, NULL, FALSE, 0, NULL, NULL, NULL, &pi);
调用mobile(Wiondows mobile 中文版)的计算器,能执行,但是并没有调用calc.exe,没有任何提示信息,我换成另外一种方式调用,

SHELLEXECUTEINFO  lpExecInfo = {0};
                        lpExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);   
                        lpExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;   
                        lpExecInfo.lpVerb = L"Open";   
                        lpExecInfo.hwnd = NULL;   
                        lpExecInfo.lpFile = L"calc.exe";
                        lpExecInfo.lpDirectory = L"\\windows";   
                        lpExecInfo.nShow = SW_SHOW;   
                        lpExecInfo.lpParameters = NULL;   
                        lpExecInfo.hInstApp = NULL;  

                        ShellExecuteEx(&lpExecInfo);
调用报错误信息,无法打开文件'calc.exe',可能他不是使用可信证书进行签名的或者找不到他的某个组件,如果问题依旧,请尝试重新安装或者恢复此文件。

说明:
vm6的安装并没有问题,而且,直接在mobile中点击calc.exe是可以运行的,代码PROCESS_INFORMATION pi = {0};
                        ::CreateProcess(TEXT("\\Windows\\calc.exe"),NULL,NULL, NULL, FALSE, 0, NULL, NULL, NULL, &pi); 换成iexplore和calendar都没有问题,在pocket 2003 ARM下可行,在vm5.0和vm6.0下都出不来。

请教!

最新回复

呵呵,真正的可执行程序是MobileCalculator.exe .  详情 回复 发表于 2009-4-30 13:55
点赞 关注

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
用CREATEPROCESS( )
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
lpExecInfo.lpFile = L"\\windows\\calc.exe";
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

4
 
to ultrapro:

这个方式我试过,结果还是行不通。 :(

to xqhrs232:

我现在就是用的CreateProcess的方法,只是调用部分windows下的应用程序的时候可以,比如iexplore, tasks, ppt,pword, pxl; 调用clac就不行。

毫无思绪中,是不是这还和其他信息,比如注册表里某个项存的路径有关?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
将代码修改为如下即可。

SHELLEXECUTEINFO  lpExecInfo = {0};

lpExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);  
lpExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;  
lpExecInfo.lpVerb = L"Open";  
lpExecInfo.hwnd = NULL;  
lpExecInfo.lpFile = L"\\windows\\calc.lnk";
lpExecInfo.nShow = SW_SHOW;  
lpExecInfo.lpParameters = NULL;  
lpExecInfo.hInstApp = NULL;  

ShellExecuteEx(&lpExecInfo);
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

6
 
恩有时候SHELLEXECUTEINFO附带的东西得精简,最好是最基本的
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

7
 
调用GetLastError(),获取到
PROCESS_INFORMATION pi = {0};
::CreateProcess(TEXT("\\Windows\\calc.exe"),NULL,NULL, NULL, FALSE, 0, NULL, NULL, NULL, &pi);
的错误结果是2,查了msdn相应的说明信息:The system cannot find the file specified. 去windows下找calc,一个是calc.html,一个是calc.exe,不明白他为什么找不到。

最后,发现在windows mobile 6.0中,windows下多出了一个MobileCalculator.exe,改成
::CreateProcess(TEXT("\\Windows\\MobileCalculator.exe"),NULL,NULL, NULL, FALSE, 0, NULL, NULL, NULL, &pi);

问题解决了。

虽然解决了,但还是很纳闷为什么calc.exe就不可以,如果WM6里面就不用calc.exe了,那还留那干嘛?只是为了向下兼容?
继续探索中。
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

8
 
to xiaoguanglee

多谢,刚才没有看见回复,试了你的方法,okey了,

承蒙提醒,刚才看了一下WM6里面的calc的文件属性,果真是lnk,多谢了。
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

9
 
呵呵,真正的可执行程序是MobileCalculator.exe .
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表