【问题标题】:windows lock and unlock event in C++ [duplicate]C ++中的Windows锁定和解锁事件[重复]
【发布时间】:2020-01-12 11:25:31
【问题描述】:

我想创建一个程序,在我离开或离开计算机后立即“锁定”我的工作站。并在用户登录后自动重新启动。

我正在使用 Opencv 来跟踪我的运动及其工作情况。

现在我想知道如何在用户使用 c++ 登录后立即再次自动启动函数

我正在使用

LockWorkStation();

锁定我的系统

我有一个来自
Programmatically Determine a Duration of a Locked Workstation?

的 C# 实现
const int SessionUnlockParam = 0x8;

if (m.WParam.ToInt32() == SessionUnlockParam)
{OnSessionUnlock(); // Do something when unlocked
}

void OnSessionUnlock()
{
 // Do something......  
}

谁能告诉我如何在 C++ 中做到这一点 以及使用哪些库

如何在 C++ 中访问事件 ID 如:“Event_ID = 4801 - 工作站已解锁”。

适用于 Windows 8

【问题讨论】:

  • 从技术上讲,请求库与堆栈溢出无关。但是,我看不出为什么您的其余问题不会成为主题。不过我不知道答案。
  • 我不相信这实际上是检查工作站是否被锁定的重复。 Muhammad 希望收到有关会话更改的通知,链接的解决方案需要轮询。
  • 我试过这个stackoverflow.com/questions/29326685/… 但它在visual studio 2015 上不起作用

标签: c++ windows


【解决方案1】:

您可以使用WTSRegisterSessionNotification 注册一个窗口以接收会话更改事件。

然后侦听 wParam 值为 WTS_SESSION_UNLOCK 的 WM_WTSSESSION_CHANGE。

【讨论】:

  • 感谢您的早期回复,实际上我正在使用 C++,如果您能告诉我如何实现它,我将不胜感激
  • 我是否必须下载或配置任何 .dll 或库
  • 您确实需要链接到库 Wtsapi32.lib。
  • 已经做到了。
  • 查看链接了解详情。它采用将接收事件的窗口句柄和一个值为 NOTIFY_FOR_THIS_SESSION 或 NOTIFY_FOR_ALL_SESSIONS 的标志。假设您有一个标准的 win32 消息循环并为窗口句柄设置了 WndProc,您可以在那里接收消息。
猜你喜欢
  • 2018-08-09
  • 1970-01-01
  • 2010-10-16
  • 2018-11-18
  • 2012-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多