windows-xp - 如何使用 AutoHotkey PostMessage 将 WM_WININICHANGE 发送到程序管理器?

标签 windows-xp environment-variables autohotkey

我写了一个script它会更新环境变量,但我需要告诉程序管理器使用此新信息更新计算机的程序。我得到的结果是在另一个程序中进行的 API 调用,导致出现这种情况:

::SendMessage(::FindWindow("Progman", NULL), WM_WININICHANGE, 0L, (LPARAM)"Environment");

我试图将其转换为 AutoHotKey PostMessage 调用,但我做错了,因为它不起作用。这是我到目前为止所得到的:

PostMessage, 0x1A,, (LPARAM)"Environment", "Program Manager"

以下是我为此一直在寻找的 AHK 资源:

List of Windows Messages

Send Messages to a Window or Its Controls

PostMessage / SendMessage

以下是我用来确定原始 API 调用的资源:

SendMessage function

WM_WININICHANGE message

谁能帮我找出我做错了什么?

最佳答案

比较直接的翻译是:

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/

相关文章:

windows - 运行批处理文件时 cmd 中的奇怪输出

command-line - Windows 命令提示符中的 F-N 快捷键

C# 更新环境变量 - SendMessageTimeout

windows-7 - window 7 : environment variable not working

matlab - 使用程序调用 screen 时不传输 screen 环境变量

Autohotkey - 如何仅调整特定程序的音量?

autohotkey - 当文件开始存在时如何使用自动热键对其进行操作?

c++ - SetSuspendState 的问题

windows-7 - VirtualBox - 同步问题

autohotkey - 使用自动热键中的键发送现有修饰符?