CGEventTapCreate 因“按键按下”事件而神秘崩溃

2024-02-23

我在用着CGEventTapCreate当我的应用程序运行时,从 iTunes 中“窃取”媒体密钥。我传递给的回调内部的代码CGEventTapCreate检查该事件,如果发现它是媒体键之一,则将适当的通知发布到默认通知中心。

现在,如果我发布“key up”事件的通知,则效果很好。如果我对“按键按下”事件执行此操作,最终我的应用程序将停止获取媒体按键事件并由 iTunes 接管。关于可能导致这种情况的原因有什么想法吗?代码的相关部分如下

enum { 
...
  PlayPauseKeyDown = 0x100A00,
  PlayPauseKeyUp = 0x100B00,
...
};

static CGEventRef event_tap_callback(CGEventTapProxy proxy,
                                     CGEventType type,
                                     CGEventRef event,
                                     void *refcon)
{
  if (!(type == NX_SYSDEFINED) || (type == NX_KEYUP) || (type == NX_KEYDOWN))
      return event;

  NSEvent* keyEvent = [NSEvent eventWithCGEvent: event];
  if (keyEvent.type != NSSystemDefined) return event;

  switch(keyEvent.data1)
  {
    case PlayPauseKeyUp:  // <--- this works reliably
    //case PlayPauseKeyDown:  // <--- this will break eventually
      post_notification(@"PlayPauseMediaKeyPressed", nil, nil);
      return NULL;

    ... and so on ...

如果回调时间太长,是否会终止我的事件点击?

有些人怀疑 Snow Leopard 有一个错误,有时会禁用事件点击,即使它们不会花费太长时间。要处理这个问题,您可以观察事件类型kCGEventTapDisabledByTimeout,并通过重新启用您的水龙头来响应CGEventTapEnable.

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

CGEventTapCreate 因“按键按下”事件而神秘崩溃 的相关文章

  • 当我的 Mac 进入睡眠状态时,我的应用程序会发生什么情况?

    当 Mac OS X 进入睡眠状态时 由于关闭笔记本电脑或从 Apple 菜单中选择 睡眠 它如何暂停正在执行的进程 我认为非窗口进程只是在任意执行点挂起 对于 Cocoa 应用程序来说也是如此 还是操作系统会等到控制权返回到运行循环调度程
  • 带有存储在文件中的通配符的 grep

    我希望 grep 通过读取需要从文本文件中过滤掉的内容来过滤掉行 这是我给 grep 的内容 它存储在foo txt Users 1337 X Users 1337 R Users 1337 W 这是它应该过滤的内容 它存储在bar txt
  • 一段简单的代码,在 GC 下运行良好,但在 ARC 中开始崩溃

    我有以下简单的 检查我的应用程序是否设置为在登录时启动 代码 它在垃圾收集下工作得很好 然而 自从我开始使用 ARC 并插入了 bridge 根据需要 代码开始随机且不可预测地崩溃 根据堆栈跟踪 代码在某些期间崩溃CFRelease 有什么
  • 如何从远程 ssh 连接上运行的 tmux(复制模式)复制到本地剪贴板

    我通过 OS X 上的 VirtualBox 运行 Linux 我通过在无头状态下运行虚拟机 然后使用端口转发 sshing 到 Linux 机器来实现这一点 现在 无论复制到我的虚拟机上的剪贴板 我都可以粘贴到我的远程 ssh 会话上 但
  • 在 Xcode 9 上切换分支

    我无法找到使用 Xcode 9 切换分支的菜单项 工作副本菜单似乎已经消失 有任何想法吗 Xcode 9 Xcode 8 Press 2 to open the new Source Control Navigator 右键单击master
  • Cocoa webview UserAgent“webkit-legacy”问题

    我解决了这个问题 请看下面所选的答案 我一直在努力寻找导致 OSX Cocoa 应用程序的 WebView 与 Safari 表现不同的原因 事实证明 用户代理是不同的 有点明显 并且我正在访问的网站不知道如何处理它 令人惊讶的是 它是ht
  • 包含 Xcode 上添加的框架的标头

    我想使用一些框架 例如glew and cg所以我手动添加 通过右键单击项目 gt 将文件添加到 来将所需的框架添加到我的项目中 并选择正确的框架 问题是 当我尝试包含头文件时 Xcode 找不到其中任何一个 我希望这张图能帮助理解 And
  • 如何在 Mac 上运行 virtualenv python

    我正在尝试使用 virtualenv 在我的 mac 上创建虚拟 python 环境 我已经下载了 virtualenv 但是我无法运行它 因为即使我提供了正确的路径 它也找不到我的 python3 安装路径 这是我运行的命令和响应 vir
  • MacOS 中 AVFoundation 和 Metal 的帧速率非常慢

    我正在尝试适应苹果的AVCam滤镜 https developer apple com documentation avfoundation cameras and media capture avcamfilter applying fi
  • 辅助功能:ScrollView 自动滚动到点击“TAB”时不可见的视图

    有人可以让我知道当仅使用键盘的用户尝试使用 Tab 键在 ScrollView 中的不同 UI 元素之间导航时如何自动滚动滚动视图吗 当我按 TAB 键时 焦点会转移到滚动视图中存在的不同 UI 元素 但如果可见内容视图中不存在 UI 元素
  • 如何构建 Objective-C 静态库? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一些 Objective C 类 目前在 Cocoa 应用程序 Mac OS X 和 Cocoa Touch 应用程序 iOS 中
  • Swift 上的 USB 连接委托

    Swift 中是否有一个代表可以让我的班级知道何时通过计算机的 USB 插入新设备 我想知道我的程序何时可以使用新设备 Eric Aya 的答案已经相当不错了 但这里有一个 Swift 3 的改编 我把大部分丑陋的东西包裹在一个USBWat
  • Eclipse 在 Android SDK 内容加载器处挂起

    我已经在 OS X 10 8 2 上使用 Eclipse 4 2 Juno 版本 20120920 0800 几个星期了 为 Android 3 0 及更高版本构建应用程序 我有一台带 SSD 的四核 i7 MacBook Pro 因此性能
  • Python 声音(“铃声”)

    我想让一个 python 程序在完成任务时通过发出嘟嘟声来提醒我 目前 我使用import os然后使用命令行语音程序说 进程完成 我更愿意它是一个简单的 铃 我知道有一个函数可以用于Cocoa apps NSBeep 但我认为这与此没有太
  • OSX:检测空格键向下和向上事件

    我需要记录我自己演讲的数千个简短的声音片段 我正在为语音识别引擎训练声学模型 因此 对于每个文本 屏幕上都会显示一行文本 我必须说出它 并将音频捕获到 WAV 中 我找到了一个用于录制音频的示例项目 现在我想弄清楚如何进行键盘输入 我想按下
  • Xcode - 免费清除设备文件夹?

    我正在删除一些文件夹和文件 以便在驱动器上腾出更多空间 我知道在路径中 Library Developer CoreSimulator Devices 每个模拟器和每个版本都有文件夹 这个文件夹对我来说大约有 11GB 大小 我知道我可以删
  • 运行时警告 CLSUserDefaults 实施了两次

    在 cocoapod 源中使用 import 语法时 我在 pod 定义的类中看到了与下面类似的警告 但这是一个内部苹果类定义 CLSUserDefaults 我无法控制它 也不会进行子类化 我不知道这是否真的造成了问题 但它不应该发生 o
  • C# 或 Windows 相当于 OS X 的 Core Data?

    我迟到了 现在才开始在 OS X Cocoa 中使用 Core Data 它令人难以置信 并且确实改变了我看待事物的方式 C 或现代 Windows 框架中是否有等效的技术 即拥有可免费保存 数据管理 删除 搜索的托管数据类型 还想知道Li
  • 使用 Python 查找 Mac OS X 中的当前活动窗口

    有没有办法使用 Python 在 Mac OS X 上查找给定时间当前活动窗口的应用程序名称 这应该有效 usr bin python from AppKit import NSWorkspace activeAppName NSWorks
  • 如何自定义 NSSlider

    我正在尝试在 Cocoa 中实现一个具有 5 个值的自定义滑块 查看我的演示项目 可以在此处下载 http s000 tinyupload com index php file id 07311576247413689572 http s0

随机推荐

  • 组合 ggplot2 对象时设置拼凑中的轴限制

    组合时ggplot2对象使用拼凑而成 https patchwork data imaginist com index html我希望能够有一个选项 可以轻松地为所有图设置一个选项 使其具有相同的 x 轴和 或 y 轴范围 reprex l
  • Busboy 文件上传中出现“Unexpected end of multipart form”错误

    我正在使用 Busboy 在 Node Express 应用程序中上传文件 我收到错误Unexpected end of multipart form和应用程序崩溃 每当我尝试治疗失眠的方法时 都没有效果 在显示 Busboy 不是构造函数
  • 创建 Uri uri 时应用程序崩溃

    package com example renu customlead import android content Context import android content ContextWrapper import android
  • 如何将参数发送到流中的引用方法(java 8)?

    我有一个活动列表 Activity 我想确定表单的数据结构Map String DateTime 不是持续时间或期间 DateTime这是必须的 映射 对于每项活动 在监控期间计算的总持续时间 班级活动有 activityLabel Str
  • 启用 viewBinding 功能失败(Android Studio 3.6)

    我已经安装了 Android Studio 3 6 Canary 12 并且我想使用viewBinding feature 根据文档 我将此代码放入我的 build gradle 应用程序模块 中 android viewBinding e
  • R 闪亮应用程序的 twitter bootstrap 弹出窗口 - html 被解释为文本内容 - 为什么?

    我想将 Twitter 引导框架中的弹出窗口添加到闪亮的应用程序中 一切正常 除了 认为html true标签没有效果 shinyUI pageWithSidebar headerPanel Header sidebarPanel acti
  • 如何跟踪服务 firebird

    如何使用delphi xe10跟踪服务firebird服务器的所有事件 这是我的代码 my TIBControlService Create Self my ServerName 127 0 0 1 3050 my Protocol TPr
  • Subversion 快速解决所有冲突

    当我遇到多个冲突时 有没有办法通过告诉 SVN 保留存储库中的版本来解决所有冲突 不幸的是 我们仍在使用 1 4 我相信如果你运行命令svn revert R 您基本上撤消了对工作副本的所有更改 如果存在冲突的文件 SVN 会放弃您的更改并
  • 使用时初始化缓存

    假设我有以下事件 做一点事 取东西 获取成功的东西 DoSomething做一些需要一些缓存数据的事情 当我触发事件时 我想查看缓存并对其执行某些操作 如果存在 如果没有 那么我想获取它 等待它进入缓存 然后重试 我想出了以下解决方案 但感
  • 在 C 中以均匀概率有效地从文本文件中选择随机行?

    这本质上是一个更受限制的版本这个问题 https stackoverflow com questions 232237 whats the best way to return a random line in a text file us
  • 3d -> 1D 数组索引

    在 C 中 W H D 大小的 3D 数组的索引值是多少 对于特定的 i j k 这是正确的索引 i 宽 高 j 宽 k 您所编写的内容相当于执行以下操作的指针算术 T x D H W x i j k Pointer arithmetic
  • 将数据发送到后台运行的活动

    在活动之间传递数据时遇到问题 ListActivity 正在收集数据 当按下后退按钮时返回到 MainActivity 然后想要通过 onResume 方法获取该数据 但我什么也没得到 如何解决这个问题呢 列表活动 java Overrid
  • Git 在结帐时更改我的文件权限

    我们的工作流程是在本地计算机上开发 将更改提交到中央存储库 然后检查我们需要的该存储库的分支 问题是 Git 会根据签出的用户更改其签出的文件的所有权甚至文件权限 这样做的直接结果是 我们的 CSS 文件在签出后变得不可读 因为 Git 将
  • 使用 C# 命令行 GPG 解密 - 密码?

    我正在使用命令行来加密我发送的文件 但我正在尝试找出如何使用相同的方法来解密它们 如果我运行该命令 系统会提示输入密码 但我看不到使用命令行传递密码的方法 这是我加密文件的方法 var proc new Process proc Enabl
  • 如何从计算引擎访问谷歌驱动器

    我以前没有使用过 GCE 但计划将其用于一些 CPU 绑定的 R 脚本 我看到定价的网络部分说谷歌驱动器有免费的出口和入口 我没有看到任何有关如何从 GCE 中访问我的 google 驱动器的文档 有人可以向我指出这方面的文档吗 我建议使用
  • 两个相同的unordered_map的顺序是否相同?

    换句话说 如果我填两个unordered map or unordered set 具有完全相同内容和相同哈希函数的对象 迭代它们会给出相同的键 值对序列吗 如果是这样 那么它成立的条件是什么 例如相同的散列函数 相同的键 不一定是相同的值
  • 检查两个 DecimalUpDown 控件之间的有效值 - MVVM

    我的窗口中有两个 DecimalUpDown 控件 一个应显示文本框的最大值 另一个应显示最小值 最小控制值不能大于最大控制值 反之亦然 请注意 红色值是错误的 我怎样才能实现这个 我正在使用 MVVM 模式 谢谢 史蒂夫 您应该在视图模型
  • 在 ggplot2 的图中添加一个指向 x 轴的箭头

    我的目标是获得一个带有指向 x 轴的文本的箭头来标记平均词频 我一生都无法弄清楚如何在 ggplot2 中的绘图区域之外获取箭头或文本 这是我的代码 ggplot SUMMARY PCTDIFF aes principle pctdiff
  • MySQL 错误代码:1064。您的 SQL 语法有错误

    真的 可能有什么问题吗 它并没有变得更简单 整个查询 line 1 use foo line 2 line 3 select from test table 1 错误代码 您的 SQL 语法有错误 查看对应的手册 到您的 MySQL 服务器
  • CGEventTapCreate 因“按键按下”事件而神秘崩溃

    我在用着CGEventTapCreate当我的应用程序运行时 从 iTunes 中 窃取 媒体密钥 我传递给的回调内部的代码CGEventTapCreate检查该事件 如果发现它是媒体键之一 则将适当的通知发布到默认通知中心 现在 如果我发