在 IPAQ/Windows CE .NET 中启用浮动 SIP 控制
在 iPAQ/Windows CE .NET 设备中启用浮动 SIP 控制。
引言
本文将介绍如何在您的 Pocket PC/Windows CE .NET 设备中启用浮动 SIP 控制。同时,您将学习如何在不按下任何按钮的情况下对设备进行软重置。
背景
您需要了解一些关于访问注册表以及更改相应值的基本知识。本文的关键在于更改注册表值以创建浮动 SIP 控制。
使用代码
要实现这一点非常简单,您只需要包含来自 winioctl.h 的软重置 API 声明,如下所示,以便在更改注册表值后立即调用重置函数。
// FOR SOFT RESET USED ONLY // ------------------------------------------------------------ #include <winioctl.h> #define IOCTL_HAL_REBOOT CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS) extern "C" __declspec(dllimport) BOOL KernelIoControl( DWORD dwIoControlCode, LPVOID lpInBuf, DWORD nInBufSize, LPVOID lpOutBuf, DWORD nOutBufSize, LPDWORD lpBytesReturned); // ------------------------------------------------------------
一旦您声明了上述 API,就可以像代码中所示一样自由执行声明函数。
// Soft reset the device KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL);
接下来是操作系统引用的 SIP 样式注册表位置。这将是操作系统在创建 SIP 控制之前使用的关键值。因此,SIP 样式由以下注册表键控制
HKEY_CURRENT_USER\ControlPanel\Sip\DragStyle
DragStyle
= 0,表示 SIP 不可移动。DragStyle
= 1,表示 SIP 可移动。
我通过将所有繁琐的代码放入在 RegEdit.h 和 RegEdit.cpp 下定义的几个函数中,简化了注册表访问。因此,您只需要在想要从不可移动 SIP 控制切换到可移动 SIP 控制或反之亦然时,使用正确的值调用 SaveDWORD
。
// Enable the movable SIP control SaveDWORD(HKEY_CURRENT_USER, TEXT("ControlPanel\\Sip"), TEXT("DragStyle"), 1); // Disable the movable SIP control SaveDWORD(HKEY_CURRENT_USER, TEXT("ControlPanel\\Sip"), TEXT("DragStyle"), 0);
需要软重置才能使所做的更改生效。因此,在执行上述代码后,设备将使用讨论中的重置函数进行重置。
关注点
随意探索更多 Pocket PC 注册表设置,您会从中获得更多乐趣。