C++實現(xiàn)一鍵關閉桌面的示例代碼
更新時間:2023年07月03日 11:33:44 作者:萬能的小裴同學
這篇文章主要為大家詳細介紹了如何利用C++實現(xiàn)一鍵關閉桌面的功能,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解一下
方法一:
C++關閉桌面,explorer.exe
#include<Windows.h>
#include <TlHelp32.h>
#include"resource.h"
#pragma warning(disable:4996)
void taskkill(const char * name)
{
HANDLE info_handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //拍攝系統(tǒng)中所有進程的快照
if (info_handle == INVALID_HANDLE_VALUE)
{
MessageBox(0, TEXT("獲取進程句柄失?。?), TEXT("錯誤"), 0);
return;
}
PROCESSENTRY32W program_info;
program_info.dwSize = sizeof(PROCESSENTRY32W); //設置結構體大小
int bResult = Process32FirstW(info_handle, &program_info); //獲取所有進程中第一個進程的信息
if (!bResult)
{
MessageBox(0, TEXT("獲取進程句柄失??!"), TEXT("錯誤"), 0);
return;
}
char tmp[MAX_PATH];
HANDLE hProcess;
while (bResult)
{
wchar_t *pro_name = program_info.szExeFile;
wcstombs(tmp, pro_name, MAX_PATH);
if (!strcmp(tmp, name))
{
hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, program_info.th32ProcessID);
if (hProcess) {
TerminateProcess(hProcess, 0);
CloseHandle(hProcess);//OpenProcess打開的也要關閉
}
break;
}
//獲得下一個進程的進程信息
bResult = Process32Next(info_handle, &program_info);
}
CloseHandle(info_handle);//關閉句柄
}
int WINAPI WinMain(HINSTANCE h1, HINSTANCE h2, LPSTR cmd, int show)
{
taskkill("explorer.exe");
}
方法二:
C++ 一鍵關閉屏幕
#include <windows.h>
#include "resource.h"
LRESULT CALLBACK WindowProc( HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// 延時防止雙擊exe關閉屏幕后,又打開屏幕。關閉屏幕的消息,先于系統(tǒng)的雙擊消息;
Sleep(200);
::SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM)2);
static TCHAR szAppName[] = TEXT("HelloWin");
WNDCLASS wndClass;
wndClass.style = CS_HREDRAW | CS_VREDRAW;
wndClass.lpfnWndProc = WindowProc;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hInstance = hInstance;
wndClass.hIcon = LoadIcon(hInstance, (char*)IDI_ICON1);
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndClass.lpszMenuName = NULL;
wndClass.lpszClassName = szAppName;
if (!RegisterClass(&wndClass))
{
MessageBox(NULL, TEXT("注冊窗口失敗!"), TEXT(""), 0);
return 0;
}
HWND hWnd = CreateWindow(szAppName, TEXT("Hello Program"),
WS_OVERLAPPEDWINDOW, 0, 0, 0, 0,
NULL, NULL, hInstance, NULL);
::SendMessage(hWnd, WM_DESTROY, 0, NULL);
return 0;
}
LRESULT CALLBACK WindowProc( HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch (uMsg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}到此這篇關于C++實現(xiàn)一鍵關閉桌面的示例代碼的文章就介紹到這了,更多相關C++一鍵關閉桌面內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C++實現(xiàn)查找中位數(shù)的O(N)算法和Kmin算法
這篇文章主要介紹了C++實現(xiàn)查找中位數(shù)的O(N)算法和Kmin算法,對于C++程序算法設計有一定的借鑒價值,需要的朋友可以參考下2014-09-09
C++?LeetCode1827題解最少操作使數(shù)組遞增
這篇文章主要為大家介紹了C++?LeetCode1827題解最少操作使數(shù)組遞增示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12
C語言putenv()函數(shù)和getenv()函數(shù)的使用詳解
這篇文章主要介紹了C語言putenv()函數(shù)和getenv()函數(shù)的使用詳解,用來進行環(huán)境變量的相關操作,需要的朋友可以參考下2015-09-09
簡要解讀C++的動態(tài)和靜態(tài)關聯(lián)以及虛析構函數(shù)
這篇文章主要介紹了簡要解讀C++的動態(tài)和靜態(tài)關聯(lián)以及虛析構函數(shù),析構函數(shù)在C++編程中平時并不是太常用,需要的朋友可以參考下2015-09-09

