Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.10;
Скачать: CL | DM;

Вниз

Программное определение ip адресса   Найти похожие ветки 

 
x3m   (2007-06-30 13:30) [0]

Сабж. Плиз, помогите с этой задачей....


 
Rouse_ ©   (2007-06-30 14:49) [1]

FAQ читал?


 
x3m   (2007-06-30 16:53) [2]

: ) Нет, но щас загляну.))


 
JanMihail ©   (2007-07-01 10:19) [3]

1. Как самый простой вариант, сделай так:
ipconfig > c:\1.txt

Берешь там такую строчку:
IP-адрес  . . . . . . . . . . . . : 212.154.165.150
2. Рациональный вариант брать текст с консоля:
{-------------------------------------------------------------------
Функция возвращает текст окна консоля вызванного в CommandLine }
function GetDosOutput(const CommandLine:string): String;
var
SA: TSecurityAttributes;
SI: TStartupInfo;
PI: TProcessInformation;
StdOutPipeRead, StdOutPipeWrite: THandle;
WasOK: Boolean;
Buffer: array[0..255] of Char;
BytesRead: Cardinal;
WorkDir, Line: String;
begin
Application.ProcessMessages;
with SA do
begin
  nLength := SizeOf(SA);
  bInheritHandle := True;
  lpSecurityDescriptor := nil;
end;
// создаём пайп для перенаправления стандартного вывода
CreatePipe(StdOutPipeRead,  // дескриптор чтения
           StdOutPipeWrite, // дескриптор записи
           @SA,              // аттрибуты безопасности
           0             // количество байт принятых для пайпа - 0 по умолчанию
           );
try
  // Создаём дочерний процесс, используя StdOutPipeWrite в качестве
  //стандартного вывода, а так же проверяем, чтобы он не показывался на экране.
  with SI do
  begin
    FillChar(SI, SizeOf(SI), 0);
    cb := SizeOf(SI);
    dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
    wShowWindow := SW_HIDE;
    hStdInput := GetStdHandle(STD_INPUT_HANDLE); // стандартный ввод не перенаправляем
    hStdOutput := StdOutPipeWrite;
    hStdError := StdOutPipeWrite;
  end;

  // Запускаем компилятор из командной строки
  WorkDir := ExtractFilePath(CommandLine);
  WasOK := CreateProcess(nil, PChar(CommandLine), nil, nil, True, 0, nil, PChar(WorkDir), SI, PI);

  // Теперь, когда дескриптор получен, для безопасности закрываем запись.
  // Нам не нужно, чтобы произошло случайное чтение или запись.
  CloseHandle(StdOutPipeWrite);
  // если процесс может быть создан, то дескриптор, это его вывод
  if not WasOK then
    raise Exception.Create("Could not execute command line!")
  else
    try
      // получаем весь вывод до тех пор, пока DOS-приложение не будет завершено
      Line := "";
      repeat
        // читаем блок символов (могут содержать возвраты каретки и переводы строки)
        WasOK := ReadFile(StdOutPipeRead, Buffer, 255, BytesRead, nil);

        // есть ли что-нибудь ещё для чтения?
        if BytesRead > 0 then
        begin
          // завершаем буфер PChar-ом
          Buffer[BytesRead] := #0;
          // добавляем буфер в общий вывод
          Line := Line + Buffer;
        end;
      until not WasOK or (BytesRead = 0);
      // ждём, пока завершится консольное приложение
      WaitForSingleObject(PI.hProcess, INFINITE);
    finally
      // Закрываем все оставшиеся дескрипторы
      CloseHandle(PI.hThread);
      CloseHandle(PI.hProcess);
    end;
finally
    result:=Line;
    CloseHandle(StdOutPipeRead);
end;
end;



Страницы: 1 вся ветка

Текущий архив: 2008.02.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.036 c
6-1180003716
DVM
2007-05-24 14:48
2008.02.10
Проверить, используется ли уже данный UDP порт.


15-1199221336
Kenny
2008-01-02 00:02
2008.02.10
Компьютер написал книгу


15-1199784471
porter
2008-01-08 12:27
2008.02.10
Диаграмма классов


1-1194184086
Zakir
2007-11-04 16:48
2008.02.10
Передача данных с помощью сообщений windows


2-1200445189
VladSel
2008-01-16 03:59
2008.02.10
сравнение чисел