我写了一个更新环境变量的script,但我需要告诉程序管理员使用这些新信息更新计算机的程序。我被赋予了这个作为在另一个程序中进行的API调用的原因:
::SendMessage(::FindWindow("Progman", NULL), WM_WININICHANGE, 0L, (LPARAM)"Environment");
我试图将其转换为AutoHotKey PostMessage调用,但我做错了,因为它无法正常工作。这是我到目前为止的地方:
PostMessage, 0x1A,, (LPARAM)"Environment", "Program Manager"
以下是我一直在寻找的AHK资源:
Send Messages to a Window or Its Controls
以下是我用来计算原始API调用的资源:
任何人都可以帮我弄清楚我做错了吗?
答案 0 :(得分:2)
有点直接的翻译是:
SendMessage 0x1A,, "Environment",, ahk_class Progman
wParam和lParam参数是表达式,因此必须引用文字字符串。相反,Control和WinTitle参数不是表达式,因此任何引号都会按字面解释。
在AutoHotkey中,(LPARAM)
只是括在括号中的变量,而不是类型转换。它应该被省略。
请注意,MSDN表示应使用WM_SETTINGCHANGE代替WM_WININICHANGE,但这些实际上是同一个。
最后,请注意EnvUpdate向所有窗口广播WM_SETTINGCHANGE消息。
EnvUpdate