Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2009, 21:29   #1
Garacio_cain
Пользователь
 
Аватар для Garacio_cain
 
Регистрация: 05.01.2008
Сообщений: 85
По умолчанию Вызвать IPConfig программно

Собственно ситуация такая. Нужно узнать IP адрес машины в интернет. Это как известно делается командой IPConfig но вопрос в следующем. Как эту функцию вызвать программно? Т.е. пользователь работающий с программой не должен ничего делать, программа должна сама автоматически определить IP компьютера и отправить его на сервер. С отправкой на сервер проблем нет, но вот с IP проблема.
Garacio_cain вне форума Ответить с цитированием
Старый 05.01.2009, 15:08   #2
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Зачем тебе вызывает IPConfig програмно ?
если работал с реестром пройдись по всем веткам
HKEY_LOCAL_MACHINE\SYSTEM\ControlSe tХХХ\Services\Tcpip\Parameters\Inte rfaces и считай себе все IP адреса которые в текущий момент активны !
Вот и все проблемы!
А в форме (или где оно там) дай УЗЕРУ право выбрать IP. Ведь на компе может быть 2,3 и более сетевых плат+модем !
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 05.01.2009, 22:37   #3
DOLBY
Форумчанин
 
Аватар для DOLBY
 
Регистрация: 12.12.2007
Сообщений: 121
По умолчанию

Вот работа с консольной прогой Ping:
Код:
procedure Ping(IP: String; OutMemo:TMemo);
const BUFSIZE = 2000;
var SecAttr: TSecurityAttributes;
    hReadPipe, hWritePipe: THandle;
    StartupInfo: TStartUpInfo;
    ProcessInfo: TProcessInformation;
    Buffer: Pchar;
    WaitReason,BytesRead: DWord;
begin
 with SecAttr do
  begin
   nlength:= SizeOf(TSecurityAttributes);
   binherithandle:= true;
   lpsecuritydescriptor:= nil;
  end;
 if Createpipe(hReadPipe, hWritePipe, @SecAttr, 0) then
  begin
   Buffer:= AllocMem(BUFSIZE + 1);
   FillChar(StartupInfo, Sizeof(StartupInfo), #0);
   StartupInfo.cb:= SizeOf(StartupInfo);
   StartupInfo.hStdOutput:= hWritePipe;
   StartupInfo.hStdInput:= hReadPipe;
   StartupInfo.dwFlags:= STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW;
   StartupInfo.wShowWindow:= SW_HIDE;
   if CreateProcess(nil, PChar('ping.exe -n 10 -w 1000 '+IP), @SecAttr, @SecAttr, true, NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then
    begin
     repeat
      WaitReason:= WaitForSingleObject( ProcessInfo.hProcess,100);
      Application.ProcessMessages;
     until(WaitReason <> WAIT_TIMEOUT);
     repeat
      BytesRead := 0;
      ReadFile(hReadPipe, Buffer[0], BUFSIZE, BytesRead, nil);
      Buffer[BytesRead]:= #0;
      OemToAnsi(Buffer,Buffer);
      OutMemo.Text := OutMemo.text + String(buffer);
     until(BytesRead < BUFSIZE);
    end;
   FreeMem(Buffer);
   CloseHandle(ProcessInfo.hProcess);
   CloseHandle(ProcessInfo.hThread);
   CloseHandle(hReadPipe);
   CloseHandle(hWritePipe);
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
 Ping(Edit1.Text,Memo1);
end;

end.
Несложно будет переделать и под IpConfig
Компьютеры - вещь слишком сложная, чтобы работать в принципе. Поэтому то, что они работают хоть как-то, уже чудо.
DOLBY вне форума Ответить с цитированием
Старый 13.01.2009, 16:26   #4
Garacio_cain
Пользователь
 
Аватар для Garacio_cain
 
Регистрация: 05.01.2008
Сообщений: 85
По умолчанию

DOLBY, JUDAS Спасибо большое!
Garacio_cain вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как программно вызвать щелчок мышью в TWebBrowser Megabotans Win Api 3 12.12.2010 08:24
Как программно вызвать Dial Up Helg Работа с сетью в Delphi 4 01.04.2009 23:05
Как вызвать стандартную таблицу символов Windows программно? SkAndrew Общие вопросы Delphi 11 13.04.2008 14:47
Как вызвать прерывание в Delphi? Andrew Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 24.05.2007 17:17
Как вызвать процедуру ??? Marat Помощь студентам 8 02.03.2007 15:11