⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wakeupfromidledlg.cpp

📁 在嵌入系統中將系統從IDLE喚起
💻 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 + -