⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 del *.obj del *.dcu del *.~* del *.hpp del *.dcp del *.dpl del *.cesettings del *.log upx sy
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, TFlatListBoxUnit, TFlatCheckBoxUnit, TFlatPanelUnit,
  ExtCtrls, TFlatSpeedButtonUnit, TFlatGroupBoxUnit, ImgList,
  TFlatTitlebarUnit, Menus, StdCtrls, EffectUtils, AnimationEffect,
  TFlatButtonUnit, jpeg;

type
  TForm1=class(TForm)
    FlatTitlebarTop: TFlatTitlebar;
    PanelFull: TPanel;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    FlatGroupBox1: TFlatGroupBox;
    FlatSpeedButton10: TFlatSpeedButton;
    FlatSpeedButton_Exit: TFlatSpeedButton;
    FlatSpeedButton2: TFlatSpeedButton;
    FlatSpeedButton5: TFlatSpeedButton;
    FlatSpeedButton6: TFlatSpeedButton;
    FlatSpeedButton7: TFlatSpeedButton;
    FlatSpeedButton8: TFlatSpeedButton;
    FlatSpeedButton9: TFlatSpeedButton;
    FlatTitlebarBotton: TFlatTitlebar;
    FlatTitlebarLeft: TFlatTitlebar;
    Image1: TImage;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    TabSheet5: TTabSheet;
    TabSheet66: TTabSheet;
    FlatPanel1: TFlatPanel;
    FlatSpeedButton3333: TFlatSpeedButton;
    FlatSpeedButton11: TFlatSpeedButton;
    openiebackimage: TFlatSpeedButton;
    FlatSpeedButton1111: TFlatSpeedButton;
    FlatSpeedButton1000: TFlatSpeedButton;
    bootlist: TListView;
    FlatCheckBox1: TFlatCheckBox;
    FlatCheckBox2: TFlatCheckBox;
    FlatListBox1: TFlatListBox;
    FlatGroupBox2: TFlatGroupBox;
    FlatGroupBox3: TFlatGroupBox;
    FlatGroupBox4: TFlatGroupBox;
    FlatGroupBox5: TFlatGroupBox;
    FlatGroupBox6: TFlatGroupBox;
    ImageListSmallIco: TImageList;
    Timer1: TTimer;
    LabelCpuSpend: TLabel;
    TabSheet6: TTabSheet;
    FlatGroupBox7: TFlatGroupBox;
    TabSheet7: TTabSheet;
    FlatGroupBox8: TFlatGroupBox;
    Image6: TImage;
    Image7: TImage;
    Image8: TImage;
    AnimationEffect1: TAnimationEffect;
    FlatSpeedButton1: TFlatSpeedButton;
    FlatSpeedButton3: TFlatSpeedButton;
    Edit1: TEdit;
    FlatButton1: TFlatButton;
    pmProcess: TPopupMenu;
    ClosebyPID: TMenuItem;
    closebyName: TMenuItem;
    FlatButton2: TFlatButton;
    pmService: TPopupMenu;
    tmStartservice: TMenuItem;
    tmstopService: TMenuItem;
    ImageList: TImageList;
    lvProcess: TListView;
    FlatButton3: TFlatButton;
    lvService: TListView;
    FlatSpeedButton4: TFlatSpeedButton;
    FlatButton4: TFlatButton;
    tvtcpudp: TListView;
    FlatSpeedButton12: TFlatSpeedButton;
    FlatButton5: TFlatButton;
    TreeViewSysInfo: TTreeView;
    PanelTitle1: TPanel;
    PanelTitle2: TPanel;
    PanelTitle3: TPanel;
    PanelTitle4: TPanel;
    PanelTitle5: TPanel;
    PanelTitle6: TPanel;
    PanelTitle7: TPanel;
    PanelTitle8: TPanel;
    procedure FlatSpeedButton_ExitClick(Sender: TObject);
    procedure PageControl1Change(Sender: TObject);
    procedure FlatSpeedButton2Click(Sender: TObject);
    procedure FlatSpeedButton10Click(Sender: TObject);
    procedure FlatSpeedButton5Click(Sender: TObject);
    procedure FlatSpeedButton6Click(Sender: TObject);
    procedure FlatSpeedButton7Click(Sender: TObject);
    procedure FlatSpeedButton8Click(Sender: TObject);
    procedure FlatSpeedButton9Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Image7Click(Sender: TObject);
    procedure tmStartserviceClick(Sender: TObject);
    procedure tmstopServiceClick(Sender: TObject);
    procedure ClosebyPIDClick(Sender: TObject);
    procedure closebyNameClick(Sender: TObject);
    procedure FlatButton2Click(Sender: TObject);
    procedure FlatSpeedButton4Click(Sender: TObject);
    procedure FlatSpeedButton12Click(Sender: TObject);
    procedure lvServiceColumnClick(Sender: TObject; Column: TListColumn);
    procedure lvServiceCompare(Sender: TObject; Item1, Item2: TListItem;
      Data: Integer; var Compare: Integer);
    procedure lvProcessColumnClick(Sender: TObject; Column: TListColumn);
    procedure lvProcessCompare(Sender: TObject; Item1, Item2: TListItem;
      Data: Integer; var Compare: Integer);
    procedure FlatButton3Click(Sender: TObject);
    procedure FlatButton4Click(Sender: TObject);
    procedure FlatButton5Click(Sender: TObject);


  private
    { Private declarations }
    FHostName: array[0..255] of Char;
    FAscending: array[0..2] of Boolean;
    FPrevIndex: array[0..2] of Integer;
  public
    { Public declarations }
    Procedure InitSystem();     //init the whole project
    Procedure FreeSystem();     //free the resources
    procedure GetTcpUdpInfo;    //Get the tcp/udp info
    procedure GetServicesInfo;   //Get the services info
    procedure GetProcessInfo;    //Get the Process info
    function GetPort(port: UINT; proto: PChar): string;
    function GetHost(local: Boolean; ipaddr: UINT): string;
    procedure WriteTCPUDPToFile(Paper: TListview;const FileName: string);
    procedure WriteProcessToFile(Paper: TListview; const FileName: string);
    procedure WriteServiceToFile(Paper: TListview; const FileName: string);
    Function  GetSaveName(DefaultFileName:string='ViewList'):string;

  end;

