首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SendKeys for Xamarin.Mac

SendKeys for Xamarin.Mac
EN

Stack Overflow用户
提问于 2018-06-14 19:22:44
回答 1查看 854关注 0票数 2

我正在用Xamarin构建一个Mac应用程序,并且需要将击键(带有单词和短语)发送到其他应用程序。类似于Windows上的SendKeys in .Net。

在SendKeys中是否存在与Mac等效的API?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-14 22:35:51

CGEventCreateKeyboardEvent是您所要寻找的,它是基于Quartz的,因此是一个低级别的C API。

Xamarin通过CGEvent .ctor在它上面安装了一个垫片包装器。在创建事件之后,包括任何键盘修饰符(shift/apple/alt/.),您可以将其Post到您选择的进程id。

非常快速的示例,它将stackoverflow发送到活动进程/窗口。

代码语言:javascript
复制
using (var eventSource = new CGEventSource(CGEventSourceStateID.HidSystem))
{
    var eventString = "StackOverflow";
    foreach (var eventChar in eventString)
    {
        //  my most favorite Enum.Parse line ever written 
        var key = (ushort)(NSKey)Enum.Parse(typeof(NSKey), eventChar.ToString().ToUpper());

        using (var keyEvent = new CGEvent(eventSource, key, true))
        {
            CGEvent.Post(keyEvent, CGEventTapLocation.HID);
        }
    }
}

注意:要查看它的运行情况,在它前面放置一个Task.Delay,运行它,然后切换到/激活一个编辑器,可能是Visual :-),然后让它键入活动编辑器面板。

FYI:您可能需要参考CGEvent.cs的Xamarin包装器/源代码,因为它们的命名在从苹果文档到Xamarin.Mac代码的转换方面并不是不同的ObjC或Swift友好。

Re:xamarin-macios/src/CoreGraphics/CGEvent.cs

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50864506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档