粉红猪小妹和小猪佩奇:InstallShield中使用,修改系统环境变量后想立即生效,使用SendMessage 函数实现,具体要什么写?

来源:百度文库 编辑:中科新闻网 时间:2024/04/18 18:45:23

//环境变量
STRING szEnv;
POINTER pEnv;
nType = REGDB_STRING_EXPAND;
szKey = "SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment";
RegDBGetKeyValueEx(szKey,"Path",nType,szPath,nSize);

PathSet(szPath);
PathAdd(TARGETDIR^"\\bin","", PARTIAL, AFTER);
PathGet(szPath);

RegDBSetKeyValueEx(szKey,"Path",REGDB_STRING_EXPAND,szPath,-1);
//立即起效
szEnv = "Environment";
pEnv = &szEnv;
SendMessage (0xffff, 0x001A, 0, pEnv );

这地方要注意,SendMessage是系统函数,有个问题是,这个函数消息发出后必须返回,才会继续往下进行,有很特殊的情况下,某些系统可能会出现一直不返回的现象。这样,安装程序就一直无法进行下去,和死了一样。