Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 4

Модерирует : ShIvADeSt

ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

program sample;
 
uses
  Windows, Messages, Commctrl, SysUtils, IpExport,
  IpHlpApi, IpTypes, IpIfConst, IpRtrMib, Winsock;
 
{$R dialog.res}
{$R ..\..\Lenin_XPStyle.RES}
 
var
  hApp : Integer;
 
procedure CreateColumnsListview(hLV: HWND);
var
  lvc : TLVColumn;
begin
  lvc.mask    := LVCF_TEXT or LVCF_WIDTH or LVCF_FMT;
  lvc.fmt     := LVCFMT_CENTER;
  lvc.pszText := '#';
  lvc.cx      := 26;
  ListView_InsertColumn(hLV, 0, lvc);
  lvc.mask    := LVCF_TEXT or LVCF_WIDTH;
  lvc.pszText := 'Постоянный маршрут';
  lvc.cx      := 160;
  ListView_InsertColumn(hLV, 1, lvc);
  lvc.mask    := lvc.mask or LVCF_FMT;
  lvc.fmt     := LVCFMT_RIGHT;
  lvc.pszText := 'Маска сети';
  lvc.cx      := 160;
  ListView_InsertColumn(hLV, 2, lvc);
end;
 
function IpAddrToString(Addr : DWORD) : string;
var
  inad : in_addr;
begin
  inad.s_addr := Addr;
  Result := inet_ntoa(inad);
end;
 
procedure DisplayRoutingTable;
var
  ForwardTable : PMibIpForwardTable;
  ForwardRow   : TMibIpForwardRow;
  Dest         : string;
  Gate         : string;
  Size         : ULONG;
  I            : Integer;
  lvi          : TLVItem;
  Destination  : string;
  GateWay      : string;
begin
  ZeroMemory(@lvi, SizeOf(lvi));
  lvi.mask := LVIF_TEXT;
  SendMessage(GetDlgItem(hApp, 101), LVM_DELETEALLITEMS, 0, 0);
  SendMessage(GetDlgItem(hApp, 101), WM_SETREDRAW, Integer(FALSE), 0);
  Size := 0;
  if not GetIpForwardTable(nil, Size, True) = ERROR_BUFFER_OVERFLOW then Exit;
  ForwardTable := AllocMem(Size);
  try
    if GetIpForwardTable(ForwardTable, Size, True) = ERROR_SUCCESS then
    begin
      for I := 0 to ForwardTable^.dwNumEntries - 1 do
      begin
        ForwardRow := ForwardTable^.Table[I];
        Dest := IpAddrToString(ForwardRow.dwForwardDest);
        Gate := IpAddrToString(ForwardRow.dwForwardNextHop);
        if ((Destination = '') or (Pos(Destination, Dest) > 0)) and
          ((GateWay = '') or (Pos(GateWay, Dest) > 0)) then
        begin
        lvi.mask     := LVIF_TEXT;
        lvi.iItem    := I;
        lvi.iSubItem := 0;
        lvi.pszText  := '';
        SendMessage(GetDlgItem(hApp, 101), LVM_INSERTITEM, 0, Integer(@lvi));
        lvi.iSubItem := 1;
        lvi.pszText  := PChar(Format('%17s', [Dest]));
        SendMessage(GetDlgItem(hApp, 101), LVM_SETITEM, 0, Integer(@lvi));
        lvi.iSubItem := 2;
        lvi.pszText  := PChar(Format('%17s', [IpAddrToString(ForwardRow.dwForwardMask)]));
        SendMessage(GetDlgItem(hApp, 101), LVM_SETITEM, 0, Integer(@lvi));
        end;
      end;
    end;
  finally
    FreeMem(ForwardTable);
  end;
  SendMessage(GetDlgItem(hApp, 101), WM_SETREDRAW, Integer(TRUE), 0);
end;
 
function MainDlgProc(hWnd : HWND; uMsg : UINT; wParam : wParam; lParam : lParam) : BOOL; stdcall;
begin
  Result := FALSE;
  case uMsg of
    WM_INITDIALOG :
      begin
        hApp := hWnd;
        CreateColumnsListview(GetDlgItem(hApp, 101));
        SendMessage(GetDlgItem(hApp, 101), LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT or LVS_EX_CHECKBOXES);
      end;
    WM_COMMAND :
      begin
        case LoWord(wParam) of
          102 : DisplayRoutingTable;
      end;
  end;
    WM_DESTROY, WM_CLOSE :
      begin
        PostQuitMessage(0);
      end;
  end;
end;
 
begin
  InitCommonControls;
  DialogBox(hInstance, MAKEINTRESOURCE(101), 0, @MainDlgProc);
 
end.
 

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 00:15 28-07-2008 | Исправлено: Maks150988, 01:52 28-07-2008
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 4
ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru