我想使用 Compact framework 2.0、Windows mobile 5.0 SDK 以编程方式关闭 Windows Mobile 设备。
问候,
我想使用 Compact framework 2.0、Windows mobile 5.0 SDK 以编程方式关闭 Windows Mobile 设备。
问候,
从您的应用程序中执行此操作可能不是一个好主意 - 设备有一个电源按钮是有原因的,关闭应用程序可能会导致用户困惑和沮丧。
如果您必须这样做,并且您使用的是 Windows Mobile 5.0 或更高版本,您可以像这样 P/Invoke ExitWindowsEx:
[Flags]
public enum ExitFlags
{
Reboot = 0x02,
PowerOff = 0x08
}
[DllImport("coredll")]
public static extern int ExitWindowsEx(ExitFlags flags, int reserved);
...
ExitWindowsEx(ExitFlags.PowerOff, 0);
OpenNetCF.WindowsCE.PowerManagement
类具有挂起和软重置的方法。它甚至有硬件重置的方法!
ExitWindowsEx API 需要注意的另一件事是,仅 Windows Mobile Standard(即智能手机)而不是 Windows Mobile Professional(Pocket PC)设备支持关机。
请参阅 MSDN 上的ExitWindowsEx 文档中有关EWX_POWEROFF 标志的特别说明。我已经有几年没有在 Pocket PC 上尝试过 API,但我很确定这仍然是游戏的状态。
相反,您可能希望使用电源管理 API 将设备置于较低的电源状态,例如挂起或无人值守模式。您试图通过以编程方式关闭设备来实现什么?
“普通”Windows API 具有 ExitWindowsEx() 函数。你可能想看看这个。然而,它似乎是OEM 依赖的。
从我读到的(几年前的现在)Windows CE 实际上并没有设计为这样关闭,只是进入暂停的低功耗状态。请记住它适用于移动/智能手机,因此它们总是要打开的。
ExitWindowsEx 函数可能对您有用,但是:
仅从工作中的个人角度来看,我们已经为基于 Windows CE 的操作系统实现了我们自己的关闭和重启工具。我们必须为此编写大量代码,所以我不希望这种关闭功能存在于所有操作系统上。
我有不同的 API 重启和关机(关机)方式,虽然它有一个不确定是什么的问题。
私有枚举SetSystempowerstateAdeaction
{
Power_State_On = 0x00010000,
POWER_STATE_SOOFT = 0x00020000,
POWER_STATE_SUSPEND = 0x00200000,
POWER_FORCE_RESET
= 0x00800000
}
[DLLIMPORT(“coredll.dll”,setlasterror = true)]
static extern int setsystempowerstate(String psstate,int状态flags,int选项);
// 关闭
//虽然我不确定它为什么会重启??
SetSystemPowerState(null, (int)SetSystemPowerStateAction.POWER_STATE_OFF, (int)SetSystemPowerStateAction.POWER_FORCE);
// 重启
SetSystemPowerState(null, (int)SetSystemPowerStateAction.POWER_STATE_RESET, (int)SetSystemPowerStateAction.POWER_FORCE);
我尝试了这2个代码,成功关闭了掌上电脑
Process.Start("cmd", "/c shutdown.exe")
<br/>
Me.Close()