21xrx.com
2025-04-01 06:33:59 Tuesday
文章检索 我的文章 写文章
如何在C++中获取Mac窗口标题?
2023-07-04 19:50:43 深夜i     33     0
C++ Mac 窗口标题 获取

在C++中获取Mac窗口标题可能需要使用Mac OS的特定API或第三方库,但是可以通过以下步骤来获取窗口标题:

1. 使用Cocoa框架中的NSWorkspace类获取当前活动窗口的标识符:

#include <Cocoa/Cocoa.h>
...
NSRunningApplication* currentApp = [NSWorkspace sharedWorkspace].frontmostApplication;
pid_t pid = [currentApp processIdentifier];

2. 使用Application Services框架中的CGWindowListCopyWindowInfo函数获取窗口的列表并遍历这些窗口以查找与上面检索到的进程ID匹配的窗口:

#include <ApplicationServices/ApplicationServices.h>
...
CFArrayRef windows = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kCGNullWindowID);
for (int i=0; i<CFArrayGetCount(windows); i++) {
  NSDictionary* windowInfo = (__bridge NSDictionary*)CFArrayGetValueAtIndex(windows, i);
  pid_t windowPID = [[windowInfo objectForKey:(id)kCGWindowOwnerPID] intValue];
  if (windowPID == pid) {
    NSString* windowTitle = [windowInfo objectForKey:(id)kCGWindowName];
    // do something with the window title
    break;
  }
}

注意:在使用CGWindowListCopyWindowInfo函数时,需要确保应用程序已被授权访问Mac的辅助功能权限。

  
  

评论区

请求出错了