Наши преимущества

Работа с сетевыми подключениями в XE7

neobi1

Турист
Credits
0
Кто что использует, существует ли готовый компонент для работы с сетевыми подключениями (получение информации о состоянии, количество принятой информации количество переданной информации, изминение настроек (IP, DNS, MASK), создание удаление подключения)
 
Есть прекрасный компонент IPHelper там показывает полную статистику, сколько принято, чего отправлено и т.д., список всех интерфейсов, IP и их настроек, даже таблица ARP есть и маршрутизация. Но это только статистика. А вот компонент чтобы управлял настройками Windows, сетевыми подключениями и DNS - такого в жизни не встречал.
 
Есть прекрасный компонент IPHelper там показывает полную статистику, сколько принято, чего отправлено и т.д., список всех интерфейсов, IP и их настроек, даже таблица ARP есть и маршрутизация. Но это только статистика. А вот компонент чтобы управлял настройками Windows, сетевыми подключениями и DNS - такого в жизни не встречал.

Дак этоже вроде не компонент, а библиотека работы с dll через тотже WinAPI или както так.

правда может я чего упустил, пожайлуста ссылку можешь дать на этот компонент ?
 
Последнее редактирование модератором:
А ктонибуть сталкивался с таким: Получить резульятат выполнения команды из cmd окна допустим от команды ipconfig /all кучу примеров пересмотрел неодин неработатет на delphi XE7 постоянно вываливаются ошибки.
 
Я пользовался Indy и ICS. Программа на ICS жрет меньше процессорного времени в 2-3 раза. Кроме того в ICS есть ассинхронное исполнение. А в Indy синхронное.
 
