macos - Mac 窗口图标化按钮的 Hook

标签 macos cocoa callback hook

如何设置在 OSX 上单击黄色窗口图标化/最小化按钮时触发的回调?

我的目标是在系统范围内拦截最小化按钮,以便可以隐藏窗口(如 CMD-h 中)而不是图标化/最小化。为此,如果存在这样的函数,我还需要一个隐藏窗口方法。

编辑

在 Mac 应用程序中使用黄色最小化按钮会导致应用程序消失。我已将其设置为不在扩展坞中创建额外的图标(首选项设置:“将窗口最小化为应用程序图标”)。当稍后使用 Alt-TAB 恢复应用程序时,尽管应用程序本身已变为事件状态,但窗口不会从图标恢复。此行为与 CMD-h 的工作方式不同。尽管我已经使用 Mac 多年,但我不断发现 CMD-TAB 的无用性令人恼火。

最佳答案

我不确定您为什么要改变用户期望的正常行为。 命令 H 隐藏整个应用程序的 UI。 命令 M 或(如果在系统首选项中设置)双击标题栏将最小化窗口。

用户还可以在系统偏好设置中自定义键盘快捷键。

控件在响应程序链中设置,以便这些键盘快捷键被发送到响应程序链,并且队列中的第一个窗口做出响应。

它们是在 NSWindow 中实现的,并且可以在很多地方被覆盖。 NSApplication 子类和 NSApplicationDelegate 子类一样都是一处。 任何窗口委托(delegate)也可以做不同的事情。

您应该查看所有这些类及其编程指南以及响应者链和 NSEvent 以进一步了解这一点。

你有很多选择。

根据对问题的编辑,答案大部分没有变化。如果你想用 cocoa 来做到这一点,请查看上面的类。当您的应用程序变为事件和非事件状态时,您可以观察并响应 NSNotifications。

如果你想控制其他应用程序,你需要查看 NSWorkSpace 和 NSRunningApplication,还需要查看 AppleScript 和 NSAppleScript。

关于macos - Mac 窗口图标化按钮的 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23325654/

相关文章:

linux - *nix : find and add new files to TFS workspace 上的 TEE TFS CLI

macos - 使用Charles Proxy作为代理服务器时无法搜索应用商店

c++ - Xcode 非终端 C++ 项目

cocoa - Cocoa 中单个窗口中的多个文档

macos - 获取 Cocoa 中事件应用程序中当前选定的文本

macos - NSSpeechRecognizer 委托(delegate)从未调用过

ios - 安装 iPhone 配置实用程序时出错

c# - jquery ajax 调用 .NET Web api 返回错误

javascript - 回调、返回值与HTML5 executeSql函数

javascript - 如何向 javascript 类添加回调函数?