6

早在 2010 年,皮埃尔了这个问题(他接受的答案对我不起作用)。

我遇到了同样的问题:我能够从我的 Cocoa 应用程序以编程方式成功地将鼠标移动(和关闭!?!)屏幕,但是将鼠标带到我的扩展坞的位置并没有显示它(还有一些其他应用程序没有注册鼠标移动事件,例如移除鼠标的游戏)

因此,我使用的方法是:

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 年,是否有可能解决此问题?

谢谢你的时间!

4

2 回答 2

3

我会扭曲光标并生成鼠标移动事件。例如,我从经验中知道,虽然光标本身不会生成事件,但它会修改随后的鼠标移动事件以将移动的距离包含在其鼠标增量中。我不知道您的合成移动事件是否会单独包含正确的增量值。

于 2013-03-16T05:06:10.033 回答
0

好的,很明显,MacOSX 需要鼠标恰好位于屏幕边缘才能显示 Dock!因为我将 Dock 放在屏幕左侧(由于许多程序将重要按钮保留在其窗口底部),所以我所要做的就是说

if (mouseLocation.x < 0)
{
    mouseLocation.x = 0;
}

它奏效了!

我也在使用 KenThomases 的想法来扭曲光标。

(这个答案被标记为正确,因为它允许我显示扩展坞 - 但是仍然有一些应用程序没有响应鼠标输入)

于 2013-03-16T22:12:00.740 回答