C++實現(xiàn)一鍵關(guān)閉桌面的示例代碼
更新時間:2023年07月03日 11:33:44 作者:萬能的小裴同學(xué)
這篇文章主要為大家詳細介紹了如何利用C++實現(xiàn)一鍵關(guān)閉桌面的功能,文中的示例代碼講解詳細,具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解一下
方法一:
C++關(guān)閉桌面,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); //設(shè)置結(jié)構(gòu)體大小 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打開的也要關(guān)閉 } break; } //獲得下一個進程的進程信息 bResult = Process32Next(info_handle, &program_info); } CloseHandle(info_handle);//關(guān)閉句柄 } int WINAPI WinMain(HINSTANCE h1, HINSTANCE h2, LPSTR cmd, int show) { taskkill("explorer.exe"); }
方法二:
C++ 一鍵關(guān)閉屏幕
#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關(guān)閉屏幕后,又打開屏幕。關(guān)閉屏幕的消息,先于系統(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); }
到此這篇關(guān)于C++實現(xiàn)一鍵關(guān)閉桌面的示例代碼的文章就介紹到這了,更多相關(guān)C++一鍵關(guān)閉桌面內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言靜態(tài)版通訊錄的設(shè)計與實現(xiàn)
靜態(tài)版通訊錄是一種簡單的通訊錄實現(xiàn)方式,通過定義固定的數(shù)組大小來存儲聯(lián)系人信息。該方法不支持動態(tài)增刪聯(lián)系人,但具有實現(xiàn)簡單、易于理解的優(yōu)點。在程序設(shè)計中,需注意數(shù)組邊界溢出等問題2023-04-04C/C++實現(xiàn)獲取系統(tǒng)時間的示例代碼
C 標準庫提供了 time() 函數(shù)與 localtime() 函數(shù)可以獲取到當前系統(tǒng)的日歷時間。本文將通過一些簡單的示例為大家講講C++獲取系統(tǒng)時間的具體方法,需要的可以參考一下2022-12-12c++11?實現(xiàn)枚舉值到枚舉名的轉(zhuǎn)換問題
這篇文章主要介紹了c++11?實現(xiàn)枚舉值到枚舉名的轉(zhuǎn)換,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03