C++实现一键关闭桌面的示例代码
更新时间:2023年07月03日 11:33:44 作者:万能的小裴同学
这篇文章主要为大家详细介绍了如何利用C++实现一键关闭桌面的功能,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下
脚本之家 / 编程助手:解决程序员“几乎”所有问题!
脚本之家官方知识库 → 点击立即使用
方法一:
C++关闭桌面,explorer.exe
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #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); //拍摄系统中所有进程的快照 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++ 一键关闭屏幕
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #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关闭屏幕后,又打开屏幕。关闭屏幕的消息,先于系统的双击消息; 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++实现一键关闭桌面的示例代码的文章就介绍到这了,更多相关C++一键关闭桌面内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
完美解决QT QGraphicsView提升到QChartView报错的问题
使用QT提供的QChartView来绘制图表,提升QGraphicsView控件继承QChartView后,然后将QGraphicsView提升到我们自己写的类,怎么才能确保提升后编译不报错呢,下面小编给大家带来了QT QGraphicsView 提升到QChartView报错解决方案,感兴趣的朋友一起看看吧2023-05-05在vs2010中,输出当前文件路径与源文件当前行号的解决方法
本篇文章是对在vs2010中,输出当前文件路径与源文件当前行号的解决方法进行了详细的分析介绍,需要的朋友参考下2013-05-05
最新评论