Я знаю, что существуют низкоуровневые методы для уведомления ОС 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?