// RESTARTDlg.cpp : implementation file
//
#include "stdafx.h"
#include "RESTART.h"
#include "RESTARTDlg.h"
#include <windows.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
void operateWindows(CString strAction);
/////////////////////////////////////////////////////////////////////////////
// CRESTARTDlg dialog
CRESTARTDlg::CRESTARTDlg(CWnd* pParent /*=NULL*/)
: CDialog(CRESTARTDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CRESTARTDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CRESTARTDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CRESTARTDlg)
DDX_Control(pDX, IDC_BUTTON1, m_zhuxiao);
DDX_Control(pDX, IDCLOSE, m_close);
DDX_Control(pDX, IDOK, m_restart);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CRESTARTDlg, CDialog)
//{{AFX_MSG_MAP(CRESTARTDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDCLOSE, OnClose)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRESTARTDlg message handlers
BOOL CRESTARTDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CRESTARTDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CRect rc;
GetClientRect( &rc );// 获取客户区
CPaintDC dc(this);
dc.FillSolidRect(&rc, RGB(0,160,0)); // 填充客户区颜色
CDialog::OnPaint();
}
}
HCURSOR CRESTARTDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CRESTARTDlg::OnOK()
{
operateWindows("自动重启");
}
void operateWindows(CString strAction)
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
if (strAction=="自动关机") ExitWindowsEx(EWX_POWEROFF, 0);
if (strAction=="自动重启") ExitWindowsEx(EWX_REBOOT, 0);
if (strAction=="自动注销") ExitWindowsEx(EWX_LOGOFF, 0);
}
void CRESTARTDlg::OnClose()
{
operateWindows("自动关机");
}
void CRESTARTDlg::OnButton1()
{
operateWindows("自动注销");
}
MFC通过windowsAPI控制计算机关机,注销,重启
2星 需积分: 50 106 浏览量
2017-03-19
10:55:05
上传
评论
收藏 18KB 7Z 举报
飛越無限
- 粉丝: 242
- 资源: 35
最新资源
- Screenshot_20240427_031602.jpg
- 网页PDF_2024年04月26日 23-46-14_QQ浏览器网页保存_QQ浏览器转格式(6).docx
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
- C语言实现直接插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序、计数排序,并带图详解.zip
- 常用工具集参考用于图像等数据处理
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