gpt4 book ai didi

winapi - 更改环境值后Innosetup SendMessage

转载 作者:行者123 更新时间:2023-12-02 14:04:28 27 4
gpt4 key购买 nike

我使用 InnoSetup 在注册表中设置环境变量:

[Registry]
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; ValueName: "MY_PROGRAM_HOME_DIR"; ValueData: "{app}"

但是系统无法看到这个变量,直到我调用SendMessage

[Code]
procedure DeinitializeSetup();
begin
// HWND_BROADCAST = $FFFF
// WM_SETTINGCHANGE = $001A
SendMessage($FFFF, $001A, 0, Longint(PChar('Environment')));
end;

InnoSetup 说:

... Column 60: Type mismatch

如何在 InnoSetup 脚本中将 PChar 正确类型转换为 Longint

最佳答案

使用ChangesEnvironment指令而不是从脚本代码中执行相同的操作。来自引用:

When set to yes, at the end of the installation Setup will notify other running applications (notably Windows Explorer) that they should reload their environment variables from the registry.

在InnoSetup中,当使用上述指令时,内部会调用以下代码:

SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,
LPARAM(PChar('Environment')), SMTO_ABORTIFHUNG, 5000, MsgResult);

关于winapi - 更改环境值后Innosetup SendMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12550791/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com