早在2010年,Pierre提出this问题(他接受的答案对我不起作用)。
我遇到了同样的问题:我能够以编程方式从我的Cocoa应用程序中成功移动鼠标(并关闭!?!),但是将鼠标移到我的Dock的位置并没有显示它(以及其他一些应用程序未注册鼠标移动事件,例如删除鼠标的游戏)
我正在使用的方法是:
void PostMouseEvent(CGMouseButton button, CGEventType type, const CGPoint point)
{
CGEventRef theEvent = CGEventCreateMouseEvent(NULL, type, point, button);
CGEventSetType(theEvent, type);
CGEventPost(kCGSessionEventTap, theEvent);
CFRelease(theEvent);
}
然后当我想移动鼠标时,我跑了:
PostMouseEvent(0, kCGEventMouseMoved, mouseLocation);
请注意,此代码会为链接等内容生成鼠标悬停事件。
现在是2013年,是否有可能解决这个问题?
谢谢你的时间!
答案 0 :(得分:3)
我会扭曲光标并生成鼠标移动事件。我从经验中知道,例如,扭曲光标,虽然它本身不生成事件,但修改后续鼠标移动事件以包括其鼠标增量中的移动距离。我不知道你的合成移动事件是否会包含适当的delta值。
答案 1 :(得分:0)
好的,显然MacOSX需要将鼠标放在屏幕的边缘才能显示底座! 因为我将我的底座放在屏幕的左侧(由于许多程序将重要按钮保持在窗口的底部),我所要做的只是说
if (mouseLocation.x < 0)
{
mouseLocation.x = 0;
}
它有效!
我也在使用KenThomases的想法来扭曲光标。
(这个答案标记正确,因为它允许我显示停靠点 - 但仍然有一些应用程序没有响应鼠标输入)