Close unused device

Some methods:
1、SetTimer,send key msg at intervals:
keybd_event(VK_F24,0,KEYEVENTF_KEYUP| KEYEVENTF_SILENT,0);
   [OK]
2、SystemParametersInfo(SPI_SETBATTERYIDLETIMEOUT,dwTime,0,TRUE)
   [FAILED]
3、SetPowerRequirement(_T("BKL1:"), D0, POWER_NAME, NULL, 0)
   [FAILED]
   come from msnews group,no effect.
4、PowerManager/ReloadActivityTimeouts
   moidfy [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Power\Timeouts],then call the following codes:
   HANDLE hEvent = CreateEvent(NULL, FALSE, FALSE,_T("PowerManager/ReloadActivityTimeouts"));
 if(hEvent != NULL)
 {
  
  SetEvent(hEvent);
  
  CloseHandle(hEvent);
  
    }

 

Sample:

#define RK_SYSTEM_CCS_CONTROL_POWER  TEXT("SYSTEM\\CurrentControlSet\\Control\\Power")
#define RV_BATTPOWEROFF  TEXT("BattPowerOff")
#define RV_EXTPOWEROFF  TEXT("ExtPowerOff")

#define RK_SYSTEM_CCS_CONTROL_POWER2  TEXT("SYSTEM\\CurrentControlSet\\Control\\Power\\Timeouts")
#define RV_BATTPOWEROFF2  TEXT("BattSuspendTimeout")
#define RV_EXTPOWEROFF2  TEXT("ACSuspendTimeout")

DWORD dwValue=0;
 HKEY hKey=NULL;
 DWORD   dwDisposition;

 RegCreateKeyEx(HKEY_LOCAL_MACHINE, RK_SYSTEM_CCS_CONTROL_POWER2,(DWORD) 0, TEXT(""), REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, (LPSECURITY_ATTRIBUTES) NULL,&hKey, &dwDisposition);
 
 dwValue = 120;
 RegSetValueEx(hKey,RV_BATTPOWEROFF2, 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD));

 dwValue = 120;
 RegSetValueEx(hKey,RV_EXTPOWEROFF2, 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD));

 RegCloseKey(hKey);

HANDLE hEvent = CreateEvent(NULL, FALSE, FALSE,_T("PowerManager/ReloadActivityTimeouts"));
 if(hEvent != NULL)
 {
  
  SetEvent(hEvent);
  
  CloseHandle(hEvent);
  
    }

Ought to use CreateEvent, not use OpenEvent.

posted @ 2006-06-16 11:06  J's Blog  阅读(311)  评论(0)    收藏  举报