var
  Form1: TForm1;

implementation

uses Globals,cpuspeed,snmp,UOperateProcess,UProcessService,UTransparent,WinSock,Winsvc;

{$R *.dfm}

procedure TForm1.FlatSpeedButton_ExitClick(Sender: TObject);
begin
Application.Terminate;
end;
procedure TForm1.Image7Click(Sender: TObject);
begin
  Application.Minimize;
end;

procedure TForm1.FlatSpeedButton2Click(Sender: TObject);
begin
PageControl1.ActivePageIndex:=0;
PageControl1Change(Sender);
end;

procedure TForm1.FlatSpeedButton10Click(Sender: TObject);
begin
PageControl1.ActivePageIndex:=1;
PageControl1Change(Sender);
end;

procedure TForm1.FlatSpeedButton5Click(Sender: TObject);
begin
PageControl1.ActivePageIndex:=2;
PageControl1Change(Sender);
end;

procedure TForm1.FlatSpeedButton6Click(Sender: TObject);
begin
PageControl1.ActivePageIndex:=3;
PageControl1Change(Sender);
end;

procedure TForm1.FlatSpeedButton7Click(Sender: TObject);
begin
PageControl1.ActivePageIndex:=4;
PageControl1Change(Sender);
end;

procedure TForm1.FlatSpeedButton8Click(Sender: TObject);
begin
PageControl1.ActivePageIndex:=5;
PageControl1Change(Sender);
end;

procedure TForm1.FlatSpeedButton9Click(Sender: TObject);
begin
PageControl1.ActivePageIndex:=6;
PageControl1Change(Sender);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  CollectCPUData; // Get the data for all processors
  LabelCpuSpend.Caption:=Format('CPU使用率%5.2f%%',[GetCPUUsage(0)*100]);
end;

procedure TForm1.PageControl1Change(Sender: TObject);
begin
  case PageControl1.ActivePageIndex of
  0:begin
    try
      Screen.Cursor:=crAppStart;
      Globals.GetSysInfo(TreeViewSysInfo,ImageListSmallIco);
      Globals.ExpandTreeView(TreeViewSysInfo); //调用展开目录树过程
    finally
     Screen.Cursor:=crDefault;
    end;
      //showmessage('111111111');
    end;
  1:begin
      //showmessage('22222222222');
    end;
  2:begin
      //showmessage('333333333333');
    end;
  3:begin
      //showmessage('4444444444');
    end;
  4:begin
      //showmessage('55555555555');
    end;
  5:begin
      //showmessage('666666666');
    end;
  end;
end;

////////////////////////////////////////////////////////////////////////////////////////
Procedure TForm1.InitSystem();     //init the whole project
var
   WSAData: TWSAData;
begin
  if (WinVer=OS_WIN2k) then
  begin
     LoadWin2k();
  end
  else
  begin
  end;

     if WSAStartup($0101, WSAData) <> 0 then
     begin
          MessageDlg('不能初始化Socket!', mtError, [mbOK], 0);
  ////        sbStatus.Panels[0].text :=M_CREATESOCKETERROR;
  ////        View1.Enabled:=False;
  ////        tmSave.Enabled:=False;
     end
     else
     GetHostName(FHostName, SizeOf(FHostName));
     Left :=(Screen.Width - Width) div 2;
     Top :=(Screen.Height - Height) div 2;
