如何确定私有 API 函数的参数?

发布于 2024-09-06 08:33:11 字数 651 浏览 9 评论 0原文

我想创建应用程序切换器的替代品(又名“cmd + tab”)。

我知道这是可能的,因为 Lite Switch X 做到了。

到目前为止我所取得的成就:

通过强制退出扩展坞并调用 CPSRegisterForKey() (这是一个私有 API 函数),我可以阻止默认的 cmd+tab 工作。

第二步是注册我的应用程序的热键。执行此操作的标准方法 RegisterEventHotKey() 不起作用。谷歌搜索和 GDBing 表明 Dock 和 Lite Switch X 使用 CGSSetHotKeyEnabled()CGSSetHotKey() (这两个都是私有 API 函数)。我遇到的问题是我不知道这些函数采用什么参数。

如何确定私有 API 函数的参数?

更新:

我对CGSSetHotKey()有进一步了解:

OSErr setupResult = CGSSetHotKey(_CGSDefaultConnection(),unknownArg,unknownArg,unknownArg,kCGEventFlagMaskCommand,?? ?, ???, ...);

I want to create a replacement for the app switcher (aka 'cmd + tab').

I know that it's possible because Lite Switch X does it.

What I've got achieved so far:

By force quitting the dock and calling CPSRegisterForKey() (which is a private API function) I can prevent the default cmd+tab from working.

The second step is two register the hot key for my app. The standard way of doing this, RegisterEventHotKey(), doesn't work. A bit of googling and GDBing suggests that the Dock and Lite Switch X use CGSSetHotKeyEnabled() and CGSSetHotKey() (both of these are private API functions). The problem I have is that I do not know what arguments these functions take.

How can I determine the arguments for a private API function?

Update:

I've got a little further with CGSSetHotKey():

OSErr setupResult = CGSSetHotKey(_CGSDefaultConnection(), unknownArg, unknownArg, unknownArg, kCGEventFlagMaskCommand, ???, ???, ...);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谈情不如逗狗 2024-09-13 08:33:11

您是否尝试过使用 class-dump ?这通常很有帮助。

Have you tried using class-dump? It's usually pretty helpful.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文