gpt4 book ai didi

c++ - 如何在 Mac OS 的 C/C++/Objective-C 中找出 SystemUIServer 进程的 PID?

转载 作者:行者123 更新时间:2023-11-30 03:56:38 29 4
gpt4 key购买 nike

我需要找出 SystemUIServer 进程在 Mac OS 上的 pid,以便将其交给 AXUIElementCreateApplication(pid);

在 shell 上这很容易通过 ps 实现,但我如何在 C/C++ 或 Objective-C 中实现呢?

最佳答案

我会检查所有正在运行的进程。

pid_t resultPid = -1;
NSArray *runningApplications = [[NSWorkspace sharedWorkspace] runningApplications];
for (NSRunningApplication *app in runningApplications) {
pid_t pid = [app processIdentifier];
if (pid != ((pid_t)-1)) {
AXUIElementRef appl = AXUIElementCreateApplication(pid);
id result = nil;
if(AXUIElementCopyAttributeValue(appl, (CFStringRef)NSAccessibilityTitleAttribute, (void *)&result) == kAXErrorSuccess) {
if([((NSString*)result) isEqualToString:@"SystemUIServer"]){
resultPid = pid;
break;
}
}
}
}

您还可以使用 UIElementUtilities by Apple (它有助于管理 AXUIElementRef 实例)以获取进程的名称。

关于c++ - 如何在 Mac OS 的 C/C++/Objective-C 中找出 SystemUIServer 进程的 PID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28377533/

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