Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1273
Благодарности: 1030

Профиль | Отправить PM | Цитировать


Цитата Gugle:
Мне надо, чтобы в установщике отображался то же самый список, что и в Network Connections / Server Manager »
Gugle, переделал предыдущий скрипт, пришлось добавить еще класс Win32_NetworkAdapter:
Код: Выделить весь код
[code]
type
  IP_ADDR_INFO = array of record
  Name: String;
  IPv4: String;
  IPv6: String;
  MAC: String;
end;

function GetLocalIP(var IPAddrInfo: IP_ADDR_INFO): Boolean;
var
  objSWbemLocator, objSWbemServices, objSWbemObjectSet, objSWbemObject, objRegExp, objRegExpMatches: Variant;
  IndexCount, i: Byte;
  strBuf, ptrnIPv4, ptrnIPv6: String;
begin
  try
    objSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
    objRegExp := CreateOleObject('VBScript.RegExp');
  except
    ShowExceptionMessage;
    Exit;
  end;
  ptrnIPv4 := '(\d{1,3}[.]){3}\d{1,3}'; //IPv4 regexp
  ptrnIPv6 := //IPv6 regexp
    '(([0-9a-fA-F]{1,4}:){1,1}(:[0-9a-fA-F]{1,4}){1,6})|(([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5})|' +
    '(([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4})|//(([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3})|' +
    '(([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2})|(([0-9a-fA-F]{1,4}:){1,6}(:[0-9a-fA-F]{1,4}){1,1})|' +
    '((([0-9a-fA-F]{1,4}:){1,7}|:):)|(:(:[0-9a-fA-F]{1,4}){1,7})|(((([0-9a-fA-F]{1,4}:){6})(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}))|' +
    '((([0-9a-fA-F]{1,4}:){5}[0-9a-fA-F]{1,4}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}))|' +
    '(([0-9a-fA-F]{1,4}:){5}:[0-9a-fA-F]{1,4}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})|' +
    '(([0-9a-fA-F]{1,4}:){1,1}(:[0-9a-fA-F]{1,4}){1,4}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})|' +
    '(([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,3}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})|' +
    '(([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,2}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})';

  objSWbemServices := objSWbemLocator.ConnectServer();
  objSWbemServices.Security_.ImpersonationLevel := 3;
  IndexCount := objSWbemServices.ExecQuery('SELECT * FROM Win32_NetworkAdapter').Count;
  objSWbemObjectSet := objSWbemServices.ExecQuery('SELECT Name,MACAddress FROM Win32_NetworkAdapter WHERE NetConnectionID!=NULL');

  for i := 1 to IndexCount do
  try
    //check object in collection
    objSWbemObjectSet.Item('Win32_NetworkAdapter.DeviceID="' + IntToStr(i) + '"').GetObjectText_;
    strBuf := objSWbemServices.Get('Win32_NetworkAdapterConfiguration.Index=' + IntToStr(i)).GetObjectText_;
    SetArrayLength(IPAddrInfo, GetArrayLength(IPAddrInfo)+1);
    //Name
    IPAddrInfo[GetArrayLength(IPAddrInfo)-1].Name := objSWbemObjectSet.Item('Win32_NetworkAdapter.DeviceID="' + IntToStr(i) + '"').Properties_.Item('Name').Value;
    //IPv4 address
    objRegExp.Pattern := ptrnIPv4;
    if objRegExp.Test(strBuf) then
    begin
      objRegExpMatches := objRegExp.Execute(strBuf);
      IPAddrInfo[GetArrayLength(IPAddrInfo)-1].IPv4 := objRegExpMatches.Item[0].Value;
    end;
    //IPv6 address
    objRegExp.Pattern := ptrnIPv6;
    if objRegExp.Test(strBuf) then
    begin
      objRegExpMatches := objRegExp.Execute(strBuf);
      IPAddrInfo[GetArrayLength(IPAddrInfo)-1].IPv6 := objRegExpMatches.Item[0].Value;
    end;
    //MAC
    IPAddrInfo[GetArrayLength(IPAddrInfo)-1].MAC := objSWbemObjectSet.Item('Win32_NetworkAdapter.DeviceID="' + IntToStr(i) + '"').Properties_.Item('MACAddress').Value;
  except
  end;
  Result := (GetArrayLength(IPAddrInfo) > 0);
end;

procedure InitializeWizard();
var
  i: Byte;
  arr: IP_ADDR_INFO;
begin
if GetLocalIP(arr) then for i := 0 to GetArrayLength(arr)-1 do
  MsgBox(
    'Name: ' + arr[i].Name + #13#10 +
    'IPv4: ' + arr[i].IPv4 + #13#10 +
    'IPv6: ' + arr[i].IPv6 + #13#10 +
    'MAC: ' + arr[i].MAC, mbInformation, MB_OK);
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:53, 08-09-2011 | #3018