我写了一个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 调用的资源:
谁能帮我找出我做错了什么?
最佳答案
比较直接的翻译是:
SendMessage 0x1A,, "Environment",, ahk_class Progman
wParam 和 lParam 参数是表达式,因此必须用引号引起来的文字字符串。相反,Control 和 WinTitle 参数不是表达式,因此任何引号都将按字面解释。
在 AutoHotkey 中,(LPARAM)
只是括在括号中的变量,而不是类型转换。应该省略。
请注意,MSDN 指示 WM_SETTINGCHANGE应该使用而不是 WM_WININICHANGE ,但这些实际上是一回事。
最后,请注意EnvUpdate向所有窗口广播 WM_SETTINGCHANGE 消息。
EnvUpdate
关于windows-xp - 如何使用 AutoHotkey PostMessage 将 WM_WININICHANGE 发送到程序管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9844814/