Как Windows 10 обновляет sh значки области уведомлений? - PullRequest
0 голосов
/ 06 февраля 2020

Я знаю, что существуют низкоуровневые методы для уведомления ОС Windows о необходимости обновить sh ее пользовательский интерфейс.

Refre sh значки на рабочем столе.

[DllImport("shell32.dll", CharSet = CharSet.Auto, SetLastError = false)]
private static extern int SHChangeNotify(int eventId, int flags, IntPtr item1, IntPtr item2);

SHChangeNotify(0x8000000, 0x1000, IntPtr.Zero, IntPtr.Zero);

Refre sh переменные среды.

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
private static extern IntPtr SendMessageTimeout(IntPtr hWnd, int Msg, IntPtr wParam, string lParam, int fuFlags, int uTimeout, IntPtr lpdwResult);

IntPtr HWND_BROADCAST = new IntPtr(0xffff);
int WM_SETTINGCHANGE = 0x1a;
int SMTO_ABORTIFHUNG = 0x0002;
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, IntPtr.Zero, null, SMTO_ABORTIFHUNG, 100, IntPtr.Zero);

Refre sh панель задач.

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern bool SendNotifyMessage(IntPtr hWnd, uint Msg, IntPtr wParam, string lParam);

IntPtr HWND_BROADCAST = new IntPtr(0xffff);
int WM_SETTINGCHANGE = 0x1a;
int SMTO_ABORTIFHUNG = 0x0002;
SendNotifyMessage(HWND_BROADCAST, WM_SETTINGCHANGE, IntPtr.Zero, "TraySettings");

Refre sh обои / фон рабочего стола.

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
private static extern int SystemParametersInfo(uint action, uint uParam, string vParam, uint winIni);

uint SPI_SETDESKWALLPAPER = 0x14;
uint SPIF_UPDATEINIFILE = 0x01;
uint SPIF_SENDWININICHANGE = 0x02;
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, wallpaperFile, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);

Но я не нашел правильного с правильными параметрами для обновления sh области уведомлений.

Что стоит за этим пользовательским интерфейсом refre sh?

...