"WallPaper" - это значение , а не ключ / подраздел.Поэтому, если вы запустите regedit.exe, вы заметите, что создали новый ключ «HKCU \ Control Panel \ Desktop \ WallPaper», который отличается от значения «WallPaper» в «HKCU \ Control Panel \ Desktop»key.
Вот один из способов изменить ваш код для прослушивания изменений:
key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, 'Control Panel\Desktop', 0, _winreg.KEY_READ)
evt = win32event.CreateEvent(None, 0, 0, None)
win32api.RegNotifyChangeKeyValue(key, 1, win32api.REG_NOTIFY_CHANGE_LAST_SET, evt, True)
Обратите внимание, что мы больше не используем подраздел WallPaper, и обратите внимание, что "уведомитель-установщик" имеетбыл изменен на NOTIFY_CHANGE_LAST_SET;из документов это будет:
Уведомлять вызывающего абонента об изменениях значения ключа.Это может включать добавление или удаление значения или изменение существующего значения.
Остальной код будет работать, но вам нужно будет использовать функцию QueryValueEx до и после, чтобы убедиться, что это былоЗначение WallPaper, которое изменилось, а не другое.(Я не знаю, как прислушиваться к конкретным значениям.)