在wince程序中调用DOS命令重启wince

19 篇文章 1 订阅

在家远程工作时,调试的设备不在旁边,正好VNC又不好用了,于是想到写个程序重启下设备。
以下是我用VS2005编译的程序

#include “stdafx.h”
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
    wchar_t cmd[128] = L”/c RebootSystem.exe”; //
    PROCESS_INFORMATION pi;
    BOOL ret = CreateProcessW(L”cmd.exe”, cmd, NULL, NULL, FALSE, 0, NULL, NULL, NULL, &pi);
    Sleep(1000); //等待确认是否重启对话框弹出
    keybd_event(VK_RETURN, 0, 0, 0); // 发送Enter按键消息
return 0;
}


说明:
cmd.exe是wince上的命令行程序,这个使用CreateProcess W创建新的命令行进程。
L”/c RebootSystem.exe”中,/c是cmd.exe的一个选项,表示运行后面的string命令然后终止,这里运行的命令是RebootSystem.exe。我在wince的系统下没有找到restart命令,只找到RebootSystem命令,它可以重启系统。
在运行了RebootSystem命令后,会产生一个对话框确认是否要重启。这时向wince发送一个Enter消息,确定重启。

函数keybd_event()用法
Windows提供了一个模拟键盘API函数keybd_event(),使用该函数可以发送键盘消息,也就是说会产生一个WM_KEYDOWN或WM_KEYUP消息。

VOID keybd_event(
BYTE bVk,
BYTE bScan,
DWORD dwFlags,
DWORD dwExtraInfo
);
从原型可以看出,keybd_event()共有四个参数:
      第一个为按键的虚拟键值,如回车键为VK_RETURN, 也可以发送数字(ACSII码中13代表回车);
      第二个参数为扫描码,一般不用设置,用0代替就行;
      第三个参数为选项标志,如果为keydown则置0即可,如果为keyup则设成"KEYEVENTF_KEYUP";
      第四个参数一般也是置0即可。
按下Enter键模拟
keybd_event(VK_RETURN, 0, 0, 0);
keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Windows Mobile系统Wince exe程序的打开与文显示问题是一个常见的技术难题。由于Windows Mobile的语言环境默认是英语,当我们打开Wince exe程序时,程序可能会出现文显示不全或者乱码等问题。这时我们需要采用一些特殊的方式来解决这个问题。 解决该问题的方法有三种:一是修改注册表;二是更改系统语言;三是安装文支持。 首先,我们可以通过修改注册表来解决该问题。找到注册表路径“HKEY_CURRENT_USER\ControlPanel\International”,修改为“0x0804e4b0”,并重启手机即可。此方法能够有效地解决Wince exe程序文显示问题,但不够稳定。 第二种方法是更改系统语言。由于Windows Mobile系统默认是英语,我们可以通过更改系统语言为文来解决该问题。更改系统语言的方法为:依次进入“Settings”→“System”→“Regional Settings”→“Language”,选择文即可。但是此方法可能会导致系统不稳定。 第三种方法是安装文支持。我们可以安装文支持包,以解决Wince exe程序文显示问题。方法为:将文支持包拷贝到手机存储卡根目录,再运行“setup.exe”文件进行安装即可。 总之,解决Wince exe程序文显示问题需要我们采用一些特殊的技术方法,具体的解决方法根据不同的情况而异。我们需要在实践不断摸索,才能弄清Wince exe程序文显示问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值