gpt4 book ai didi

QT跟踪用户何时从计算机空闲?

转载 作者:行者123 更新时间:2023-12-04 13:14:25 26 4
gpt4 key购买 nike

我试图弄清楚如何跟踪用户何时从计算机空闲,这不仅意味着我的应用程序。原因是我希望我的应用程序能够在一段时间后将用户设置为“离开”。像 Skype 一样思考,它会在 X 分钟后带你离开。

任何想法如何实现这一点?

编辑

到目前为止我有什么可以跟踪鼠标:

    //Init
mouseTimer = new QTimer();
mouseLastPos = QCursor::pos();
mouseIdleSeconds = 0;

//Connect and Start
connect(mouseTimer, SIGNAL(timeout()), this, SLOT(mouseTimerTick()));
mouseTimer->start(1000);

void MainWindow::mouseTimerTick()
{
QPoint point = QCursor::pos();
if(point != mouseLastPos)
mouseIdleSeconds = 0;
else
mouseIdleSeconds++;

mouseLastPos = point;

//Here you could determine whatever to do
//with the total number of idle seconds.

qDebug() << mouseIdleSeconds;
}

有什么办法可以为此添加键盘吗?

最佳答案

有一些特定于平台的方法可以获取空闲用户通知。你应该几乎总是使用它们,而不是滚动你自己的。

假设您坚持滚动自己的代码。在 X11、OS X 和 Windows 上,应用程序根本不会接收任何针对其他应用程序的事件。 Qt 在监视此类全局事件方面没有提供太多帮助。您需要 Hook 相关的全局事件,并对其进行过滤。这是特定于平台的。

因此,无论您做什么,您都必须编写一些前端 API 来公开您所追求的功能,并编写一个或多个特定于平台的后端。

首选的特定于平台的空闲时间 API 是:

  • 在 Windows 上,GetLastInputInfo ,见 this answer .
  • 在 OS X 上,NSWorkspaceWillSleepNotificationNSWorkspaceDidWakeNotification ,见 this answer .
  • 在 X11 上,它是 the screensaver API :
    /* gcc -o getIdleTime getIdleTime.c -lXss */
    #include <X11/extensions/scrnsaver.h>
    #include <stdio.h>

    int main(void) {
    Display *dpy = XOpenDisplay(NULL);

    if (!dpy) {
    return(1);
    }

    XScreenSaverInfo *info = XScreenSaverAllocInfo();
    XScreenSaverQueryInfo(dpy, DefaultRootWindow(dpy), info);
    printf("%u", info->idle);

    return(0);
    }
  • 关于QT跟踪用户何时从计算机空闲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21901394/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com