Главная страница
    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.044 c
1-1194005184
davinchi
2007-11-02 15:06
2008.02.10
Клиент-серверное приложение, подскажите как лучше реализовать?


2-1200417720
сопляк
2008-01-15 20:22
2008.02.10
TToolBar - ошибка винды или VCL?


2-1200834315
SveTT
2008-01-20 16:05
2008.02.10
Выделить CheckListBox


15-1199897605
Lip
2008-01-09 19:53
2008.02.10
Кто где учился? Посоветуйте куда пойти!


6-1179287240
-=Germe$=-
2007-05-16 07:47
2008.02.10
HTTP запрос средствами WinSock





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский