Mar*_*ark 5 macos cocoa screenshot nswindow nspanel
我正在制作截图Mac应用程序.我正在尝试重建按下Cmd-Ctrl-Shift-4时发生的情况:十字线光标和屏幕截图的选择矩形.
我在所有其他窗户上使用自定义无边框NSWindow.我禁用光标以绘制自己的选择矩形.
我的问题是,只要我点击并拖动以捕获屏幕截图,我的应用就会被激活(因为我的屏蔽窗口拦截了点击).
有没有办法在我的自定义视图/窗口中接收点击而不启动我的应用程序?
我尝试使用NSPanel带有NSNonactivatingPanelMask标志的,但在这种情况下,我有光标问题:当另一个应用程序处于活动状态时,我无法绘制自己的,因为我无法隐藏其他应用程序的光标...
我祈祷现在有更好的方法来做到这一点,但是当我不得不做类似的事情时,我最终让我的窗口/视图忽略所有鼠标输入,然后我使用CGEventTap(参见Quarts 事件服务文档)全局捕获鼠标事件(不将它们从事件队列中删除)。我将它们手动映射到我的窗口,创建一个自定义副本NSEvent并手动将其分派到我的窗口。
这里的巨大缺点(除了复杂性之外)是我记得需要以 root 身份运行才能安装事件水龙头。但是,我认为有一种方法可以通过普遍访问获得许可。
我完全不确定NSEvent直接将自定义分派到窗口是否会产生与激活应用程序相同的副作用;特别是自 10.6 以来许多事情都发生了变化……我建议在追求之前进行一个简单的测试,看看这是否可行。
| 归档时间: |
|
| 查看次数: |
703 次 |
| 最近记录: |