📄 wakeupfromidledlg.cpp
字号:
// WakeUpFromIdleDlg.cpp : implementation file
//
#include "stdafx.h"
#include "WakeUpFromIdle.h"
#include "WakeUpFromIdleDlg.h"
//#include "Pm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CWakeUpFromIdleDlg dialog
CWakeUpFromIdleDlg::CWakeUpFromIdleDlg(CWnd* pParent /*=NULL*/)
: CDialog(CWakeUpFromIdleDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CWakeUpFromIdleDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CWakeUpFromIdleDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CWakeUpFromIdleDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CWakeUpFromIdleDlg, CDialog)
//{{AFX_MSG_MAP(CWakeUpFromIdleDlg)
ON_BN_CLICKED(IDC_BTN_SET, OnBtnSet)
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CWakeUpFromIdleDlg message handlers
BOOL CWakeUpFromIdleDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CenterWindow(GetDesktopWindow()); // center to the hpc screen
// TODO: Add extra initialization here
SetDlgItemInt(IDC_EDIT_MINS, 10, false);
OnBtnSet();
return TRUE; // return TRUE unless you set the focus to a control
}
void CWakeUpFromIdleDlg::OnBtnSet()
{
// TODO: Add your control notification handler code here
int nMins=GetDlgItemInt(IDC_EDIT_MINS, NULL, false);
KillTimer(1);
Sleep(20);
SetTimer(1, nMins*60000, 0);
CString r;
r.Format(_T("Wake up every %d mins."), nMins);
SetDlgItemText(IDC_STATIC_STATUS, r);
SYSTEM_POWER_STATUS_EX sps;
GetSystemPowerStatusEx(&sps, TRUE);
if(sps.BatteryLifePercent <= 100 && sps.BatteryLifePercent >= 0)
{
CString r;
r.Format(_T("Batt Percentage: %d"), sps.BatteryLifePercent);
SetDlgItemText(IDC_STATIC_BATT_PERCENTAGE, r);
}
else
SetDlgItemText(IDC_STATIC_BATT_PERCENTAGE, _T("Can't get correct value."));
}
void CWakeUpFromIdleDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
//SetSystemPowerState(NULL, POWER_STATE_ON, POWER_FORCE);
//IOCTL_POWER_SET
//POWER_STATE_BOOT:error
//POWER_STATE_ON
/*
if(SetSystemPowerState(NULL, POWER_STATE_BOOT, POWER_FORCE) != ERROR_SUCCESS )
{
DWORD dw=GetLastError();
CString r;
r.Format(_T("%d"), dw);
MessageBox(r);
}
*/
/*
keybd_event(VK_UP, 0, 0, 0);
Sleep(100);
keybd_event(VK_UP, 0, KEYEVENTF_KEYUP, 0);
*/
POINT point;
GetCursorPos(&point);
mouse_event(MOUSEEVENTF_LEFTUP, point.x, point.y, 0, 0);
Sleep(100);
mouse_event(MOUSEEVENTF_LEFTDOWN, point.x, point.y, 0, 0);
SYSTEM_POWER_STATUS_EX sps;
GetSystemPowerStatusEx(&sps, TRUE);
if(sps.BatteryLifePercent <= 100 && sps.BatteryLifePercent >= 0)
{
CString r;
r.Format(_T("Batt Percentage: %d"), sps.BatteryLifePercent);
SetDlgItemText(IDC_STATIC_BATT_PERCENTAGE, r);
}
else
SetDlgItemText(IDC_STATIC_BATT_PERCENTAGE, _T("Can't get correct value."));
CDialog::OnTimer(nIDEvent);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -