レジストリ値が変更されるたびにイベントをトリガーしようとしています。
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"
私の問題は、これがトリガーされないことです。イベントは常にタイムアウトします。(私が従おうとしている登録キーは壁紙です)
[
1) regedit のレジストリ値を手動で変更することでイベントをトリガーすることに注意してください。2) これを実行する自動化されたスクリプト:
ctypesインポートwindllから
win32conインポートから *
windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0,"C:\wall.jpg",SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE)
]
事前に助けてくれてありがとう:)
編集::フォーマットについて申し訳ありません