在我的Qt5 C ++客户端中,我想检测运行Windows或OSX的用户何时锁定了屏幕,然后同时锁定我的客户端应用程序。
我还没有遇到提供此功能的Qt5类,所以我想知道是否需要编写特定于操作系统的库。有没有人有这样的经历?
谢谢!
答案 0 :(得分:0)
在Windows上,您可以使用以下代码:
mywidget.cpp
#include "mywidget.h"
#include <Windows.h>
#include <WtsApi32.h>
#include <QDebug>
MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{
WTSRegisterSessionNotification((HWND)this->winId(), NOTIFY_FOR_THIS_SESSION);
}
MyWidget::~MyWidget()
{
WTSUnRegisterSessionNotification((HWND)this->winId());
}
bool MyWidget::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
if (eventType != "windows_generic_MSG") return false;
MSG *msg = static_cast<MSG*>(message);
switch (msg->message) {
case WM_WTSSESSION_CHANGE:
qDebug() << "session change: " << msg->wParam;
}
return false;
}
project.pro
...
LIBS += -lwtsapi32
...