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

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

Ветеран


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

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


Здравствуйте, накидал скрипт, как можно узнать IP адрес машины, на которой запущен инсталлятор (необходимо соединение с интернетом):
Пример

Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
Compression=lzma2/ultra
InternalCompressLevel=ultra
SolidCompression=yes

[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl

[Code]
{===============================================================================}
{ Script name: GetMyIP.iss                                                      }
{ Script version: 1.0                                                           }
{ Author: Serega, http://forum.oszone.net/member.php?userid=88670               }
{                                                                               }
{ This script shows how to learn your IP                                        }
{ Этот скрипт показывает, как узнать свой IP                                    }
{===============================================================================}
var
  pnl: TPanel;
  lbl: TLabel;
  Memo: TMemo;
  Button: TButton;

function GetHtmlSource(const url: string): string;
var
  vHttp: Variant;
begin
  try
    vHttp := CreateOleObject('Microsoft.XMLHTTP');
    vHttp.open('GET', url, False);
    vHttp.send;
    Result := vHttp.responseText;
  except
    Result := 'Возникла ошибка при обращении к серверу, проверьте настройки соединения.';
  end;
end;

procedure ButtonClick(Sender: TObject);
var
  strHtml: string;
begin
  try
    Memo.Clear;
    lbl.Caption := '';
    strHtml := GetHtmlSource('http://2ip.ru/');
    Memo.Lines.Text := strHtml;
    if (strHtml <> '') and (Pos('ошибка', Copy(strHtml, 1, 20)) = 0) then
      begin
        Delete(strHtml, 1, Pos('class="ip"', strHtml));
        Delete(strHtml, 1, Pos('<big', strHtml));
        Delete(strHtml, 1, Pos('>', strHtml));
        SetLength(strHtml, Pos('<', strHtml)-1);
        lbl.Caption := 'Ваш IP адрес: ' + Trim(strHtml);
      end;
  finally
    SetLength(strHtml, 0);
  end;
end;

procedure InitializeWizard();
begin
  pnl := TPanel.Create(WizardForm);
  with pnl do
    begin
      Parent := WizardForm;
      Left := 0;
      Top := 0;
      Align := alClient;
    end;
  WizardForm.CancelButton.Parent := pnl;

  with TLabel.Create(WizardForm) do
    begin
      Parent := pnl;
      AutoSize := True;
      Left := ScaleX(15);
      Top := ScaleY(10);
      Caption := 'Исходный код страницы (http://2ip.ru/):';
    end;

  Memo := TMemo.Create(WizardForm);
  with Memo do
    begin
      Parent := pnl;
      SetBounds(ScaleX(15), ScaleY(30), WizardForm.ClientWidth - ScaleX(30), ScaleY(285));
      ReadOnly := True;
      ScrollBars := ssBoth;
      Text := '';
    end;

  Button := TButton.Create(WizardForm);
  with Button do
    begin
      Parent := pnl;
      SetBounds(ScaleX(300), WizardForm.CancelButton.Top, ScaleX(85), ScaleY(23));
      Caption := 'Узнать IP';
      OnClick := @ButtonClick;
    end;

  lbl := TLabel.Create(WizardForm);
  with lbl do
    begin
      Parent := pnl;
      AutoSize := True;
      Left := ScaleX(25);
      Top := ScaleY(328);
      Font.Size := 12;
    end;
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  WizardForm.CancelButton.Caption := 'Закрыть';
end;

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Последний раз редактировалось Serega, 31-03-2011 в 22:27. Причина: оптимизация: исправил с (Pos('ошибка', strHtml) = 0) на (Pos('ошибка', Copy(strHtml, 1, 20)) = 0)

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:56, 31-03-2011 | #1204