当前位置: 代码迷 >> WinCE >> 远峰GPS方案 休眠,关机,重启
  详细解决方案

远峰GPS方案 休眠,关机,重启

热度:56   发布时间:2016-04-28 13:20:06.0
求助 远峰GPS方案 休眠,关机,重启,
如题,在机器上长按电源键是可以 实现 关机 和 休眠 操作的

自己做个小软件,想要在代码中实现 关机,休眠,重启 功能

从网上找了些代码。休眠和重启是实现了,关机貌似很复杂的样子,也没实现。求帮助。

休眠
C/C++ code
g_hcoreDll = LoadLibrary(_T("coredll.dll"));if(g_hcoreDll){    GwesPowerOffSystemEx = (_GwesPowerOffSystem)GetProcAddress(g_hcoreDll,_T("GwesPowerOffSystem"));    GwesPowerOffSystemEx();}


重启 先引入 #include <winioctl.h>
C/C++ code
KernelIoControl(IOCTL_HAL_REBOOT,NULL,0,NULL,0,NULL);


关机,我看都网上都建议使用 SetSystemPowerState 然后需要 OEM支持
但是 根本没有 POWER_STATE_OFF 参数 啊,

请问该怎么实现,最后能解释下原理。谢谢



------解决方案--------------------
除非他的驱动支持,不然别想做了。
------解决方案--------------------
探讨
忘了。重启操作,引入winioctl.h后,还得定义一个宏,才能使用。
#define IOCTL_HAL_REBOOT CTL_CODE(FILE_DEVICE_HAL,15,METHOD_BUFFERED,FILE_ANY_ACCESS)
这个我也不知道为什么。求解

------解决方案--------------------
关机:SetSystemPowerState(NULL, POWER_STATE_OFF, POWER_FORCE);
驱动支不支持,可以问下厂家吧。
------解决方案--------------------
import the dll head
------解决方案--------------------
探讨

POWER_STATE_OFF, POWER_FORCE 要引入那个头文件才可以呢

------解决方案--------------------
哥来帮你解决一下: 
BOOL SystemPowerOff(void)
{
HANDLE hRep = CreateEvent(NULL, FALSE, FALSE, _T("__PowerOffRepEvent__"));
if(!hRep)
return FALSE;

SetEventData(hRep, 1);
Sleep(1);
SetEvent(hRep);

Sleep(2);
CloseHandle(hRep);

return TRUE;
}
------解决方案--------------------
这个是WinCE的标准接口啊,声明一下。
extern "C"
BOOL SetEventData( 
HANDLE hEvent,
DWORD dwData
);
------解决方案--------------------
驱动需要支持
  相关解决方案