首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在QT中获取后台应用程序窗口标题?

问如何在QT中获取后台应用程序窗口标题?
EN

Stack Overflow用户
提问于 2018-04-05 01:48:31
回答 1查看 318关注 0票数 1

在我的qt应用程序中,当我按下一个按钮时,我需要显示后台应用程序窗口的标题。目前,我习惯于在调用'setupUi‘之前调用'getBackgroundWindowTitle’函数来处理这个问题。因此,这将为我返回后台应用程序窗口标题。我目前的实现如下

代码语言:javascript
复制
MyWindow::MyWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MyWindow)
{
    g_window_title = getBackgroundWindowTitle();
    ui->setupUi(this);
}

void MyWindow::OnPushbuttonPressed()
{
    ui->labelBackgroundWindowTitle.setText(g_window_title);
}

QString MyWindow::getBackgroundWindowTitle()
{
    char buff[256];
    HWND hwnd = GetForegroundWindow(); //currently this gives my current application window title
    GetWindowText(hwnd, (LPWSTR) buff, 254);
    QString title = QString::fromWCharArray((const wchar_t *)buff);
    return title;
}

但是,这段代码的问题是,当后台应用程序窗口发生变化时,我需要重新启动应用程序才能再次获得背景标题,因为在setupUi调用之前需要调用'getBackgroundWindowTitle‘。

我正在寻找这样的方式随时解决方案,当用户按下按钮,后台应用程序窗口标题应被检索。

有人能帮我修改代码吗?

EN

回答 1

Stack Overflow用户

发布于 2018-04-05 03:49:14

如果它是Z顺序中的前一个(或下一个,请参见链接)窗口,您可以使用:GetNextWindow,如下所示:

代码语言:javascript
复制
QString MyWindow::getBackgroundWindowTitle()
{
    char buff[256];
    HWND myHwnd = GetForegroundWindow();
    HWND hwnd = GetNextWindow(myHwnd, GW_HWNDNEXT);
    GetWindowText(hwnd, (LPWSTR) buff, 254);
    QString title = QString::fromWCharArray((const wchar_t *)buff);
    return title;
}

现在,如果我理解您的问题,您只需要将对getBackgroundWindowTitle的调用移动到您的按钮处理程序:

代码语言:javascript
复制
void MyWindow::OnPushbuttonPressed()
{
    ui->labelBackgroundWindowTitle.setText(getBackgroundWindowTitle());
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49657358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档