gpt4 book ai didi

objective-c - 全局隐藏光标(来自后台应用程序)

转载 作者:太空狗 更新时间:2023-10-30 03:32:37 25 4
gpt4 key购买 nike

我想在状态栏应用程序中隐藏光标并且我做了一些研究。似乎不久前就找到了这个问题的解决方案:

Globally hide mouse cursor in Cocoa/Carbon?http://lists.apple.com/archives/carbon-dev/2006/Jan/msg00555.html

但是引用的代码不会编译。你们中有人知道如何编译代码(通过导入一些旧的 API 或其他东西)或实现此目的的其他方法(某种 hack)吗?

(我知道在后台应用程序中隐藏光标通常是个坏主意,但我制作了一个此功能非常重要的应用程序)

编辑:

这是老办法,现在已经不管用了。

long sysVers = GetSystemVersion();

// This trick doesn't work on 10.1
if (sysVers >= 0x1020)
{
void CGSSetConnectionProperty(int, int, int, int);
int CGSCreateCString(char *);
int CGSCreateBoolean(BOOL);
int _CGSDefaultConnection();
void CGSReleaseObj(int);
int propertyString, boolVal;

// Hack to make background cursor setting work
propertyString = CGSCreateCString("SetsCursorInBackground");
boolVal = CGSCreateBoolean(TRUE);
CGSSetConnectionProperty(_CGSDefaultConnection(), _CGSDefaultConnection(), propertyString, boolVal);
CGSReleaseObj(propertyString);
CGSReleaseObj(boolVal);
}

它给了我 4 个错误:

“_CGSCreateBoolean”,引用自:-MyClass.o 中的[MyClass myMethod]

“_GetSystemVersion”,引用自:-MyClass.o 中的[MyClass myMethod]

“_CGSCreateCString”,引用自:-MyClass.o 中的[MyClass myMethod]

“_CGSReleaseObj”,引用自:-MyClass.o 中的[MyClass myMethod]

最佳答案

您需要链接到应用程序服务框架以消除链接器错误。

这是一个完整的 hack 示例(已更新为使用 Core Foundation):

cat >t.c<<EOF
#include <ApplicationServices/ApplicationServices.h>

int main(void)
{
void CGSSetConnectionProperty(int, int, CFStringRef, CFBooleanRef);
int _CGSDefaultConnection();
CFStringRef propertyString;

// Hack to make background cursor setting work
propertyString = CFStringCreateWithCString(NULL, "SetsCursorInBackground", kCFStringEncodingUTF8);
CGSSetConnectionProperty(_CGSDefaultConnection(), _CGSDefaultConnection(), propertyString, kCFBooleanTrue);
CFRelease(propertyString);
// Hide the cursor and wait
CGDisplayHideCursor(kCGDirectMainDisplay);
pause();
return 0;
}
EOF
gcc -framework ApplicationServices t.c
./a.out

在 Mac OS 10.5 上,这会隐藏光标,直到程序被中断。但是,执行任何窗口服务器或停靠任务都会显示光标。

关于objective-c - 全局隐藏光标(来自后台应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3885896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com