из 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
Мобильная версия