3

我想使用 Compact framework 2.0、Windows mobile 5.0 SDK 以编程方式关闭 Windows Mobile 设备。

问候,

4

7 回答 7

4

从您的应用程序中执行此操作可能不是一个好主意 - 设备有一个电源按钮是有原因的,关闭应用程序可能会导致用户困惑和沮丧。

如果您必须这样做,并且您使用的是 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);
于 2008-10-16T12:25:53.077 回答
3

OpenNetCF.WindowsCE.PowerManagement类具有挂起和软重置的方法。它甚至有硬件重置的方法!

于 2008-11-13T10:51:04.167 回答
1

ExitWindowsEx API 需要注意的另一件事是,仅 Windows Mobile Standard(即智能手机)而不是 Windows Mobile Professional(Pocket PC)设备支持关机。

请参阅 MSDN 上的ExitWindowsEx 文档中有关EWX_POWEROFF 标志的特别说明。我已经有几年没有在 Pocket PC 上尝试过 API,但我很确定这仍然是游戏的状态。

相反,您可能希望使用电源管理 API 将设备置于较低的电源状态,例如挂起或无人值守模式。您试图通过以编程方式关闭设备来实现什么?

于 2009-10-21T11:47:27.217 回答
0

“普通”Windows API 具有 ExitWindowsEx() 函数。你可能想看看这个。然而,它似乎是OEM 依赖的。

于 2008-10-16T06:24:35.397 回答
0

从我读到的(几年前的现在)Windows CE 实际上并没有设计为这样关闭,只是进入暂停的低功耗状态。请记住它适用于移动/智能手机,因此它们总是要打开的。

ExitWindowsEx 函数可能对您有用,但是:

  • 它是本机功能,而不是 .Net / Compact Framework。
  • OEM 必须实现所需的功能才能使其有用。
  • 该功能仅存在于 Windows Mobile 5.0 或更高版本的操作系统上,并不意味着它存在于所有 Windows CE 设备上。

仅从工作中的个人角度来看,我们已经为基于 Windows CE 的操作系统实现了我们自己的关闭和重启工具。我们必须为此编写大量代码,所以我不希望这种关闭功能存在于所有操作系统上。

于 2008-10-16T06:55:18.347 回答
0

我有不同的 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);

于 2010-04-29T08:21:43.793 回答
0

我尝试了这2个代码,成功关闭了掌上电脑

Process.Start("cmd", "/c shutdown.exe")
<br/>
Me.Close()
于 2015-10-14T03:28:33.903 回答