我試圖在每次修改註冊表值時觸發一個事件。Python win32api註冊表項更改
import win32api
import win32event
import win32con
import _winreg
key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,'Control Panel\Desktop',0,_winreg.KEY_READ)
sub_key = _winreg.CreateKey(key,'Wallpaper')
evt = win32event.CreateEvent(None,0,0,None)
win32api.RegNotifyChangeKeyValue(sub_key,1,win32api.REG_NOTIFY_CHANGE_ATTRIBUTES,evt,True)
ret_code=win32event.WaitForSingleObject(evt,3000)
if ret_code == win32con.WAIT_OBJECT_0:
print "CHANGED"
if ret_code == win32con.WAIT_TIMEOUT:
print "TIMED"
我的問題是,這是從來沒有觸發過,事件總是超時。 (我試圖遵循了reg關鍵是牆紙)
[
請注意我觸發1時)在註冊表編輯器2)運行這個自動運行的腳本手動更改註冊表值:
從ctypes的導入WINDLL
從win32con進口*
windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER,0,「C:\ wall.jp g「,SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE)
]
感謝提前任何幫助:)
編輯::關於格式化