65.9K
CodeProject 正在变化。 阅读更多。
Home

在 IPAQ/Windows CE .NET 中启用浮动 SIP 控制

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.60/5 (5投票s)

2002年12月11日

CPOL

2分钟阅读

viewsIcon

122734

downloadIcon

198

在 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.hRegEdit.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 注册表设置,您会从中获得更多乐趣。

© . All rights reserved.