А ктонибуть сталкивался с таким: Получить резульятат выполнения команды из cmd окна допустим от команды ipconfig /all кучу примеров пересмотрел неодин неработатет на delphi XE7 постоянно вываливаются ошибки.
Код:
  procedure RunDosInMemo(DosApp:String;AMemo:TMemo) ;
  const
     ReadBuffer = 2400;
  var
   Security : TSecurityAttributes;
   ReadPipe,WritePipe : THandle;
   start : TStartUpInfo;
   ProcessInfo : TProcessInformation;
   Buffer : PAnsichar;
   BytesRead : DWord;
   Apprunning : DWord;
  begin
   With Security do begin
    nlength := SizeOf(TSecurityAttributes) ;
    binherithandle := true;
    lpsecuritydescriptor := nil;
   end;
   if Createpipe (ReadPipe, WritePipe,
                  @Security, 0) then begin
    Buffer := AllocMem(ReadBuffer*sizeof(Ansichar) + 1) ;
    FillChar(Start,Sizeof(Start),#0) ;
    start.cb := SizeOf(start) ;
    start.hStdOutput := WritePipe;
    start.hStdInput := ReadPipe;
    start.dwFlags := STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW;
    start.wShowWindow := SW_HIDE;
    UniqueString(DosApp);
    if CreateProcess(nil,
           PChar(DosApp),
           @Security,
           @Security,
           true,
           NORMAL_PRIORITY_CLASS,
           nil,
           nil,
           start,
           ProcessInfo)
    then begin
        repeat
            Apprunning := WaitForSingleObject(ProcessInfo.hProcess,100) ;
            Application.ProcessMessages;
        until (Apprunning <> WAIT_TIMEOUT) ;
        Repeat
        BytesRead := 0;
        ReadFile(ReadPipe,Buffer[0], ReadBuffer,BytesRead,nil) ;
        Buffer[BytesRead]:= #0;
        //OemToAnsiBuff(Buffer,Buffer,BytesRead) ;
        AMemo.Text := AMemo.text + String(Buffer) ;
        until (BytesRead < ReadBuffer) ;
   end;
   FreeMem(Buffer) ;
   CloseHandle(ProcessInfo.hProcess) ;
   CloseHandle(ProcessInfo.hThread) ;
   CloseHandle(ReadPipe) ;
   CloseHandle(WritePipe) ;
   end;
  end;
begin
RunDosInMemo('ipconfig.exe /all',Memo1) ;
end;
Честно украдено с просторов и переработано. Проверил на XE5, работает. В зависимости от вывода комментируем или раскоментируем //OemToAnsiBuff(Buffer,Buffer,BytesRead) ;
 
Код:
  procedure RunDosInMemo(DosApp:String;AMemo:TMemo) ;
  const
     ReadBuffer = 2400;
  var
   Security : TSecurityAttributes;
   ReadPipe,WritePipe : THandle;
   start : TStartUpInfo;
   ProcessInfo : TProcessInformation;
   Buffer : PAnsichar;
   BytesRead : DWord;
   Apprunning : DWord;
  begin
   With Security do begin
    nlength := SizeOf(TSecurityAttributes) ;
    binherithandle := true;
    lpsecuritydescriptor := nil;
   end;
   if Createpipe (ReadPipe, WritePipe,
                  @Security, 0) then begin
    Buffer := AllocMem(ReadBuffer*sizeof(Ansichar) + 1) ;
    FillChar(Start,Sizeof(Start),#0) ;
    start.cb := SizeOf(start) ;
    start.hStdOutput := WritePipe;
    start.hStdInput := ReadPipe;
    start.dwFlags := STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW;
    start.wShowWindow := SW_HIDE;
    UniqueString(DosApp);
    if CreateProcess(nil,
           PChar(DosApp),
           @Security,
           @Security,
           true,
           NORMAL_PRIORITY_CLASS,
           nil,
           nil,
           start,
           ProcessInfo)
    then begin
        repeat
            Apprunning := WaitForSingleObject(ProcessInfo.hProcess,100) ;
            Application.ProcessMessages;
        until (Apprunning <> WAIT_TIMEOUT) ;
        Repeat
        BytesRead := 0;
        ReadFile(ReadPipe,Buffer[0], ReadBuffer,BytesRead,nil) ;
        Buffer[BytesRead]:= #0;
        //OemToAnsiBuff(Buffer,Buffer,BytesRead) ;
        AMemo.Text := AMemo.text + String(Buffer) ;
        until (BytesRead < ReadBuffer) ;
   end;
   FreeMem(Buffer) ;
   CloseHandle(ProcessInfo.hProcess) ;
   CloseHandle(ProcessInfo.hThread) ;
   CloseHandle(ReadPipe) ;
   CloseHandle(WritePipe) ;
   end;
  end;
begin
RunDosInMemo('ipconfig.exe /all',Memo1) ;
end;
Честно украдено с просторов и переработано. Проверил на XE5, работает. В зависимости от вывода комментируем или раскоментируем //OemToAnsiBuff(Buffer,Buffer,BytesRead) ;


Респект тебе и уважуха. Давно искал рабочий вариант. Огромное тебе спасибо
 
Код:
  procedure RunDosInMemo(DosApp:String;AMemo:TMemo) ;
  const
     ReadBuffer = 2400;
  var
   Security : TSecurityAttributes;
   ReadPipe,WritePipe : THandle;
   start : TStartUpInfo;
   ProcessInfo : TProcessInformation;
   Buffer : PAnsichar;
   BytesRead : DWord;
   Apprunning : DWord;
  begin
   With Security do begin
    nlength := SizeOf(TSecurityAttributes) ;
    binherithandle := true;
    lpsecuritydescriptor := nil;
   end;
   if Createpipe (ReadPipe, WritePipe,
                  @Security, 0) then begin
    Buffer := AllocMem(ReadBuffer*sizeof(Ansichar) + 1) ;
    FillChar(Start,Sizeof(Start),#0) ;
    start.cb := SizeOf(start) ;
    start.hStdOutput := WritePipe;
    start.hStdInput := ReadPipe;
    start.dwFlags := STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW;
    start.wShowWindow := SW_HIDE;
    UniqueString(DosApp);
    if CreateProcess(nil,
           PChar(DosApp),
           @Security,
           @Security,
           true,
           NORMAL_PRIORITY_CLASS,
           nil,
           nil,
           start,
           ProcessInfo)
    then begin
        repeat
            Apprunning := WaitForSingleObject(ProcessInfo.hProcess,100) ;
            Application.ProcessMessages;
        until (Apprunning <> WAIT_TIMEOUT) ;
        Repeat
        BytesRead := 0;
        ReadFile(ReadPipe,Buffer[0], ReadBuffer,BytesRead,nil) ;
        Buffer[BytesRead]:= #0;
        //OemToAnsiBuff(Buffer,Buffer,BytesRead) ;
        AMemo.Text := AMemo.text + String(Buffer) ;
        until (BytesRead < ReadBuffer) ;
   end;
   FreeMem(Buffer) ;
   CloseHandle(ProcessInfo.hProcess) ;
   CloseHandle(ProcessInfo.hThread) ;
   CloseHandle(ReadPipe) ;
   CloseHandle(WritePipe) ;
   end;
  end;
begin
RunDosInMemo('ipconfig.exe /all',Memo1) ;
end;
Честно украдено с просторов и переработано. Проверил на XE5, работает. В зависимости от вывода комментируем или раскоментируем //OemToAnsiBuff(Buffer,Buffer,BytesRead) ;

Прикольное решение. Надо будет взять на заметку
 
Кто что использует, существует ли готовый компонент для работы с сетевыми подключениями (получение информации о состоянии, количество принятой информации количество переданной информации, изминение настроек (IP, DNS, MASK), создание удаление подключения)

Как увидеть ссылки? | How to see hidden links?
 
Верх