?? unit1.pas
字號:
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 + -