论坛风格切换切换到宽版
  • 2056阅读
  • 4回复

请教老虎版主,修正这个获取IP插件示例 [复制链接]

上一主题 下一主题
离线546242502
 

发帖
332
金钱
-3060
威望
-306
只看楼主 倒序阅读 0 发表于: 2015-08-24
测试错误很多,完全看不懂了……,望老虎版主修正?
  1. #ifdef Unicode
  2. #define A "W"
  3. #define PChar "PAnsiChar"
  4. #else
  5. #define A "A"
  6. #define PChar "PChar"
  7. #endif
  8. [Setup]
  9. AppName=My Program
  10. AppVerName=My Program version 1.0
  11. DefaultDirName={pf}\My Program
  12. DisableProgramGroupPage=yes
  13. [Files]
  14. Source: IPUtils.dll; DestDir: {tmp}; Flags: dontcopy deleteafterinstall
  15. [Code]
  16. const
  17.   MB_IconInformation = $40;
  18. function MessageBox(hWnd: Integer; lpText, lpCaption: String;uType: Cardinal): Integer;
  19.   external 'MessageBox{#A}@user32.dll stdcall';
  20. function GetLocalComputerName: {#PChar};
  21.   external 'GetLocalComputerName@files:IPUtils.dll stdcall';
  22. function GetLocalIPAddress: {#PChar};
  23.   external 'GetLocalIPAddress@files:IPUtils.dll stdcall';
  24. function GetIPAddress(HostName: {#PChar}): {#PChar};
  25.   external 'GetIPAddress@files:IPUtils.dll stdcall';
  26. function NextButtonClick(CurPage: Integer): Boolean;
  27. var
  28.   hWnd: Integer;
  29. begin
  30.   if CurPage = wpWelcome then
  31.     begin
  32.       hWnd := StrToInt(ExpandConstant('{wizardhwnd}'));
  33.       MessageBox(hWnd, GetLocalComputerName, 'Your local computer name:',MB_OK or MB_IconInformation);
  34.       MessageBox(hWnd, GetLocalIPAddress, 'Your local ip address:',MB_OK or MB_IconInformation);
  35.     end;
  36.   Result := True;
  37. end;
  38. //或者
  39. procedure GetIpButtonOnClick(Sender: TObject);
  40. var
  41.   KeyNames: TArrayOfString;
  42.   I: Integer;
  43.   CardIdKeyName, KeyName, ValueName: String;
  44.   ServiceKey, IpAdd: String;
  45. begin
  46.   CardIdKeyName := \'SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards\';
  47.   if RegGetSubkeyNames(HKLM, CardIdKeyName, KeyNames) then
  48.     begin
  49.       for I := 0 to GetArrayLength(KeyNames)-1 do
  50.         begin
  51.           KeyName := CardIdKeyName + \'\\\' + KeyNames[I];
  52.           if RegQueryStringValue(HKLM, KeyName, \'ServiceName\', ValueName) then
  53.             begin
  54.               ServiceKey := \'SYSTEM\\CurrentControlSet\\Services\\\';
  55.               ServiceKey := ServiceKey + ValueName + \'\\Parameters\\Tcpip\';
  56.               if RegQueryMultiStringValue(HKLM, ServiceKey, \'IPAddress\', IpAdd) then
  57.                 begin
  58.                   MsgBox(\'IpAddress:\'#13#10#13#10 + IpAdd, mbInformation, MB_OK);
  59.                   break;
  60.                 end
  61.             end
  62.         end
  63.     end else
  64.   begin
  65.     // add any code to handle failure here
  66.     MsgBox(\'failure\', mbInformation, MB_OK);
  67.   end;
  68. end;

附件: IPUtils_获取本机IP地址.zip (26 K) 下载次数:1
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 1 发表于: 2015-08-25
脚本中许多地方明显错误,这个你自己一看就知道的。

至于 dll 文件的问题,很难说,对它不了解。
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 2 发表于: 2015-08-25
回 1楼(gnatix) 的帖子
gnatix:脚本中许多地方明显错误,这个你自己一看就知道的。至于 dll 文件的问题,很难说,对它不了解。 (2015-08-25 01:20) 

恩,那谢谢老虎版主了
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 3 发表于: 2015-08-25
INNO 已经有标准函数 GetComputerNameString。
获取 IP 地址,可以参考下面的帖子:
http://stackoverflow.com/questions/6166900
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 4 发表于: 2015-08-25
回 3楼(gnatix) 的帖子
gnatix:INNO 已经有标准函数 GetComputerNameString。获取 IP 地址,可以参考下面的帖子:http://stackoverflow.com/questions/6166900 (2015-08-25 02:04) 

感谢老虎版主解答