end;

Procedure TForm1.FreeSystem();     //free the resources
begin
  if (WinVer=OS_WIN2k) then
  begin
     unLoadWin2k();
     TransparentWind(Handle, 192, False);
  end;
end;

procedure TForm1.GetTcpUdpInfo();                //Get the tcp/udp info
var
   TcpInfoTable, UdpInfoTable: TTcpInfo;
   hTrapEvent: THandle;
   hIdentifier, Oid: TAsnObjectIdentifier;
   VarBindList: TSnmpVarBindList;
   VarBind: TSnmpVarBind;
   errorStatus, errorIndex: TAsnInteger32;
   currentEntry, newEntry: PTcpInfo;
   currentIndex: UINT;
   localaddr, localport, remoteaddr,remoteport: string;
begin
     if not SnmpExtensionInit(GetTickCount, @hTrapEvent, @hIdentifier) then Exit;
     { TCP connections }
     FillChar(Oid, SizeOf(Oid), 0);
     FillChar(VarBindList, SizeOf(VarBindList), 0);
     FillChar(VarBind, SizeOf(VarBind), 0);
     Oid.idLength :=10;
     Oid.ids :=@TcpIdentifiers;
     SnmpUtilOidAppend(@VarBind.name, @Oid);
     VarBind.value.asnType :=ASN_NULL;
     VarBindList.list :=@VarBind;
     VarBindList.len :=1;
     FillChar(TcpInfoTable, SizeOf(TcpInfoTable), 0);
     TcpInfoTable.prev :=@TcpInfoTable;
     TcpInfoTable.next :=@TcpInfoTable;
     currentIndex :=1;
     currentEntry :=@TcpInfoTable;
     while True do
     begin
          if not SnmpExtensionQuery(SNMP_PDU_GETNEXT,
                                    @VarBindList,
                                    @errorStatus,
                                    @errorIndex) then Exit;
          if VarBind.name.idLength < 10 then Break;
          if currentIndex <> PIds(VarBind.name.ids)^[9] then
          begin
               currentEntry :=TcpInfoTable.next;
               currentIndex :=PIds(VarBind.name.ids)^[9];
          end;
          case currentIndex of
            1: begin
                    newEntry :=PTcpInfo(AllocMem(SizeOf(TTcpInfo)));
                    newEntry^.prev :=currentEntry;
                    newEntry^.next :=@TcpInfoTable;
                    currentEntry^.next :=newEntry;
                    currentEntry :=newEntry;
                    currentEntry^.state :=VarBind.value.number;
               end;
            2: begin
                    currentEntry^.localip :=(PUINT(VarBind.value.address.stream))^;
                    currentEntry :=currentEntry^.next;
               end;
            3: begin
                    currentEntry^.localport :=VarBind.value.number;
                    currentEntry :=currentEntry^.next;
               end;
            4: begin
                    currentEntry^.remoteip :=(PUINT(VarBind.value.address.stream))^;
                    currentEntry :=currentEntry^.next;
               end;
            5: begin
                    currentEntry^.remoteport :=VarBind.value.number;
                    currentEntry :=currentEntry^.next;
               end;
          end;
     end;
     with tvtcpudp.Items do
     begin
          BeginUpdate;
          Clear;
          EndUpdate;
     end;
     currentEntry :=TcpInfoTable.next;
     while currentEntry <> @TcpInfoTable do
     begin
//          if not TBtnEndp.Down then if currentEntry^.state <> 5 then
//          begin
//               currentEntry :=currentEntry^.next;
//               Continue;
//          end;
          localaddr :=Format('%s',
                             [GetHost(True, currentEntry^.localip)]);
          localport :=Format('%s',
                              [GetPort(currentEntry^.localport, 'tcp')]);
          if currentEntry^.remoteip=0 then
             remoteaddr :=Format('%s: %s',
                                 [GetHost(False, currentEntry^.remoteip), '0'])
          else
             remoteaddr :=Format('%s',
                                 [GetHost(False, currentEntry^.remoteip)]);

             remoteport :=Format('%s',
                                  [GetPort(currentEntry^.remoteport, 'tcp')]);             
          with tvtcpudp.Items.Add do
          begin
               ImageIndex :=0;
               Caption :='TCP';
               SubItems.Add(localaddr);
               SubItems.Add(localport);               
               SubItems.Add(remoteaddr);
               if (currentEntry^.state =2) then SubItems.Add('')
               else SubItems.Add(remoteport);
               SubItems.Add(TcpState[currentEntry^.state]);
          end;
          currentEntry :=currentEntry^.next;
     end;
     { UDP connections }
          FillChar(Oid, SizeOf(Oid), 0);
          FillChar(VarBindList, SizeOf(VarBindList), 0);
          FillChar(VarBind, SizeOf(VarBind), 0);
          Oid.idLength :=10;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -