相关疑难解决方法(0)

如何使用xlib识别顶级X11窗口?

我正在尝试在X11会话中获取所有顶级桌面窗口的列表.基本上,我想获得窗口管理器应用程序切换UI中显示的所有窗口的列表(通常在用户按下ALT + TAB时打开).

我之前从未做过任何X11编程,但到目前为止,我已经设法通过整个窗口列表进行枚举,代码看起来像这样:

void CSoftwareInfoLinux::enumerateWindows(Display *display, Window rootWindow)
{
    Window parent;
    Window *children;
    Window *child;
    quint32 nNumChildren;

    XTextProperty wmName;
    XTextProperty wmCommand;

    int status = XGetWMName(display, rootWindow, &wmName);
    if (status && wmName.value && wmName.nitems)
    {
        int i;
        char **list;
        status = XmbTextPropertyToTextList(display, &wmName, &list, &i);
        if (status >= Success && i && *list)
        {
            qDebug() << "Found window with name:" << (char*) *list;
        }

        status = XGetCommand(display, rootWindow, &list, &i);
        if (status >= Success && i && *list)
        {
            qDebug() …
Run Code Online (Sandbox Code Playgroud)

c++ x11 xlib icccm ewmh

13
推荐指数
2
解决办法
1万
查看次数

如何混合Qt,C++和Obj-C/Cocoa

我在Mac上有一个纯C++/Qt项目,但我现在发现我需要调用一些只在Cocoa API中可用的方法.按照此处列出的说明:

http://el-tramo.be/blog/mixing-cocoa-and-qt

我在".m"文件中有一个C++类实现.作为测试,我的"foo.m"文件包含以下代码(#include为清晰起见,已删除相关方法):

int foo::getMagicNumber()
{
    NSCursor *cursor = [NSCursor new];
}
Run Code Online (Sandbox Code Playgroud)

显然,我需要将.m文件添加到名为的qmake变量中OBJECTIVE_SOURCES.我的项目.pro文件如下所示:

TARGET = testApp
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
OBJECTIVE_SOURCES += foo.m
HEADERS += test.h
Run Code Online (Sandbox Code Playgroud)

但是,每当我尝试编译项目时,都会收到以下错误:

foo.h:4expected '=', ',', ';', 'asm' or '__attribute__' before 'foo'

这是指向class foo我的头文件中的文件.如果我从.m文件中删除所有cocoa调用,并将.m文件移动到SOURCES我的Qt .pro文件的部分,一切都按预期工作.

我正在使用Qt 4.6.0.

我的问题是:将Cocoa调用与Qt/C++集成的推荐方法是什么,以及我在上面的例子中做错了什么?

c++ cocoa qt qmake objective-c

13
推荐指数
1
解决办法
9393
查看次数

Mac/Cocoa - 使用Accessibility API获取窗口列表

我想使用Accessibility API获取给定应用程序(外部)的所有窗口的列表.

目标是检查某个窗口是否打开.首先,我检查应用程序是否正在运行(使用[NSWorkspace runningApplications]并检查每个应用程序),然后我想检查为该应用程序打开的每个窗口的标题栏文本.

PS

所以我可以使用PID为app创建一个元素:

AXUIElementRef app = AXUIElementCreateApplication(pid);
Run Code Online (Sandbox Code Playgroud)

但我该怎么办呢?我是否朝着正确的方向前进?不能相信它很难找到这方面的例子.

cocoa accessibility

6
推荐指数
2
解决办法
9183
查看次数

获取已打开的Windows可可列表

我是Cocoa的新手,我想知道如何获得所有打开窗口的列表.我不是在谈论运行程序,因为这将是一件容易的事.我想列出窗口,例如,如果我打开10 pdf打开预览,我的程序应该能够检索包含所有这些pdf的列表.我还想知道是否有一些API可用于与已经打开的窗口进行交互(并且可能移动它们或做其他事情)来自外部应用程序.谢谢.

macos cocoa

5
推荐指数
3
解决办法
4216
查看次数

标签 统计

cocoa ×3

c++ ×2

accessibility ×1

ewmh ×1

icccm ×1

macos ×1

objective-c ×1

qmake ×1

qt ×1

x11 ×1

xlib ×1