【问题标题】:Simple utility to unhide mouse cursor in objective c console app在目标 c 控制台应用程序中取消隐藏鼠标光标的简单实用程序
【发布时间】:2012-06-22 18:45:29
【问题描述】:

我正在尝试创建一个简单的控制台应用程序来取消隐藏光标,因为我使用的程序存在错误并间歇性地隐藏光标(宁愿编写一个快速实用程序而不是等待修复错误)。我添加了 AppKit 框架并编写了以下简单的控制台应用程序(main.m):

#import <Foundation/Foundation.h>
#import <AppKit/NSCursor.h>

int main(int argc, const char * argv[])
{
    @autoreleasepool {
        [NSCursor unhide];
    }
    return 0;
}

但我在[NSCursor unhide] 行得到一个 EXC_BAD_ACCESS。知道我做错了什么吗?

我正在使用 XCode 4.3.2 在 Lion 上运行它

我也愿意使用 AppleScript 执行此操作,但我也无法在那里完成。

谢谢!

【问题讨论】:

    标签: objective-c console-application exc-bad-access nscursor


    【解决方案1】:

    您尝试做的事情不会奏效。游标对象由每个应用程序管理和拥有。您不能影响另一个应用程序的光标(没有代码注入)。

    你得到一个EXC_BAD_ACCESS,因为你的程序实际上没有光标。如果您创建了一个“Cocoa 应用程序”,则会在通常的 GUI 应用程序启动过程中创建一个,即在NSApplicationMain(),但您仍然只能影响您自己的应用程序的光标。

    AppleScript 似乎有更大的成功机会,因为它可以让您执行一些直接影响其他应用程序的代码,但我完全不确定它是否具有像这样管理光标的功能——看起来对于 AS 来说有点太低级了。

    【讨论】:

    • 所以,这就解释了为什么我可以通过切换到另一个应用程序并返回来恢复光标。麻烦的应用程序本身就是一个控制台可执行文件。它会导致光标在各种间歇性应用程序中消失,所以它可能正在对最前面的应用程序进行自己的代码注入来执行该操作。有什么想法吗?
    • 我应该提到鼠标光标隐藏是可执行文件的一个特性。有时每个错误很难取消隐藏光标。
    • 我猜它正在做一些注射,那么,是的。不幸的是,这超出了我的专业领域;我不知道你会如何干涉。只是出于好奇,您介意命名该实用程序吗?
    • 这是旧版本的 synergyc。它在所有其他方面都有效(不幸的是,较新的版本没有),除了光标问题。也许我可以深入研究代码并重新编译它,但我希望在我使用它的少量情况下避免这种情况。
    猜你喜欢
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 2014-07-19
    相关资源
    最近更新 更多