小编cks*_*ubs的帖子

Xcode`Prile`函数是否自动使用`Release`构建配置?

将应用程序发布到App Store时,我的标准工作流程是Product > Archive从Xcode的菜单栏中按下.

我意识到我从未Build Configuration在构建方案中更改Xcode .我把它设置为Debug开发期间,但希望App Store上的版本Release.

我希望并假设Product > Archive自动使用Release构建配置.谁能确认一下?

macos xcode ios

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

修改NSEvent以发送与按下的键不同的键

我正在尝试创建一个OS X键盘钩子用于辅助技术目的(即不要担心,而不是键盘记录器).

当用户按下某个键时,我想阻止真正的按键并发送假按键(我选择的字符).

我有以下代码:

- (void) hookTheKeyboard {
    CGEventMask keyboardMask = CGEventMaskBit(kCGEventKeyDown);
    id eventHandler = [NSEvent addGlobalMonitorForEventsMatchingMask:keyboardMask handler:^(NSEvent *keyboardEvent) {
        NSLog(@"keyDown: %c", [[keyboardEvent characters] characterAtIndex:0]);
        //Want to: Stop the keyboard input
        //Want to: Send another key input instead
    }];
}
Run Code Online (Sandbox Code Playgroud)

有任何帮助实现这些目标吗?基本上修改NSEvent"keyboardEvent"以发送不同的字符.谢谢.

macos objective-c keyboard-hook nsevent

21
推荐指数
2
解决办法
5494
查看次数

NSWindow makeKeyAndOrderFront使窗口显示,但不显示Key或Front

makeKeyAndOrderFront 不是我的NSWindow钥匙或前面.

我的应用程序没有主窗口或菜单栏,这可能是问题的一部分?

IBOutlet NSWindow *loginWindow;
//(connected in Interface Builder to the NSWindow)
Run Code Online (Sandbox Code Playgroud)

NSWindow"在发布时可见"和"关闭后释放"都未经检查.

然后:

- (void) applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [loginWindow makeKeyAndOrderFront:self];
}
Run Code Online (Sandbox Code Playgroud)

确实打开了窗户.(评论它导致没有窗口被打开).

然而:

  • 它出现在Xcode窗口后面(不是前面).

  • 它似乎可以接收鼠标焦点,但不会在窗口包含的文本字段中获取按键.按键被发送到Xcode.

  • 激活Expose时,它将显示在Expose网格中.但我无法点击窗口在Expose中选择它...它不会出现在前面.

为什么我的Window不工作?

macos cocoa objective-c

20
推荐指数
3
解决办法
1万
查看次数

如何通过辅助功能API获取当前所选文本的全局屏幕坐标.

我需要帮助才能找到,在任何应用程序上按CMD + CTRL + D时,Dictionary应用程序如何显示以下弹出对话框中的所选文本.我想为我的cocoa应用程序实现相同类型的功能,我的应用程序将在后台运行,并在所选文本的某些热键按下时显示建议.

字典应用程序热键建议对话框

我已经实现了热键捕获,我只需要有代码来获取屏幕上所选文本的矩形区域,所以我可以像字典应用程序一样显示对话框.

谢谢

cocoa accessibility screen objective-c selectedtext

13
推荐指数
2
解决办法
3352
查看次数

Marshal.PtrToStructure抛出System.ArgumentException错误

