Compact Framework 2.0、Windows Mobile5.0SDKを使用してWindowsMobileデバイスをプログラムでシャットダウンしたいと思います。
よろしく、
Compact Framework 2.0、Windows Mobile5.0SDKを使用してWindowsMobileデバイスをプログラムでシャットダウンしたいと思います。
よろしく、
アプリからそれを行うのはおそらく良い考えではありません-デバイスには理由のために電源ボタンがあり、アプリをシャットダウンするとユーザーの混乱やフラストレーションを引き起こす可能性があります。
これを行う必要があり、Windows Mobile 5.0以降を使用している場合は、次のようにExitWindowsExをP/Invokeできます。
[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 に関するもう 1 つの注意点は、シャットダウンは Windows Mobile Standard (つまり、Smartphone) でのみサポートされ、Windows Mobile Professional (Pocket PC) デバイスではサポートされないことです。
MSDNのExitWindowsEx ドキュメント内の EWX_POWEROFF フラグに関する特記事項を参照してください。私は数年間、Pocket PC で API を試していませんが、まだそれが現状であると確信しています。
代わりに、電源管理 API を使用して調査し、デバイスをサスペンド モードや無人モードなどの低電力状態にすることをお勧めします。プログラムでデバイスをシャットダウンすることで何を達成しようとしていますか?
再起動と電源オフ(シャットダウン)のAPIの方法が異なりますが、何が問題なのかわかりません。
private enum SetSystemPowerStateAction
{
POWER_STATE_ON = 0x00010000、
POWER_STATE_OFF = 0x00020000、
POWER_STATE_SUSPEND = 0x00200000、
POWER_FORCE = 4096、
POWER_STATE_RESET = 0x00800000
}
[DllImport( "coredll.dll"、SetLastError = true)]
static extern int SetSystemオプション);
//オフに
//なぜ再起動するのかわかりませんが??
SetSystemPowerState(null、(int)SetSystemPowerStateAction.POWER_STATE_OFF、(int)SetSystemPowerStateAction.POWER_FORCE);
// 再起動します
SetSystemPowerState(null、(int)SetSystemPowerStateAction.POWER_STATE_RESET、(int)SetSystemPowerStateAction.POWER_FORCE);
「通常の」Windows API には ExitWindowsEx() 関数があります。これをチェックしてみてください。ただし、これはOEM に依存しているようです。
私が読んだこと(数年前)によると、Windows CEは実際にはシャットダウンするように設計されておらず、サスペンドされた低電力状態になるだけです。モバイル/スマートフォン用であることを忘れないでください。常にオンになっている必要があります。
ExitWindowsEx 関数は役に立つかもしれませんが、次のようになります。
職場での個人的な観点から言えば、Windows CE ベースの OS 用に独自のシャットダウンおよび再起動機能を実装しました。そのために多くのコードを書かなければならなかったので、このシャットダウン機能がすべての OS に存在するとは思っていませんでした。