Поделиться через


Функция 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)