我在做安装程序时,修改了环境变量\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment中的path值,然后调用SendMessageTimeOut通知系统更新环境变量。但对Delphi不熟,具体实现时出现一些问题,请高手指正。编译运行后出现“运行时间错误”。代码如下:function SendMessageTimeOut(hWnd: Integer; Msg: Integer; wParam: Integer; lParam: Integer; fuFlags: Integer; uTimeOut: Integer; lpdwResult: Cardinal): Integer;
external '[email protected] stdcall';procedure AfterMyProgInstall(S: String);
var
  lParam, wParam : Integer;
  dwReturnValue:Cardinal;
begin
  wParam := 0;
  lParam := 0;
  
  SendMessageTimeout(HWND_BROADCAST,
                     WM_SETTINGCHANGE,
                     wParam,
                   lParam,
                   SMTO_NORMAL,
                     5000,
                     dwReturnValue);
end;

解决方案 »

  1.   

    function SendMessageTimeOut(hWnd: Integer; Msg: Integer; wParam: Integer; lParam: Integer; fuFlags: Integer; uTimeOut: Integer; lpdwResult: Cardinal): Integer;stdcall;
    external '[email protected]';
      

  2.   

    不行,编译通不过。
    我是使用inno setup 4.27做安装盘。inno setup是用delphi写的,带有delphi的编译器,按你给出的stdcall换位,编译通不过,提示在stdcall之前要用begin。
    他自带的例子就是这样写的,编译没有任何问题。那问题出在哪?
      

  3.   

    错误提示:运行时间错误,不能导入dll:user32.dll。