如何判断进程是否在用户界面进程中?

2023-12-09

如何从进程中获取它是 UI(用户界面)进程还是非 ui 进程的信息?

我所说的 UI 进程是指 Finder、Dock、系统 UI 服务器或任何其他具有 UI 界面且由 Window Server 使用的 Mac 应用程序。

我想从 ProcessID 确定此信息。

我正在使用 mac os x。


单纯根据PID是没有办法判断的number具体流程是什么。原因是:进程 ID 在启动时从 PID=1 开始按顺序分配(某种程度上),并且不同系统的启动可能不同。例如,如果 Finder 或 Dock 崩溃并且必须重新启动,进程 ID 也将被重新分配。

如果您可以使用特定的命令运行终端命令pid不过,你已经这样做了:

ps -p <pid> -o ucomm=

您将获得进程的文件名,您可以根据您知道的 UI 进程列表进行检查。例如,这是某些的输出ps我的系统上当前登录会话的命令:

> ps -p 110 -o ucomm=
Dock

> ps -p 112 -o ucomm=
Finder

以下命令将为您提供按进程 ID 顺序排列的进程列表,仅包含名称:

> ps -ax -o pid=,ucomm=
   1 launchd
  10 kextd
  11 DirectoryService
     ...

EDIT:你也许能够按照你的要求去做,尽管这很复杂。This答案提到:

CGWindow.h 中的函数 CGWindowListCopyWindowInfo() 将返回一组字典,每个字典对应与您设置的条件匹配的窗口,包括其他应用程序中的窗口。它只允许您按给定窗口上方的窗口、给定窗口下方的窗口和“屏幕上”窗口进行过滤,但返回的字典包含所属应用程序的进程 ID,您可以使用该进程 ID 将窗口与应用程序进行匹配。

如果你能获得全部CGWindows 及其各自的pids,那么你就会知道pid无需运行所有 UI 应用程序ps at all.

Rahul 已为此方法实现了以下代码,他要求我将其添加到我的答案中:

