我想在后台应用程序中全局隐藏鼠标指针或阻止其移动。在OS X中隐藏鼠标指针或块移动
我试过“CGDisplayHideCursor(kCGDirectMainDisplay);”,但这似乎只适用于前台应用程序。
这answer似乎是我最好的选择,但我无法得到它编译。具体来说,我得到:为i386硬件架构
未定义的符号: “_CGSDefaultConnection()”,从引用:在main.o中 _main “CGSSetConnectionProperty(INT,INT,__CFString常量*,__CFBoolean常量*)”,从引用: _main在main.o中
至于隐藏的指针,该代码,使用事件龙头,是到目前为止,我已经找到了最接近的事:
#include <ApplicationServices/ApplicationServices.h>
CGEventRef mouseEventCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon)
{
if (type != kCGEventMouseMoved)
return event;
return NULL;
}
int main(void)
{
CFMachPortRef mouseEventTap;
CFRunLoopSourceRef mouseRunloop;
mouseEventTap = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, 0, (1 << kCGEventMouseMoved), mouseEventCallback, NULL);
if(!mouseEventTap)
exit(1);
mouseRunloop = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, mouseEventTap, 0);
CFRunLoopAddSource(CFRunLoopGetCurrent(), mouseRunloop, kCFRunLoopCommonModes);
CGEventTapEnable(mouseEventTap, true);
CFRunLoopRun();
exit(0);
}
以上块鼠标移动事件的代码所以其他应用程序不会响应指针移过它们。但它并不妨碍指针本身的移动。
编辑
为什么我要这么做?我正在录制鼠标角色以通过网络控制另一台计算机。像Synergy和Teleport这样的应用程序可以做到这一点,但是在Synergy上仍然可以看到光标(最后我检查过)。
你为什么要这样做? –
允许这将会产生各种后果。没有丑陋的可能的越野车攻击,你将无法实现它。 –
曾听说过Synergy?我想将鼠标三角洲转发到另一台计算机。控制另一台计算机时,让鼠标指针保持在屏幕上很难看。 – Luke