📄 myclosesystem.cpp
字号:
// MyCloseSystem.cpp : 实现文件
//
#include "stdafx.h"
#include "ScoreGather.h"
#include "MyCloseSystem.h"
#include ".\myclosesystem.h"
// CMyCloseSystem 对话框
IMPLEMENT_DYNAMIC(CMyCloseSystem, CDialog)
CMyCloseSystem::CMyCloseSystem(CWnd* pParent /*=NULL*/)
: CDialog(CMyCloseSystem::IDD, pParent)
, m_exit(FALSE)
{
}
CMyCloseSystem::~CMyCloseSystem()
{
}
void CMyCloseSystem::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_CHECK1, m_check1);
DDX_Control(pDX, IDC_CHECK2, m_check2);
DDX_Control(pDX, IDC_OK, m_ok);
DDX_Control(pDX, IDCANCEL, m_cancel);
DDX_Control(pDX, IDC_CHECK3, m_check3);
}
BEGIN_MESSAGE_MAP(CMyCloseSystem, CDialog)
ON_BN_CLICKED(IDC_OK, OnBnClickedOk)
ON_BN_CLICKED(IDC_CHECK1, OnBnClickedCheck1)
ON_BN_CLICKED(IDC_CHECK2, OnBnClickedCheck2)
ON_WM_ERASEBKGND()
ON_WM_CTLCOLOR()
ON_BN_CLICKED(IDC_CHECK3, OnBnClickedCheck3)
END_MESSAGE_MAP()
// CMyCloseSystem 消息处理程序
void CMyCloseSystem::OnOK()
{
}
void CMyCloseSystem::OnCancel()
{
CDialog::OnCancel();
}
void CMyCloseSystem::OnBnClickedOk()
{
if(m_check1.GetCheck() || m_check2.GetCheck())
{
HANDLE processHandle=NULL;
DWORD thisProcessID=0;
thisProcessID=GetCurrentProcessId();
if(!thisProcessID)
return;
processHandle=OpenProcess(PROCESS_ALL_ACCESS | STANDARD_RIGHTS_REQUIRED,FALSE,thisProcessID);
if(!processHandle)
return;
HANDLE tokenHandle=NULL;
OpenProcessToken(processHandle,TOKEN_ADJUST_PRIVILEGES,&tokenHandle);
if(!tokenHandle)
return;
CloseHandle(processHandle);
TOKEN_PRIVILEGES tp;
LUID luid;
if(!LookupPrivilegeValue(NULL,"SeShutdownPrivilege",&luid))
return;
tp.PrivilegeCount=1;
tp.Privileges[0].Luid=luid;
tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(tokenHandle,FALSE,&tp,sizeof(TOKEN_PRIVILEGES),(PTOKEN_PRIVILEGES)NULL,(PDWORD)NULL);
if(GetLastError()!=ERROR_SUCCESS)
return;
if(m_check1.GetCheck())
{
if(!ExitWindowsEx(EWX_SHUTDOWN, 0L))
return;
else
m_exit=TRUE;
}
else
{
if(!ExitWindowsEx(EWX_REBOOT, 0L))
return;
else
m_exit=TRUE;
}
}
if(m_check3.GetCheck())
{
if(GetOSVersion()=="Win2000")
{
HINSTANCE hinst=::LoadLibrary("user32.dll");
typedef BOOL (*FUN)(VOID);
FUN fun=(FUN)::GetProcAddress(hinst,"LockWorkStation");
fun();
}
else
AfxMessageBox("本功能只能在Windows2000及以上版本的系统中使用!");
}
CDialog::OnOK();
}
CString CMyCloseSystem::GetOSVersion(void)
{
OSVERSIONINFOEX os;
::ZeroMemory(&os,sizeof(os));
os.dwOSVersionInfoSize=sizeof(os);
::GetVersionEx(reinterpret_cast<LPOSVERSIONINFO>(&os));
if(os.dwPlatformId==VER_PLATFORM_WIN32_NT && os.dwMajorVersion >=5)
return "Win2000"; //win2000以上的版本
if(os.dwPlatformId ==VER_PLATFORM_WIN32_WINDOWS)
return "Win9x";
else
return "Other";
}
BOOL CMyCloseSystem::PreTranslateMessage(MSG* pMsg)
{
m_tooltip.RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}
BOOL CMyCloseSystem::OnInitDialog()
{
CDialog::OnInitDialog();
m_tooltip.Create(this,TTS_ALWAYSTIP);
m_tooltip.Activate(TRUE);
m_tooltip.AddTool(GetDlgItem(IDC_CHECK1),IDS_CHECK1_CLOSE);
m_tooltip.AddTool(GetDlgItem(IDC_CHECK2),IDS_CHECK2_CLOSE);
m_tooltip.AddTool(GetDlgItem(IDC_CHECK3),IDS_CHECK3_CLOSE);
m_tooltip.AddTool(GetDlgItem(IDC_OK),IDS_OK_CLOSE);
m_tooltip.AddTool(GetDlgItem(IDCANCEL),IDS_CANCEL_CLOSE);
return TRUE;
}
void CMyCloseSystem::OnBnClickedCheck1()
{
m_check2.SetCheck(0);
m_check3.SetCheck(0);
}
void CMyCloseSystem::OnBnClickedCheck2()
{
m_check1.SetCheck(0);
m_check3.SetCheck(0);
}
void CMyCloseSystem::OnBnClickedCheck3()
{
m_check1.SetCheck(0);
m_check2.SetCheck(0);
}
BOOL CMyCloseSystem::OnEraseBkgnd(CDC* pDC)
{
CBrush brush(::GetSysColor(COLOR_3DFACE));
CBrush* pOldBrush=pDC->SelectObject(&brush);
CRect rcClip;
pDC->GetClipBox(&rcClip);
pDC->PatBlt(rcClip.left,rcClip.top,rcClip.Width(),rcClip.Height(),PATCOPY);
pDC->SelectObject(pOldBrush);
return TRUE;
}
HBRUSH CMyCloseSystem::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if(nCtlColor!=CTLCOLOR_EDIT)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkMode(TRANSPARENT);
HBRUSH B = CreateSolidBrush(::GetSysColor(COLOR_3DFACE));
return (HBRUSH) B;
}
else
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -