gpt4 book ai didi

macos - 如何在登录窗口 mac OS 中使用 CGEventPost 模拟键盘和鼠标事件?

转载 作者:行者123 更新时间:2023-12-04 14:55:43 25 4
gpt4 key购买 nike

我创建了一个使用 CGEventPost 来模拟键盘的登录前代理。仅供引用,我正在开发一个类似于 teamviewer 的远程控制应用程序。

键盘

CGEventRef keyEvent = CGEventCreateKeyboardEvent( NULL, keyCode, down ) ;
CGEventPost( kCGHIDEventTap, keyEvent ) ;
CFRelease( keyEvent ) ;


CGEventRef event = CGEventCreateMouseEvent(eventSource, eventType, mouseLocation, mouseButton );
CGEventPost(kCGHIDEventTap, event);
CFRelease(event);

登录前启动代理
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>my app label</string>
<key>LimitLoadToSessionType</key>
<string>LoginWindow</string>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>My app directory</string>
<key>ProgramArguments</key>
<array>
<string>app absolute path</string>
<string>service</string>
<string>myservice</string>
</array>
<key>KeepAlive</key>
<true/>
</dict>
</plist>

CGEventPost 不工作,登录后我在控制台日志中得到以下信息
Untrusted apps are not allowed to connect to
Window Server before login.

我搜索了 o Chrome 的 Remote (具有键盘和鼠标模拟工作)源代码。他们使用 CGEventPost 作为键盘,但它在登录窗口中工作。

https://cs.chromium.org/chromium/src/remoting/host/input_injector_mac.cc?rcl=0&l=42

他们似乎使用特权助手工具目录中的 sh 文件并用于加载服务,我尝试将我们的服务放在特权助手工具中,但事件处理仍然失败。

不推荐使用的 API CGPostMouseEvent、CGPostKeyBoardEvent 工作没有问题,但真的很想知道不推荐使用的键盘 API 在 Chrome 中是如何工作的。

最佳答案

您应该将未记录的(经典的 apple ,安全性通过默默无闻)添加到二进制文件的部分,以便在 LoginWindow 上下文中运行时使 CGEventPost 神奇地工作。

如果您使用的是 gcc,请将以下内容添加到编译标志中

gcc <YOUR SOURCES AND FLAGS> -sectcreate CGPreLoginApp __CGPreLoginApp /dev/null

如果您使用的是 XCode,请将以下内容添加到项目build设置中的其他链接器标志中:
"-sectcreate"
__CGPreLoginApp
__cgpreloginapp
/dev/null

引用 https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-700/IOHIDFamily.xcodeproj/project.pbxproj LDFLAGS 的项目文件

关于macos - 如何在登录窗口 mac OS 中使用 CGEventPost 模拟键盘和鼠标事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41429524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com