Как обнаружить изменение темы ОС пользователем в MAC OS?C#

Место общения программистов C#
Ответить
Anonymous
 Как обнаружить изменение темы ОС пользователем в MAC OS?

Сообщение Anonymous »

У меня есть веб-приложение, интерфейс которого выполнен на Angular, а серверная часть — на C#. Мы завернули его в QT как настольное приложение. Я реализую темы (Светлая, Темная и Автоматическая) для приложения. Если установлено значение «Авто», мне нужно изменить тему приложения на тему ОС. Если для темы приложения установлено значение «Авто», а тема ОС изменена со «Светлой» на «Темную», мне нужно отобразить приложение в темном режиме. Для этого мне нужно прослушать изменения темы ОС. Я мог бы сделать это для Windows, используя событие SystemEvents.UserPreferenceChanged
из Microsoft.Win32.SystemEvents.
Однако я не могу обнаружить изменения темы ОС в MAC ОС. Я попробовал p/Invoke получить доступ к MAC API, но это не сработало.

Код: Выделить всё

public class ThemeChangeDetector
{

private const string CoreFoundationLibrary = "/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation";

[DllImport(CoreFoundationLibrary)]
private static extern IntPtr CFNotificationCenterGetDistributedCenter();

[DllImport(CoreFoundationLibrary)]
private static extern void CFNotificationCenterAddObserver(IntPtr center, IntPtr observer, CFNotificationCallback callback, IntPtr name, IntPtr obj, uint suspensionBehavior);

private delegate void CFNotificationCallback(IntPtr center, IntPtr observer, IntPtr name, IntPtr obj, IntPtr userInfo);

private static CFNotificationCallback callback = new CFNotificationCallback(NotificationCallback);

private static void NotificationCallback(IntPtr center, IntPtr observer, IntPtr name, IntPtr obj, IntPtr userInfo)
{
Console.WriteLine("Theme changed!");
// Handle theme change
}

public static void StartListening()
{
IntPtr center = CFNotificationCenterGetDistributedCenter();

CFNotificationCenterAddObserver(center, IntPtr.Zero, callback, IntPtr.Zero, IntPtr.Zero, 0);
}
}
Есть идеи, почему?


Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-mac-os
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»