我收到警告,PostEvent
已被弃用,我认为应该使用PostEventToQueue
,但它需要两个额外的参数,我找不到任何关于参数组合的文档(一个是队列规范,另一个是事件优先级)将等同于PostEvent
。
答案 0 :(得分:1)
PostEventToQueue
用于碳事件,而不是像PostEvent
这样的低级操作系统事件。如果要发布键盘或鼠标事件,则应使用CGEventPost
。
编辑添加:要在当前位置发布鼠标,我认为(未经测试)您可以执行此操作:
CGEventRef theEvent = CGEventCreate( NULL );
CGEventSetType( theEvent, kCGEventLeftMouseDown );
CGEventPost( theEvent );
CFRelease( theEvent );
答案 1 :(得分:0)
我认为假设使用GetMainEventQueue()
返回的事件队列(如果你在主线程上,则为GetCurrentEventQueue
)和kEventPriorityStandard
为优先级是合理的,会得到相当于PostEvent
的结果。
请注意,这些只会影响您自己的应用程序。即使是旧的事件管理器也可能无法访问“操作系统事件队列” - 如果它只是Carbon Event Manager版本的包装器,我不会感到惊讶。如果你想发布可以打到其他应用程序的事件,你需要切换到CGEvent。