相关疑难解决方法(0)

在Cocoa/Carbon中全局隐藏鼠标光标?

有没有办法全局隐藏Cocoa(或Carbon)中所有应用程序的鼠标光标?或者至少用其他东西替换它?

编辑:感谢输入的人,但事实证明丹尼尔Jalkut不久前找到了解决方案:) http://lists.apple.com/archives/carbon-dev/2006/Jan/msg00555.html

cocoa macos-carbon

10
推荐指数
2
解决办法
3951
查看次数

隐藏鼠标指针或阻止OS X中的移动

我想在后台应用程序中全局隐藏鼠标指针或防止其移动。

我已经尝试过“ CGDisplayHideCursor(kCGDirectMainDisplay);”,但这似乎仅适用于前台应用程序。

这个答案似乎是我最好的选择,但是我无法编译它。具体来说,我得到:

体系结构i386的未定义符号:“ _ CGSDefaultConnection()”,引用自:main.o中的_main“ CGSSetConnectionProperty(int,int,__CFString const *,__CFBoolean const *)”,引用自:main.o中的_main

就隐藏指针而言,使用Event Taps的这段代码是我到目前为止发现的最接近的代码:

#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);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码阻止了鼠标移动事件,因此其他应用程序不响应在其上移动的指针。但这并不能阻止指针本身移动。

编辑

我为什么要这样做?我正在记录鼠标增量,以通过网络控制另一台计算机。诸如Synergy和Teleport之类的应用程序可以执行此操作,但是光标仍在Synergy上可见(我上次检查过)。

macos cocoa objective-c

2
推荐指数
1
解决办法
1156
查看次数

标签 统计

cocoa ×2

macos ×1

macos-carbon ×1

objective-c ×1