gpt4 book ai didi

macos - 使用 CFEvents 从 Mac 中的守护程序执行键盘事件

转载 作者:行者123 更新时间:2023-12-03 16:21:12 25 4
gpt4 key购买 nike

我在守护进程(根进程)中有以下代码,它模拟 OSX 中的键盘事件。

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

当我在 User1 中并且守护进程被加载到 Root 上下文中时,键盘事件得到了很好的模拟。当我切换到 User2 时,除了 Shift 键之外的所有事件都成功执行。由于某种原因,尽管我当前登录到 User2,但 Shift 键的键盘事件在 User1 中执行。

我也尝试过使用移位蒙版:

CGEventRef  event1 = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)keyCode, true);//'z' keydown event
CGEventSetFlags(event1, kCGEventFlagMaskShift);//set shift key down for above event
CGEventPost(kCGHIDEventTap, event1);//post event
CFRelease(event1);

这在 User1 中也能正常工作。当我切换到 user2 并执行如上所示的关键事件时,它会在 User1 中最前面的应用程序中执行这些事件。 Shift 键按下或任何带有 Shift 掩码的按键按下的事件都会发送到 User1,而不是当前登录的用户

我是否可以确保键盘事件在登录用户中执行?

最佳答案

创建 keyEvent 后,在发布之前设置修饰符标志:

CGEventFlags flags = kCGEventFlagMaskShift;
CGEventSetFlags(keyEvent, modifierFlags);

关于macos - 使用 CFEvents 从 Mac 中的守护程序执行键盘事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32007859/

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