MacOs заголовок активного окна с использованием C # - PullRequest
0 голосов
/ 21 сентября 2018

Итак, у меня есть приложение C #, использующее Mono и Gtk + 2, работающее на Mac. Есть ли способ получить заголовок активного окна приложения?

https://stackoverflow.com/a/37368813/3794943 говорит, что мне нужен CGWindowListCopyWindowInfo (у меня уже естьостальные их рецепты, такие как идентификатор процесса, большинство приложений и т. д.).

Где взять CGWindowListCopyWindowInfo или что-то подобное?Или есть какой-то другой способ получить заголовок активного окна при использовании моно на Mac OS?

1 Ответ

0 голосов
/ 21 сентября 2018

Хорошо, наконец-то нашел это здесь: https://forums.xamarin.com/discussion/comment/95429/#Comment_95429

Сначала вы импортируете эту функцию следующим образом:

[DllImport(@"/System/Library/Frameworks/QuartzCore.framework/QuartzCore")]
static extern IntPtr CGWindowListCopyWindowInfo(CGWindowListOption option, uint relativeToWindow);

Затем вы вызываете ее так:

    string result = null;
    IntPtr windowInfo = CGWindowListCopyWindowInfo(CGWindowListOption.OnScreenOnly, 0);
    NSArray values = (MonoMac.Foundation.NSArray)Runtime.GetNSObject(windowInfo);

    for (ulong i = 0, len = values.Count; i < len; i++)
    {
        NSObject window = Runtime.GetNSObject(values.ValueAt(i));

        NSString key = new NSString("kCGWindowOwnerPID");
        NSNumber value = (MonoMac.Foundation.NSNumber)window.ValueForKey(key);
        // and so on
    }

PS Пакет MonoMac должен быть добавлен с использованием NuGet

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...