Функция SHChangeNotify (shlobj_core.h)
Уведомляет систему о событии, которое выполнило приложение. Приложение должно использовать эту функцию, если оно выполняет действие, которое может повлиять на оболочку.
Синтаксис
void SHChangeNotify(
LONG wEventId,
UINT uFlags,
[in, optional] LPCVOID dwItem1,
[in, optional] LPCVOID dwItem2
);
Параметры
wEventId
Тип: LONG
Описывает произошедшее событие. Как правило, одновременно указывается только одно событие. Если указано несколько событий, значения, содержащиеся в параметрах dwItem1 и dwItem2 , должны быть одинаковыми соответственно для всех указанных событий. Этот параметр может иметь одно или несколько из следующих значений:
SHCNE_ALLEVENTS
Произошли все события.
SHCNE_ASSOCCHANGED
Сопоставление типов файлов изменилось. SHCNF_IDLIST необходимо указать в параметре uFlags . DwItem1 и dwItem2 не используются и должны иметь значение NULL. Это событие также следует отправлять для зарегистрированных протоколов.
SHCNE_ATTRIBUTES
Атрибуты элемента или папки были изменены. SHCNF_IDLIST или SHCNF_PATH должны быть указаны в uFlags. DwItem1 содержит измененный элемент или папку. DwItem2 не используется и должен иметь значение NULL.
SHCNE_CREATE
Элемент, не имеющий папки, создан. SHCNF_IDLIST или SHCNF_PATH должны быть указаны в uFlags. DwItem1 содержит созданный элемент. DwItem2 не используется и должен иметь значение NULL.
SHCNE_DELETE
Элемент, не имеющий папки, удален. SHCNF_IDLIST или SHCNF_PATH должны быть указаны в uFlags. DwItem1 содержит удаленный элемент. DwItem2 не используется и должен иметь значение NULL.
SHCNE_DRIVEADD
Добавлен диск. SHCNF_IDLIST или SHCNF_PATH должны быть указаны в uFlags. DwItem1 содержит корень добавленного диска. DwItem2 не используется и должен иметь значение NULL.
SHCNE_DRIVEADDGUI
Windows XP и более поздних версий: не используется.
SHCNE_DRIVEREMOVED
Диск удален. SHCNF_IDLIST или SHCNF_PATH должны быть указаны в uFlags. DwItem1 содержит корень диска, который был удален. DwItem2 не используется и должен иметь значение NULL.
SHCNE_EXTENDED_EVENT
В настоящий момент не используется.
SHCNE_FREESPACE
Объем свободного места на диске изменился. SHCNF_IDLIST или SHCNF_PATH должны быть указаны в uFlags. DwItem1 содержит корень диска, на котором было изменено свободное пространство. DwItem2 не используется и должен иметь значение NULL.
SHCNE_MEDIAINSERTED
Носитель был вставлен в диск. SHCNF_IDLIST или SHCNF_PATH должны быть указаны в uFlags. DwItem1 содержит корень диска, содержащего новый носитель. DwItem2 не используется и должен иметь значение NULL.
SHCNE_MEDIAREMOVED
Носитель был удален с диска. SHCNF_IDLIST или SHCNF_PATH должны быть указаны в uFlags. DwItem1 содержит корень диска, с которого был удален носитель. DwItem2 не используется и должен иметь значение NULL.
SHCNE_MKDIR
Папка создана. SHCNF_IDLIST или SHCNF_PATH должны быть указаны в uFlags. DwItem1 содержит созданную папку. DwItem2 не используется и должен иметь значение NULL.
SHCNE_NETSHARE
Общий доступ к папке на локальном компьютере осуществляется через сеть. SHCNF_IDLIST или SHCNF_PATH должны быть указаны в uFlags. DwItem1 содержит папку, к которой предоставляется общий доступ. DwItem2 не используется и должен иметь значение NULL.
SHCNE_NETUNSHARE
Папка на локальном компьютере больше не предоставляется по сети. SHCNF_IDLIST или SHCNF_PATH должны быть указаны в uFlags. DwItem1 содержит папку, к которой больше не предоставляется общий доступ. DwItem2 не используется и должен иметь значение NULL.
SHCNE_RENAMEFOLDER
Имя папки изменилось. SHCNF_IDLIST или SHCNF_PATH должны быть указаны в uFlags. DwItem1 содержит предыдущий идентификатор PIDL или имя папки. DwItem2 содержит новый PIDL-файл или имя папки.
SHCNE_RENAMEITEM
Имя элемента, не являющегося папкой, изменилось. SHCNF_IDLIST или SHCNF_PATH должны быть указаны в uFlags. DwItem1 содержит предыдущий PIDL или имя элемента. DwItem2 содержит новый PIDL-код или имя элемента.
SHCNE_RMDIR
Папка удалена. SHCNF_IDLIST или SHCNF_PATH должны быть указаны в uFlags. DwItem1 содержит удаленную папку. DwItem2 не используется и должен иметь значение NULL.
SHCNE_SERVERDISCONNECT
Компьютер отключен от сервера. SHCNF_IDLIST или SHCNF_PATH должны быть указаны в uFlags. DwItem1 содержит сервер, от которого был отключен компьютер. DwItem2 не используется и должен иметь значение NULL.
SHCNE_UPDATEDIR
Содержимое существующей папки изменилось, но папка по-прежнему существует и не была переименована. SHCNF_IDLIST или SHCNF_PATH должны быть указаны в uFlags. DwItem1 содержит измененную папку. DwItem2 не используется и должен иметь значение NULL. Если папка была создана, удалена или переименована, используйте SHCNE_MKDIR, SHCNE_RMDIR или SHCNE_RENAMEFOLDER соответственно.
SHCNE_UPDATEIMAGE
Изображение в списке системных образов изменилось. SHCNF_DWORD необходимо указать в uFlags.
DwItem2 содержит индекс в списке системных образов, который был изменен. DwItem1 не используется и должен иметь значение NULL.
SHCNE_UPDATEITEM
Существующий элемент (папка или непапка) изменился, но он по-прежнему существует и не был переименован. SHCNF_IDLIST или SHCNF_PATH должны быть указаны в uFlags. DwItem1 содержит измененный элемент. DwItem2 не используется и должен иметь значение NULL. Если элемент без папки был создан, удален или переименован, используйте вместо него SHCNE_CREATE, SHCNE_DELETE или SHCNE_RENAMEITEM соответственно.
SHCNE_DISKEVENTS
Задает сочетание всех идентификаторов событий диска.
SHCNE_GLOBALEVENTS
Задает сочетание всех идентификаторов глобальных событий.
SHCNE_INTERRUPT
Указанное событие произошло в результате системного прерывания. Так как это значение изменяет другие значения событий, его нельзя использовать в одиночку.
uFlags
Тип: UINT
Флаги, которые при сочетании побитового с SHCNF_TYPE указывают значение параметров dwItem1 и dwItem2 . Параметр uFlags должен иметь одно из следующих значений.
SHCNF_DWORD
Параметры dwItem1 и dwItem2 являются значениями DWORD .
SHCNF_IDLIST
dwItem1 и dwItem2 — это адреса структур ITEMIDLIST , представляющих элементы, затронутые изменением. Каждый элемент ITEMIDLIST должен быть относительно папки рабочего стола.
SHCNF_PATH
dwItem1 и dwItem2 — это адреса строк, заканчивающихся nullом, максимальной длины MAX_PATH , которые содержат полные имена путей к элементам, затронутым изменением.
SHCNF_PRINTER
DwItem1 и dwItem2 — это адреса строк, заканчивающихся пустым значением, которые представляют понятные имена принтеров, затронутых изменением.
SHCNF_FLUSH
Функция не должна возвращаться до тех пор, пока уведомление не будет доставлено всем затронутым компонентам. Так как этот флаг изменяет другие флаги типа данных, его нельзя использовать сам по себе.
SHCNF_FLUSHNOWAIT
Функция должна начать доставку уведомлений всем затронутым компонентам, но должна вернуться сразу после начала процесса уведомления. Так как этот флаг изменяет другие флаги типа данных, он не может использоваться сам по себе. Этот флаг включает SHCNF_FLUSH.
SHCNF_NOTIFYRECURSIVE
Уведомлять клиентов, зарегистрированных для всех дочерних элементов.
[in, optional] dwItem1
Тип: LPCVOID
Необязательный элемент. Первое зависимое от события значение.
[in, optional] dwItem2
Тип: LPCVOID
Необязательный элемент. Второе зависимое от события значение.
Возвращаемое значение
None
Remarks
Приложения, которые регистрируют новые обработчики любого типа, должны вызывать SHChangeNotify с флагом SHCNE_ASSOCCHANGED , чтобы указать оболочке сделать недействительными значок и кэш эскизов. При этом также будут загружены новые зарегистрированные обработчики значков и эскизов. Однако обратите внимание, что обработчики наложения значков не перезагружаются.
Строки, на которые указывают dwItem1 и dwItem2 , могут иметь значение ANSI или Юникод.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | shlobj_core.h (включая Shlobj.h) |
Библиотека | Shell32.lib |
DLL | Shell32.dll (версия 4.0 или более поздняя) |
Набор API | ext-ms-win-shell-shell32-l1-2-0 (представлено в Windows 8.1) |