首页 > 系统相关 >用C++判断Windows是否锁屏

用C++判断Windows是否锁屏

时间:2024-06-13 22:11:59浏览次数:12  
标签:hDesk 锁屏 Windows HDESK blog static C++ include hUser32

点击查看代码
#include "windows.h"
#include "Windows.h"
#include "Wtsapi32.h"
#include <tchar.h>
#pragma comment(lib, "WtsApi32.lib")  
 
using namespace std;
 
typedef HDESK(WINAPI *PFNOPENDESKTOP)(LPSTR, DWORD, BOOL, ACCESS_MASK);
typedef BOOL(WINAPI *PFNCLOSEDESKTOP)(HDESK);
typedef BOOL(WINAPI *PFNSWITCHDESKTOP)(HDESK);
 
bool DLL_isScreenLocked()
{   
	BOOL bLocked = FALSE;
 
	static HMODULE hUser32 = LoadLibrary(_T("user32.dll"));
 
	if (hUser32)
	{
		static PFNOPENDESKTOP fnOpenDesktop = (PFNOPENDESKTOP)GetProcAddress(hUser32, "OpenDesktopA");
		static PFNCLOSEDESKTOP fnCloseDesktop = (PFNCLOSEDESKTOP)GetProcAddress(hUser32, "CloseDesktop");
		static PFNSWITCHDESKTOP fnSwitchDesktop = (PFNSWITCHDESKTOP)GetProcAddress(hUser32, "SwitchDesktop");
 
		if (fnOpenDesktop && fnCloseDesktop && fnSwitchDesktop)
		{
			HDESK hDesk = fnOpenDesktop("Default", 0, FALSE, DESKTOP_SWITCHDESKTOP);
 
			if (hDesk)
			{
				bLocked = !fnSwitchDesktop(hDesk);
				fnCloseDesktop(hDesk);
			}
		}
	}
 
	if (bLocked == FALSE)
	{
		return false;
	}
	else
	{
		return true;
	}
}

https://stackoverflow.com/questions/29326685/c-check-if-computer-is-locked/32115698#32115698

https://blog.csdn.net/steppedby/article/details/76887383?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-4-76887383-blog-129450970.235v43pc_blog_bottom_relevance_base3&spm=1001.2101.3001.4242.3&utm_relevant_index=7

标签:hDesk,锁屏,Windows,HDESK,blog,static,C++,include,hUser32
From: https://www.cnblogs.com/djyq/p/18246864

相关文章

  • 蓝牙BLE上位机工具开发理论线索梳理_1.Win32设备(Windows 属性系统)
    1.Windows属性系统     Windows属性系统是一个可扩展的数据定义读/写系统,它提供一种统一的方式来表达有关Shell项的元数据。WindowsVista及更高版本中的Windows属性系统使你能够存储和检索Shell项的元数据。Shell项是任何单个内容,例如文件、文件夹、电......
  • c++防止头文件重复
    在C++的头文件中,为了防止重复包含,需要使用预处理指令#pragmaonce或者传统的条件编译方式。下面分别详细说明这两种方式的写法及作用:#pragmaonce使用#pragmaonce指令:#pragmaonce是一种简便的方式,可以确保头文件只被编译一次。在头文件的开头加入#pragmaonce即可,示例......
  • 【C++修行之道】类和对象(六)再谈构造函数(初始化列表)| explicit关键字 | static成员 |
    目录一、再谈构造函数1.1构造函数体赋值1.2初始化列表1.所有的成员,既可以在初始化列表初始化,也可以在函数体内初始化2.每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次)3.类中包含以下成员,必须放在初始化列表位置进行初始化:声明给缺省值也可以是其......
  • 【C++/STL】stack和queue(容器适配器、优先队列、双端队列)
      ......
  • usoclient命令 参数 是一个用于管理 Windows Update 的命令行工具,可以在 Windows 10
    usoclient是一个用于管理WindowsUpdate的命令行工具,可以在Windows10和WindowsServer操作系统中使用。它提供了一种在命令行界面下执行Windows更新任务的方法,从而允许管理员和技术支持人员以更灵活和自动化的方式处理更新。为什么使用 usoclient 命令?自动化更新......
  • SFC(System File Checker)是Windows操作系统中的一个实用程序,用于扫描和修复受损或丢失
    SFC(SystemFileChecker)是Windows操作系统中的一个实用程序,用于扫描和修复受损或丢失的系统文件。以下是一些常见的SFC命令及其用途:sfc/scannow描述:扫描所有受保护的系统文件,并尽可能修复文件。用法:在命令提示符(以管理员身份运行)中输入 sfc/scannow。sfc/verifyon......
  • C++的算法:割点与割边
            在图论中,割点与割边是图的重要性质,它们在图的连通性、网络流等问题中扮演着关键角色。在C++中,我们可以通过深度优先搜索(DFS)等算法来判定一个图中的割点与割边。        割点,又称关节点或桥接点,是指在无向连通图中,如果删除某个顶点后,图的连通分量数增......
  • 禁止Windows用户使用cmd、powershell、注册表、*.bat脚本、修改网卡IP等操作
    如果你想让你的计算机或域控用户的计算机禁止使用cmd、powershell、注册表、bat脚本、修改网卡IP等操作1. 使用本地组策略(如果是本地用户)如果是非域用户,如果你在Windows10Pro或更高版本上,可以使用本地组策略(LocalGroupPolicy)来限制访问。打开“本地组策略编辑器”(gpedit.......
  • C#如何查看/写入日志到Windows事件查看器
    Windows事件日志Windows操作系统将与计算机的系统性能、应用程序和安全方面相关的每个事件记录在C:\WINDOWS\system32\winevt的日志中。事件查看器从这些原始事件日志中读取信息,然后以可读格式呈现信息。打开Windows事件查看器的方法是1、运行输入eventvwr2、Windows+X打......
  • C++基础知识总结
    一.c++的初始化intmian(){inta=10;intb(10);//用()来初始化intc{10};//用{}来初始化,较统一标准return0;}二.c++语言输入与输出#include<iostream>//输入输出流usingnamespacestd;intmain(){inta{0};charch{'0'};cin>>a>>ch;//提取符cout<<&......