win7 设置电源管理方案
来源:互联网 发布:淘宝软文范例 编辑:程序博客网 时间:2024/05/16 19:33
DWORD DisableDisplayPowerWin7(bool bDisable)
{
DWORD dwRet = 0;
static const GUID id = { 0x9fb78f01, 0xc2c4, 0x4cb5, { 0x80, 0x31, 0xdc, 0x63, 0xc8, 0xa3, 0x62, 0x1 } };
static GUID* OriginalValue = NULL;
static BOOL bModify = FALSE;
DWORD (WINAPI *pPowerGetActiveScheme)(HKEY UserRootPowerKey,GUID** ActivePolicyGuid) = NULL;
DWORD (WINAPI *pPowerReadFriendlyName)(HKEY RootPowerKey,const GUID* SchemeGuid,const GUID* SubGroupOfPowerSettingsGuid,const GUID* PowerSettingGuid,PUCHAR Buffer,LPDWORD BufferSize) = NULL;
DWORD (WINAPI *pPowerDuplicateScheme)(HKEY RootPowerKey,const GUID* SourceSchemeGuid,GUID** DestinationSchemeGuid) = NULL;
DWORD (WINAPI *pPowerWriteFriendlyName)(HKEY RootPowerKey,const GUID* SchemeGuid,const GUID* SubGroupOfPowerSettingsGuid,const GUID* PowerSettingGuid,UCHAR* Buffer,DWORD BufferSize) = NULL;
DWORD (WINAPI *pPowerWriteACValueIndex)(HKEY RootPowerKey,const GUID* SchemeGuid,const GUID* SubGroupOfPowerSettingsGuid,const GUID* PowerSettingGuid,DWORD AcValueIndex) = NULL;
DWORD (WINAPI *pPowerWriteDCValueIndex)(HKEY RootPowerKey,const GUID* SchemeGuid,const GUID* SubGroupOfPowerSettingsGuid,const GUID* PowerSettingGuid,DWORD DcValueIndex) = NULL;
DWORD (WINAPI *pPowerSetActiveScheme)(HKEY UserRootPowerKey,const GUID* SchemeGuid) = NULL;
DWORD (WINAPI *pPowerDeleteScheme)(HKEY RootPowerKey,const GUID* SchemeGuid) = NULL;
GUID* pid = (GUID*)&id;
WCHAR szTmp[MAX_PATH] = {0};
DWORD dwSize = 0;
HMODULE hLib = ::LoadLibrary(_T("PowrProf.dll"));
if (NULL == hLib)
{
dwRet = GetLastError();
goto _Exit;
}
pPowerGetActiveScheme = (DWORD (WINAPI *)(HKEY,GUID **))::GetProcAddress(hLib, "PowerGetActiveScheme");
pPowerReadFriendlyName = (DWORD (WINAPI *)(HKEY RootPowerKey,const GUID* SchemeGuid,const GUID* SubGroupOfPowerSettingsGuid,const GUID* PowerSettingGuid,PUCHAR Buffer,LPDWORD BufferSize))::GetProcAddress(hLib, "PowerReadFriendlyName");
pPowerDuplicateScheme = (DWORD (WINAPI *)(HKEY,const GUID *,GUID **))::GetProcAddress(hLib, "PowerDuplicateScheme");
pPowerWriteFriendlyName = (DWORD (WINAPI *)(HKEY,const GUID *,const GUID *,const GUID *,UCHAR *,DWORD))::GetProcAddress(hLib, "PowerWriteFriendlyName");
pPowerWriteACValueIndex = (DWORD (WINAPI *)(HKEY,const GUID *,const GUID *,const GUID *,DWORD))::GetProcAddress(hLib, "PowerWriteACValueIndex");
pPowerWriteDCValueIndex = (DWORD (WINAPI *)(HKEY,const GUID *,const GUID *,const GUID *,DWORD))::GetProcAddress(hLib, "PowerWriteDCValueIndex");
pPowerSetActiveScheme = (DWORD (WINAPI *)(HKEY,const GUID *))::GetProcAddress(hLib, "PowerSetActiveScheme");
pPowerDeleteScheme = (DWORD (WINAPI *)(HKEY,const GUID *))::GetProcAddress(hLib, "PowerDeleteScheme");
if (pPowerGetActiveScheme == NULL ||
pPowerReadFriendlyName == NULL ||
pPowerDuplicateScheme == NULL ||
pPowerWriteFriendlyName == NULL ||
pPowerWriteACValueIndex == NULL ||
pPowerWriteDCValueIndex == NULL ||
pPowerSetActiveScheme == NULL ||
pPowerDeleteScheme == NULL)
{
dwRet = GetLastError();
goto _Exit;
}
if (bDisable)
{
if (!bModify)
{
if (NULL != OriginalValue)
{
LocalFree(OriginalValue);
OriginalValue = NULL;
}
pPowerGetActiveScheme(NULL, &OriginalValue);
dwSize = MAX_PATH*sizeof(WCHAR);
dwRet = pPowerReadFriendlyName(NULL, OriginalValue, NULL, NULL, (PUCHAR)szTmp, &dwSize);
if (0 != lstrcmpiW(szTmp, L"FUCKPOWER"))
{
dwRet = pPowerDuplicateScheme(NULL, OriginalValue, &pid);
if ((0 != dwRet) && (183 != dwRet))
{
LocalFree(OriginalValue);
OriginalValue = NULL;
goto _Exit;
}
pPowerWriteFriendlyName(NULL, &id, NULL, NULL, (UCHAR*)L"FUCKPOWER", (lstrlenW(L"FUCKPOWER")+1)*2);
}
//显示器
pPowerWriteACValueIndex(NULL, &id, &GUID_VIDEO_SUBGROUP, &GUID_VIDEO_POWERDOWN_TIMEOUT, 0);
pPowerWriteDCValueIndex(NULL, &id, &GUID_VIDEO_SUBGROUP, &GUID_VIDEO_POWERDOWN_TIMEOUT, 0);
//硬盘
pPowerWriteACValueIndex(NULL, &id, &GUID_DISK_SUBGROUP, &GUID_DISK_POWERDOWN_TIMEOUT, 0);
pPowerWriteDCValueIndex(NULL, &id, &GUID_DISK_SUBGROUP, &GUID_DISK_POWERDOWN_TIMEOUT, 0);
//睡眠
pPowerWriteACValueIndex(NULL, &id, &GUID_SLEEP_SUBGROUP, &GUID_STANDBY_TIMEOUT, 0);
pPowerWriteDCValueIndex(NULL, &id, &GUID_SLEEP_SUBGROUP, &GUID_STANDBY_TIMEOUT, 0);
//待机
pPowerWriteACValueIndex(NULL, &id, &GUID_SLEEP_SUBGROUP, &GUID_HIBERNATE_TIMEOUT, 0);
pPowerWriteDCValueIndex(NULL, &id, &GUID_SLEEP_SUBGROUP, &GUID_HIBERNATE_TIMEOUT, 0);
dwRet = pPowerSetActiveScheme(NULL, &id);
if (0 != dwRet)
{
LocalFree(OriginalValue);
OriginalValue = NULL;
pPowerDeleteScheme(NULL, &id);
goto _Exit;
}
bModify = TRUE;
}
}
else
{
if (bModify)
{
bModify = FALSE;
if (NULL != OriginalValue)
{
if (*OriginalValue != id)
{
pPowerSetActiveScheme(NULL, OriginalValue);
pPowerDeleteScheme(NULL, &id);
}
LocalFree(OriginalValue);
OriginalValue = NULL;
}
else
{
pPowerDeleteScheme(NULL, &id);
}
}
}
_Exit:
if (NULL != hLib)
{
::FreeLibrary(hLib);
}
return dwRet;
}
{
DWORD dwRet = 0;
static const GUID id = { 0x9fb78f01, 0xc2c4, 0x4cb5, { 0x80, 0x31, 0xdc, 0x63, 0xc8, 0xa3, 0x62, 0x1 } };
static GUID* OriginalValue = NULL;
static BOOL bModify = FALSE;
DWORD (WINAPI *pPowerGetActiveScheme)(HKEY UserRootPowerKey,GUID** ActivePolicyGuid) = NULL;
DWORD (WINAPI *pPowerReadFriendlyName)(HKEY RootPowerKey,const GUID* SchemeGuid,const GUID* SubGroupOfPowerSettingsGuid,const GUID* PowerSettingGuid,PUCHAR Buffer,LPDWORD BufferSize) = NULL;
DWORD (WINAPI *pPowerDuplicateScheme)(HKEY RootPowerKey,const GUID* SourceSchemeGuid,GUID** DestinationSchemeGuid) = NULL;
DWORD (WINAPI *pPowerWriteFriendlyName)(HKEY RootPowerKey,const GUID* SchemeGuid,const GUID* SubGroupOfPowerSettingsGuid,const GUID* PowerSettingGuid,UCHAR* Buffer,DWORD BufferSize) = NULL;
DWORD (WINAPI *pPowerWriteACValueIndex)(HKEY RootPowerKey,const GUID* SchemeGuid,const GUID* SubGroupOfPowerSettingsGuid,const GUID* PowerSettingGuid,DWORD AcValueIndex) = NULL;
DWORD (WINAPI *pPowerWriteDCValueIndex)(HKEY RootPowerKey,const GUID* SchemeGuid,const GUID* SubGroupOfPowerSettingsGuid,const GUID* PowerSettingGuid,DWORD DcValueIndex) = NULL;
DWORD (WINAPI *pPowerSetActiveScheme)(HKEY UserRootPowerKey,const GUID* SchemeGuid) = NULL;
DWORD (WINAPI *pPowerDeleteScheme)(HKEY RootPowerKey,const GUID* SchemeGuid) = NULL;
GUID* pid = (GUID*)&id;
WCHAR szTmp[MAX_PATH] = {0};
DWORD dwSize = 0;
HMODULE hLib = ::LoadLibrary(_T("PowrProf.dll"));
if (NULL == hLib)
{
dwRet = GetLastError();
goto _Exit;
}
pPowerGetActiveScheme = (DWORD (WINAPI *)(HKEY,GUID **))::GetProcAddress(hLib, "PowerGetActiveScheme");
pPowerReadFriendlyName = (DWORD (WINAPI *)(HKEY RootPowerKey,const GUID* SchemeGuid,const GUID* SubGroupOfPowerSettingsGuid,const GUID* PowerSettingGuid,PUCHAR Buffer,LPDWORD BufferSize))::GetProcAddress(hLib, "PowerReadFriendlyName");
pPowerDuplicateScheme = (DWORD (WINAPI *)(HKEY,const GUID *,GUID **))::GetProcAddress(hLib, "PowerDuplicateScheme");
pPowerWriteFriendlyName = (DWORD (WINAPI *)(HKEY,const GUID *,const GUID *,const GUID *,UCHAR *,DWORD))::GetProcAddress(hLib, "PowerWriteFriendlyName");
pPowerWriteACValueIndex = (DWORD (WINAPI *)(HKEY,const GUID *,const GUID *,const GUID *,DWORD))::GetProcAddress(hLib, "PowerWriteACValueIndex");
pPowerWriteDCValueIndex = (DWORD (WINAPI *)(HKEY,const GUID *,const GUID *,const GUID *,DWORD))::GetProcAddress(hLib, "PowerWriteDCValueIndex");
pPowerSetActiveScheme = (DWORD (WINAPI *)(HKEY,const GUID *))::GetProcAddress(hLib, "PowerSetActiveScheme");
pPowerDeleteScheme = (DWORD (WINAPI *)(HKEY,const GUID *))::GetProcAddress(hLib, "PowerDeleteScheme");
if (pPowerGetActiveScheme == NULL ||
pPowerReadFriendlyName == NULL ||
pPowerDuplicateScheme == NULL ||
pPowerWriteFriendlyName == NULL ||
pPowerWriteACValueIndex == NULL ||
pPowerWriteDCValueIndex == NULL ||
pPowerSetActiveScheme == NULL ||
pPowerDeleteScheme == NULL)
{
dwRet = GetLastError();
goto _Exit;
}
if (bDisable)
{
if (!bModify)
{
if (NULL != OriginalValue)
{
LocalFree(OriginalValue);
OriginalValue = NULL;
}
pPowerGetActiveScheme(NULL, &OriginalValue);
dwSize = MAX_PATH*sizeof(WCHAR);
dwRet = pPowerReadFriendlyName(NULL, OriginalValue, NULL, NULL, (PUCHAR)szTmp, &dwSize);
if (0 != lstrcmpiW(szTmp, L"FUCKPOWER"))
{
dwRet = pPowerDuplicateScheme(NULL, OriginalValue, &pid);
if ((0 != dwRet) && (183 != dwRet))
{
LocalFree(OriginalValue);
OriginalValue = NULL;
goto _Exit;
}
pPowerWriteFriendlyName(NULL, &id, NULL, NULL, (UCHAR*)L"FUCKPOWER", (lstrlenW(L"FUCKPOWER")+1)*2);
}
//显示器
pPowerWriteACValueIndex(NULL, &id, &GUID_VIDEO_SUBGROUP, &GUID_VIDEO_POWERDOWN_TIMEOUT, 0);
pPowerWriteDCValueIndex(NULL, &id, &GUID_VIDEO_SUBGROUP, &GUID_VIDEO_POWERDOWN_TIMEOUT, 0);
//硬盘
pPowerWriteACValueIndex(NULL, &id, &GUID_DISK_SUBGROUP, &GUID_DISK_POWERDOWN_TIMEOUT, 0);
pPowerWriteDCValueIndex(NULL, &id, &GUID_DISK_SUBGROUP, &GUID_DISK_POWERDOWN_TIMEOUT, 0);
//睡眠
pPowerWriteACValueIndex(NULL, &id, &GUID_SLEEP_SUBGROUP, &GUID_STANDBY_TIMEOUT, 0);
pPowerWriteDCValueIndex(NULL, &id, &GUID_SLEEP_SUBGROUP, &GUID_STANDBY_TIMEOUT, 0);
//待机
pPowerWriteACValueIndex(NULL, &id, &GUID_SLEEP_SUBGROUP, &GUID_HIBERNATE_TIMEOUT, 0);
pPowerWriteDCValueIndex(NULL, &id, &GUID_SLEEP_SUBGROUP, &GUID_HIBERNATE_TIMEOUT, 0);
dwRet = pPowerSetActiveScheme(NULL, &id);
if (0 != dwRet)
{
LocalFree(OriginalValue);
OriginalValue = NULL;
pPowerDeleteScheme(NULL, &id);
goto _Exit;
}
bModify = TRUE;
}
}
else
{
if (bModify)
{
bModify = FALSE;
if (NULL != OriginalValue)
{
if (*OriginalValue != id)
{
pPowerSetActiveScheme(NULL, OriginalValue);
pPowerDeleteScheme(NULL, &id);
}
LocalFree(OriginalValue);
OriginalValue = NULL;
}
else
{
pPowerDeleteScheme(NULL, &id);
}
}
}
_Exit:
if (NULL != hLib)
{
::FreeLibrary(hLib);
}
return dwRet;
}
2 0
- win7 设置电源管理方案
- VC++创建WIN7电源管理方案
- 设置windows电源管理
- 批处理修改电源管理方案
- 批处理修改电源管理方案
- 电源管理方案APM和ACPI比较
- 电源管理方案APM和ACPI比较
- 电源管理方案APM和ACPI比较 .
- 普通用户如何修改电源管理方案
- 电源管理方案APM和ACPI比较
- 电源管理方案APM和ACPI比较
- 电源管理方案APM和ACPI比较
- 【Win7系统的电源设置功能】
- vista系统电源管理的几个配置方案
- 利用标准化的可编程电源管理方案优化PCB设计
- 手机连接扫瞄头方案(续)-电源管理
- xp、win7下如何取消屏保、取消电源管理
- 电源管理
- 数据库视图
- Python用额外的参数控制行为
- 迭代器
- user space串口编程
- Android学习路线
- win7 设置电源管理方案
- 自定义HtmlTextView,让textView显示多种颜色的文字
- EventBus使用详解
- CentOS7 (精简操作指令)
- W/ResourceType: No package identifier when getting value for resource number 0x00000034
- [ReactNative] 02--style & width/height & FlexBox
- 准备学习的技能
- python模块与包的导入
- Linux编程基础之epoll简析