gpt4 book ai didi

objective-c - 访问屏幕上所有应用程序窗口的 NSWindow.level

转载 作者:行者123 更新时间:2023-12-03 16:28:16 25 4
gpt4 key购买 nike

我正在尝试操作 macOS 的窗口。我找到了以下网址:

  • Move other windows on Mac OS X using Accessibility API
  • Getting Window Number through OSX Accessibility API (核心图形)
  • set the size and position of all windows on the screen in swift
  • How to set an external application always being frontmost on OS X? (未回答)
  • How to convert a Carbon AXUIElementRef to Cocoa NSWindow (未回答)
  • Setting the window level over Accessibility (未回答)
  • How to create an AXUIElementRef from an NSView or NSWindow? (未回答)

  • 这些链接允许通过 macOS 的 Accessibility API 访问应用程序的各个窗口;更具体地说,他们使用 AXUIElementRef元素重新定位窗口。

    在为 macOS 创建应用程序时,我已成功使用以下代码...
    @implementation CustomWindow

    - (id)initWithContentRect:(NSRect)contentRect styleMask:(NSWindowStyleMask)windowStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation
    {
    self = [super initWithContentRect:contentRect styleMask:windowStyle backing:bufferingType defer:deferCreation];
    if(self)
    {
    [self setLevel:kCGDesktopWindowLevel - 1];
    [self setCollectionBehavior:
    (NSWindowCollectionBehaviorCanJoinAllSpaces |
    NSWindowCollectionBehaviorStationary |
    NSWindowCollectionBehaviorIgnoresCycle)];
    }
    return self;
    }

    // ...

    @end

    ...在屏幕的桌面级别放置一个窗口。我正在寻找的是一种通过自定义 Windows 管理器应用程序操作相同窗口级别属性等的方法。换句话说,我想编写一个窗口管理器,它可以操纵屏幕上其他应用程序的窗口级别。

    是,我在我的发现中纠正了这不能做吗?可以通过Core Graphics完成吗?

    另外,我想改变关键和重点的应用程序,但我认为这是可以做到的。

    最佳答案

    你不能真正操纵 CGWindowLevel一个窗口的大小(所有普通窗口都是 kCGNormalWindowLevel ,例如),但是如果您希望更改普通级别窗口相对于其他窗口的顺序,那么您可能正在寻找辅助功能的 kAXRaiseAction , 你可以see in action here .
    如果您只是想查看系统上的所有窗口是什么(以及它们的 CGWindowLevel s,那么 CGWindowListCopyWindowInfo 将为您提供该信息。

    关于objective-c - 访问屏幕上所有应用程序窗口的 NSWindow.level,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48490864/

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