我试图从键盘钩子的lParam获取KBDLLHOOKSTRUCT.

    private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
    {

        KBDLLHOOKSTRUCT kbd = new KBDLLHOOKSTRUCT();
        Marshal.PtrToStructure(lParam, kbd); // Throws System.ArguementException
        ...
Run Code Online (Sandbox Code Playgroud)

不幸的是,PtrToStructure正在投掷两个

A first chance exception of type 'System.ArgumentException' occurred in myprogram.exe
Run Code Online (Sandbox Code Playgroud)

每次按下一个键都会出错.它也会阻止该方法的发展.

MSNDA说:http: //msdn.microsoft.com/en-us/library/4ca6d5z7.aspx

ArgumentException when:

The structureType parameter layout is not sequential or explicit.

-or-

The structureType parameter is a generic type.
Run Code Online (Sandbox Code Playgroud)

我能在这做什么才能让它发挥作用?lParam直接来自键盘钩子,所以我希望它是正确的.这些错误中的任何一个都有意义吗,我该怎么做才能解决它?

c# marshalling argumentexception

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

使用InnoIDE写入AppData目录?

我需要写信给:

C:\用户\用户\应用程序数据\漫游\ AppName的

安装过程中的文件夹.我正在使用InnoIDE程序进行设置,这很棒.但是,它似乎缺少一个"AppData"特殊文件夹,可以轻松访问该目录.

例如,您可以使用: DestDir: "{app}" 编写应用程序目录.

但是你怎么去AppData?是否有所有预设DestDir选项的列表?

inno-setup appdata userappdatapath

9
推荐指数
1
解决办法
1万
查看次数

如何区分用户点击的键盘事件和生成的键盘事件?

我安装了一个键盘钩子:

CGEventRef myCGEventCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon) {

基本上我想拿用户的键盘水龙头,吃输入,然后发布我自己的输入.

因此,如果他点击"g",我可能想将"foo"发布到文本字段.

我正在写文本域CGEventPostCGEventSetUnicodeString在此处找到:http: //www.mail-archive.com/cocoa-dev@lists.apple.com/msg23343.html

问题是我的每个编程输入的字符都是键盘钩子.所以我不能return NULL在键盘钩子中阻止用户输入......这也阻止了所有程序的输入!

我在C#中使用'inject'标志在Windows端区分它们,请在一年前看到我的问题:如何使用低级8位标志作为条件?

在Objective-C中寻找类似的东西.

input objective-c keyboard-hook

9
推荐指数
1
解决办法
800
查看次数

Stack Overflow API:获取用户的"新邮件"!通知?

当有人回复您的问题(或网站上的许多其他操作)时,您会收到一些"新邮件"!在站点左上角的"StackExchange"菜单中键入图标.

在此处查看API文档:http: //api.stackoverflow.com/1.0/usage

我没有看到为登录用户获取"新邮件"计数的方法.可能吗?

web-applications stackexchange-api

9
推荐指数
1
解决办法
193
查看次数

我可以更改用户的键盘输入吗?

我找到了这个键盘钩子代码,我试图为我的目的略微修改:http://blogs.msdn.com/toub/archive/2006/05/03/589423.aspx

作为概述,我想让用户按一个键,说'E',并让键盘返回一个不同的字符'Z',对任何焦点的应用程序.

我改变的相关方法现在看起来像:

    private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
    {
        if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
        {
            //The truely typed character:
            int vkCode = Marshal.ReadInt32(lParam);
            Console.WriteLine((Keys)vkCode);

            KBDLLHOOKSTRUCT replacementKey = (KBDLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(KBDLLHOOKSTRUCT));
            replacementKey.vkCode = 90; // char 'Z'
            Marshal.StructureToPtr(replacementKey, lParam, false);

            //Now changed to my set character
            vkCode = Marshal.ReadInt32(lParam);
            Console.WriteLine((Keys)vkCode);
        }
        return CallNextHookEx(_hookID, nCode, wParam, lParam);
    }
Run Code Online (Sandbox Code Playgroud)

控制台正确输出为:

E
Z
T
Z
G
Z
etc.
Run Code Online (Sandbox Code Playgroud)

但是,焦点应用程序仍然键入"E"而不是"Z".为什么?我更改了钩子键盘输入以包含'Z'而不是'E',并且控制台线显示它已正确更改!

据我了解,调用return CallNextHookEx(_hookID, nCode, wParam, lParam); …

c# keyboard-hook keyboard-layout low-level

8
推荐指数
1
解决办法
7485
查看次数

| NSScreen主屏幕| 键盘/鼠标焦点转到其他显示器时不更新?

我有一个全球应用程序,报告有关当前文本字段的信息.我已将其设置为每次单击鼠标时都运行:

NSLog(@"Screen:%f,%f", [[NSScreen mainScreen] frame].size.width, [[NSScreen mainScreen] frame].size.height);
Run Code Online (Sandbox Code Playgroud)

但是当我将键盘焦点放在一个屏幕上的文本字段中,然后在同一个文本字段中单击鼠标(重复)时,[[NSScreen mainScreen] frame]通常会报告错误的屏幕尺寸!它给了我另一个显示器的尺寸.

Apple文档说:

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSScreen_Class/Reference/Reference.html

主屏幕不一定是包含菜单栏的相同屏幕或其原点为(0,0).主屏幕指的是包含当前正在接收键盘事件的窗口的屏幕.它是主屏幕,因为它是用户最有可能与之交互的屏幕.

这表示具有键盘焦点的屏幕始终是主屏幕.我给它键盘焦点和鼠标焦点.那么为什么我会在50%的时间内获得其他屏幕?

这是[NSScreen mainScreen]中的错误吗?我是否必须以某种方式强制重新计算?有没有其他方法来获得具有键盘焦点的显示器的尺寸?

macos cocoa objective-c

8
推荐指数
1
解决办法
981
查看次数