CFArrayRef UiProcesses()
{
    CFArrayRef  orderedwindows = CGWindowListCopyWindowInfo(kCGWindowListOptionAll, kCGNullWindowID);
    CFIndex count = CFArrayGetCount (orderedwindows);
    CFMutableArrayRef uiProcess = CFArrayCreateMutable (kCFAllocatorDefault , count,  &kCFTypeArrayCallBacks);
    for (CFIndex i = 0; i < count; i++)
    {
        if (orderedwindows)
        {
            CFDictionaryRef windowsdescription = (CFDictionaryRef)CFArrayGetValueAtIndex(orderedwindows, i);
            CFNumberRef windowownerpid  = (CFNumberRef)CFDictionaryGetValue (windowsdescription, CFSTR("kCGWindowOwnerPID"));
            CFArrayAppendValue (uiProcess, windowownerpid);

        }
    }
    return uiProcess;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何判断进程是否在用户界面进程中? 的相关文章

  • 如何并行执行4个shell脚本,我不能使用GNU并行?

    我有4个shell脚本dog sh bird sh cow sh和fox sh 每个文件使用 xargs 并行执行 4 个 wget 来派生一个单独的进程 现在我希望这些脚本本身能够并行执行 由于某些我不知道的可移植性原因 我无法使用 GN
  • iOS App Today 扩展未上传到物理设备

    我正在为我的应用程序创建一个今日小部件http budgt ch http budgt ch因为一些用户要求快速访问关键功能 初步 扩展在 iOS 模拟器上运行良好 安装如下 1 安装最新的容器应用程序 2 安装以 今天 为容器的扩展 但是
  • 保存录制的 AVAudioRecorder 声音文件:现在怎么办? (iOS、Xcode 4)

    在我的应用程序中 我希望用户能够录制一个声音文件并播放它 然后保存该声音文件以供以后使用 我用了本教程 http www techotopia com index php Recording Audio on an iPhone with
  • 从视频创建缩略图 - 提高速度性能 - AVAsset - iPhone [重复]

    这个问题在这里已经有答案了 我正在使用基于以下线程中的代码的代码来生成视频缩略图 从 iPhone SDK 中的视频 URL 或数据获取缩略图 https stackoverflow com questions 1347562 gettin
  • 创建类似于邮件应用程序菜单的 iPhone 弹出菜单

    当您想要回复消息时 我想创建一个类似于邮件应用程序中的弹出菜单 我在多个应用程序中看到过这一点 所以我不确定框架中是否内置了某些内容或一些示例代码 在 Swift 中创建操作表 代码已使用 Swift 5 进行测试 从 iOS 8 开始 U
  • 释放 Core Foundation 对象引用

    我是否需要释放 Core Foundation 对象来清理内存 如果是这样 怎么办 例如 在代码中 ABAddressBookRef addressBook ABAddressBookCreate CFArrayRef peopleArra
  • 最小的 iOS 蓝牙管理器示例

    我一直在构建一个最小的示例 用于使用 iOS 5 0 中的 BluetoothManager 私有框架来检测附近的蓝牙设备 使用此问题中找到的答案 寻找触手可及的通用蓝牙设备 https stackoverflow com question
  • 是否有针对不同屏幕尺寸的单独故事板?

    基本上我已经完成了一个应用程序 我唯一的问题是 ATM 机应用程序在设计时只考虑了 4 英寸显示屏 当在 3 5 英寸模拟器上运行时 应用程序会丢失 0 5 英寸 显然 那么我的问题是 如何在 Xcode 5 中为不同的屏幕尺寸设置不同的故
  • 如何在 NSMutableArray 中实现“按值分组”?

    我正在使用 NSMutableArray 我想像在 SQL 中那样按日期获取值group by log date logMuArray log currenttime 4 30pm log date 11 12 2011 log durat
  • 在 Objective-C 中比较 2 个字符串

    我写了以下代码 if depSelectedIndice gt 1 comSelectedIndice gt 1 NSLog depart elemet d depSelectedIndice NSLog depart elemet d c
  • 使用 iOS 8 自定义键盘发送图像?

    我一直在为 iOS 8 开发自定义键盘 但在尝试使用键盘发送图像时偶然发现了一个问题 我做了一些研究 似乎没有一种简单的方法可以做到这一点UITextDocumentProxy因为只有NSStrings被允许 我是否忽略了使用自定义键盘发送
  • iPhone 应用程序中的异步、同步、线程

    我正处于一个应用程序的设计阶段 该应用程序将利用 REST Web 服务 并且在使用异步 同步和线程方面遇到了困境 这是场景 假设您有三个选项可供深入研究 每个选项都有自己的基于 REST 的资源 我可以使用同步请求延迟加载每个请求 但这会
  • 在横向中自动调整 UITableCells 内容的大小

    在 UITableView 中 我通过 UILabels 将内容添加到单元格中 定义最佳尺寸 与单元格宽度允许的一样大 我注意到只有tableView contentSize width是可靠的 因为cell contentView bou
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 如何处理文件中的特殊字符(ഀ)

    我有一个文件 当我打开它时 它看起来像这样 Notepad A B C D E 31 HB 39 Ph 49 32 FB 38 Ph 59 当我尝试从 WinScp 打开它时 它看起来如下所示 A B C D E 31 HB 39 Ph 4
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • AVAssetExportSession 为零 iPhone 7 - Plus 模拟器

    AVAssetExportSession在 iPhone 6 及以下版本上运行良好 但在 iPhone 7 iPhone 7 Plus 模拟器上运行不佳 Xcode 8 0 这段代码return nil在exportSession中 当在i
  • ios水平居中约束问题?

    I am having hard time in learning constraints auto layout in iOS I have used any width any height I have a storyboard sc
  • 如何将 ios7 通用应用程序升级到基于 Xcode 6 的通用故事板应用程序?

    我目前有一个基于 xcode 5 ios 7 的通用应用程序 因此有两个故事板 我正在考虑将其更新到 ios 8 有没有办法 最佳方法将两个故事板迁移到通用的单个故事板 我在 xcode 6 中看不到转换选项 None
  • UIImageJPEGRepresentation 在视网膜显示屏上提供 2x 图像

    我有这段代码 它创建一个图像 然后向其添加一些效果并缩小其大小以使其largeThumbnail UIImage originalImage UIImage imageWithData self originalImage thumbnai

随机推荐

  • 取消 Laravel 中的作业

    如果我调用以下内容 return AdventureJob dispatch event gt character gt refresh event gt adventure event gt levelsAtATime gt delay
  • THE 7 不尊重java安全随机种子

    我手头有一个难题 我创建了一个 AES 服务来加密 解密敏感信息 AES 密钥是使用 java 随机生成的SecureRandom 我有一个受保护的文件 用于存储种子 并且在调用服务时 种子将填充到安全随机类中 为了确保它有效 我有以下逻辑
  • 改变 PopupWindow 的重力

    我有一个必须显示弹出窗口的按钮 并且弹出窗口必须与按钮的右侧对齐 我就是这么做的 button setOnClickListener new View OnClickListener Override public void onClick
  • 如何在z3py中连接正则表达式?

    我想构造一个正则表达式 例如a b c z3中有一个函数re 可以将3个正则表达式连接在一起 所以我可以构造a b c 如下所示 assert str in re aabbc re re str to re a re str to re b
  • 适用于阿拉伯语、中文和希腊语的 Google TTS API

    我正在尝试从 google TTS API 下载 mp3 文件 这是代码 try String path http translate google com translate tts tl en q hello this is the n
  • Google Analytics API 错误 403:“用户无权访问个人资料”

    我一直在尝试学习如何使用Google Analytics API来获取网站流量数据 我不断遇到错误 提示用户无权访问该配置文件 我将服务帐户中的电子邮件地址添加到用户中 并尝试将其设置为有权访问所有配置文件的用户和管理员 但都不起作用 这是
  • 如何在 golang 结构中声明可为 null 的 json 字段?

    我通常喜欢在结构中使用原始数据类型的指针 这样当我 json Marshal 它们时 nil字段总是被翻译为 field null在 json 字符串中 但这将使创建新的结构实例变得困难 因为我无法使用文字 例如 type Book str
  • 如何在 Windows 启动时最小化应用程序 - Visual Basic

    这段代码有什么问题 我无法在启动时关闭我的应用程序 如果我改变me close 它实现了另一个值 但是对于me close 事实并非如此 我是编码和 Visual Basic 新手 Dim oktoclose As Boolean Priv
  • Twig:允许 HTML,但转义脚本

    我正在调查一个可能的XSS我的应用程序的攻击向量 我拥有的 FormType 带有单个textarea场地 通常该字段可以包含html tags Twig呈现插入数据的模板 我使用该表单插入以下内容 b Some valid HTML te
  • 在 session_destroy() 之后保留会话变量

    从我的 logout php
  • 以编程方式检索流畅配置,无需实例化 DbContext

    我有一个 DbContext 派生类 其成员实体类是使用 Fluent API 配置的 我想以编程方式检索这些配置和关系 执行此操作的代码已经就位 我将其移植到 T4 模板以进行代码生成 虽然大多数代码生成都使用反射 但流畅的配置需要实例化
  • Python - 转发带附件的 IMAP 电子邮件(imaplib、smtplib)

    我在转发带有附件的邮件时遇到问题 有人能指出我正确的方向吗 我猜它在 Fetch 语句中 但我不确定 import sys import uuid import re import smtplib import email address
  • RMI:按值传递还是按引用传递?

    我很难找到这个问题的明确答案 所以我想我应该在这里用我自己的具体例子来问 我正在创建一个多人垄断游戏 实际的垄断代码在服务器上运行 而客户端本质上是一个访问和控制该代码的 GUI 垄断游戏是由一个叫做 银行 的类控制的 假设我在客户端的 m
  • 将变量从 node.js 传递到 html

    我正在尝试将变量从 node js 传递到我的 HTML 文件 app get main function req res var name hello res render dirname views layouts main html
  • 试图获取非对象的属性

    这个脚本效果很好 我在脚本的顶部调用它 但是 如果未被禁止的用户进入该网站 他们会得到 Notice Trying to get property of non object in index php on line 20 功能 Check
  • 有没有办法在没有JFrame的情况下获取键盘事件?

    我想让我的程序在用户按下某个快捷方式时取消隐藏主窗口 有没有办法获取全局关键事件 而不仅仅是焦点位于应用程序框架内时发生的事件 这可能会做你想做的事 请注意 此代码正在检查 Ctr F 击键 我使用此代码从应用程序中的任何内容打开查找对话框
  • 如何创建每个单元格分为 4 个三角形的热图?

    我想将一个单元格分成一个单独的热图 具有多个颜色代码 Each square is divided into 4 triangles and each triangle has its own numerical value color c
  • 如何在直方图中绘制字典中的键和值

    我需要用以下字典绘制直方图 x 5 289 8 341 1 1565 4 655 2 1337 9 226 7 399 3 967 6 405 我需要首先将键从 1 到 9 排序 然后将这些值绘制在直方图中 显示最大概率为 1 0 我已经尝
  • 垂直旋转 JTextField

    我见过很多询问如何以任意角度旋转 JLabel 或图像的问题 我需要做的就是将文本字段旋转 90 度 但我还没有找到专门针对该角度的更简单的方法 我以为我正确复制了答案 但我的文本字段没有旋转 这是我正在做的 SSCCE import ja
  • 如何判断进程是否在用户界面进程中?

    如何从进程中获取它是 UI 用户界面 进程还是非 ui 进程的信息 我所说的 UI 进程是指 Finder Dock 系统 UI 服务器或任何其他具有 UI 界面且由 Window Server 使用的 Mac 应用程序 我想从 Proce