Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];

Вниз

Программное определение 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.038 c
1-1193818965
Skymen
2007-10-31 11:22
2008.02.10
Програмирование скролинга (выбор алгоритма)


15-1200072995
vrem_
2008-01-11 20:36
2008.02.10
Нам пишут!


15-1199385249
@!!ex
2008-01-03 21:34
2008.02.10
Легкий браузер...


2-1200288161
АндрейК
2008-01-14 08:22
2008.02.10
номер строки в DBGrid


15-1199907116
Rouse_
2008-01-09 22:31
2008.02.10
Махонькое обновление моего ресурса





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский