版权声明:
本文由Lyris完成,首发于CSDN,作者保留中文版权。
未经许可,不得使用于任何商业用途。
欢迎转载,但请保持文章及版权声明完整。
如需联络请发邮件:chenwentao@gmail.com
unit NetMonConsts;
interface
uses Windows;
type
TShareInfo2 = packed record
shi2_netname: PWChar;
shi2_type: DWORD;
shi2_remark: PWChar;
shi2_permissions: DWORD;
shi2_max_uses: DWORD;
shi2_current_uses: DWORD;
shi2_path: PWChar;
shi2_passwd: PWChar;
end;
PShareInfo2 = ^TShareInfo2;
TShareInfo2Array = array[0..512] of TShareInfo2;
PShareInfo2Array = ^TShareInfo2Array;
type
TShareInfo50 = packed record
shi50_netname: array[0..12] of Char;
shi50_type: Byte;
shi50_flags: Word;
shi50_remark: PChar;
shi50_path: PChar;
shi50_rw_password: array[0..8] of Char;
shi50_ro_password: array[0..8] of Char;
end;
type
TSessionInfo502 = packed record
Sesi502_cname: PWideChar;
Sesi502_username: PWideChar;
Sesi502_num_opens: DWORD;
Sesi502_time: DWORD;
Sesi502_idle_time: DWORD;
Sesi502_user_flags: DWORD;
Sesi502_cltype_name: PWideChar;
Sesi502_transport: PWideChar;
end;
PSessionInfo502 = ^TSessionInfo502;
TSessionInfo502Array = array[0..512] of TSessionInfo502;
PSessionInfo502Array = ^TSessionInfo502Array;
type
TSessionInfo50 = packed record
Sesi50_cname: PChar;
Sesi50_username: PChar;
sesi50_key: Cardinal;
sesi50_num_conns: Word;
sesi50_num_opens: Word;
sesi50_time: Cardinal;
sesi50_idle_time: Cardinal;
sesi50_protocol: Byte;
pad1: Byte;
end;
type
TFileInfo3 = packed record
fi3_id: DWORD;
fi3_permissions: DWORD;
fi3_num_locks: DWORD;
fi3_pathname: PWChar;
fi3_username: PWChar;
end;
PFileInfo3 = ^TFileInfo3;
TFileInfo3Array = array[0..512] of TFileInfo3;
PFileInfo3Array = ^TFileInfo3Array;
type
TFileInfo50 = packed record
fi50_id: Cardinal;
fi50_permissions: WORD;
fi50_num_locks: WORD;
fi50_pathname: PChar;
fi50_username: PChar;
fi50_sharename: PChar;
end;
type
TMibIfRow = packed record
wszName: array[0..255] of WideChar;
dwIndex: DWORD;
dwType: DWORD;
dwMtu: DWORD;
dwSpeed: DWORD;
dwPhysAddrLen: DWORD;
bPhysAddr: array[0..7] of Byte;
dwAdminStatus: DWORD;
dwOperStatus: DWORD;
dwLastChange: DWORD;
dwInOctets: DWORD;
dwInUcastPkts: DWORD;
dwInNUCastPkts: DWORD;
dwInDiscards: DWORD;
dwInErrors: DWORD;
dwInUnknownProtos: DWORD;
dwOutOctets: DWORD;
dwOutUCastPkts: DWORD;
dwOutNUCastPkts: DWORD;
dwOutDiscards: DWORD;
dwOutErrors: DWORD;
dwOutQLen: DWORD;
dwDescrLen: DWORD;
bDescr: array[0..255] of Char;
end;
TMibIfArray = array[0..512] of TMibIfRow;
PMibIfRow = ^TMibIfRow;
PMibIfArray = ^TMibIfArray;
type
TMibIfTable = packed record
dwNumEntries: DWORD;
Table: TMibIfArray;
end;
PMibIfTable = ^TMibIfTable;
var
NetShareEnumNT: function(servername: PWChar;
level: DWORD;
bufptr: Pointer;
prefmaxlen: DWORD;
entriesread,
totalentries,
resume_handle: LPDWORD): DWORD; stdcall;
var
NetShareEnum: function(pszServer: PChar;
sLevel: Cardinal;
pbBuffer: Pchar;
cbBuffer: Cardinal;
pcEntriesRead,
pcTotalAvail: Pointer): DWORD; stdcall;
var
NetShareDelNT: function(servername: PWideChar;
netname: PWideChar;
reserved: DWORD): LongInt; stdcall;
var
NetShareDel: function(pszServer,
pszNetName: PChar;
usReserved: Word): DWORD; stdcall;
var
NetShareAddNT: function(servername: PWideChar;
level: DWORD;
buf: Pointer;
parm_err: LPDWORD): DWORD; stdcall;
var
NetShareAdd: function(pszServer: Pchar;
sLevel: Cardinal;
pbBuffer: PChar;
cbBuffer: Word): DWORD; stdcall;
var
NetSessionEnumNT: function(servername,
UncClientName,
username: PWChar;
level: DWORD;
bufptr: Pointer;
prefmaxlen: DWORD;
entriesread,
totalentries,
resume_handle: LPDWORD): DWORD; stdcall;
var
NetSessionEnum: function(pszServer: PChar;
sLevel: DWORD;
pbBuffer: Pointer;
cbBuffer: DWORD;
pcEntriesRead,
pcTotalAvial: Pointer): integer; stdcall;
var
NetSessionDelNT: function(ServerName,
UncClientName,
username: PWChar): DWORD; stdcall;
var
NetSessionDel: function(pszServer: PChar;
pszClientName: PChar;
sReserved: SmallInt): DWORD; stdcall;
var
NetFileEnumNT: function(servername,
basepath,
username: PWChar;
level: DWORD;
bufptr: Pointer;
prefmaxlen: DWORD;
entriesread,
totalentries,
resume_handle: LPDWORD): DWORD; stdcall;
var
NetFileEnum: function(pszServer,
pszBasePath: PChar;
sLevel: DWORD;
pbBuffer: Pointer;
cbBuffer: DWORD;
pcEntriesRead,
pcTotalAvail: pointer): integer; stdcall;
var
NetFileClose: function(ServerName: PWideChar;
FileId: DWORD): DWORD; stdcall;
var
NetFileClose2: function(pszServer: PChar;
ulFileId: LongWord): DWORD; stdcall;
var
GetIfTable: function(pIfTable: PMibIfTable;
pdwSize: PULONG;
bOrder: Boolean): DWORD; stdcall;
implementation
end.
unit NetMonUtils;
interface
uses Windows, Classes, NetMonConsts;
function IsNT(var Value: Boolean): Boolean;
procedure GetShares(SharesList: TStrings);
procedure CloseShare(ShareName: string);
procedure AddShare(ShareName, ShareDir: string);
procedure GetSessions(List: TStrings);
procedure CloseSession(SessionName: string);
procedure GetFiles(FilesList: TStrings);
procedure CloseFile(FileIndex: string);
procedure GetTrafficSets(TrafficsList: TStrings);
function IntegerToTimeStr(Value: Integer): string;
type
TShareInfo2Obj = class
private
Fshi2_netname: string;
Fshi2_path: string;
procedure Setshi2_netname(const Value: string);
procedure Setshi2_path(const Value: string);
public
constructor Create(ShareInfo2: TShareInfo2);
property shi2_netname: string read Fshi2_netname write Setshi2_netname;
property shi2_path: string read Fshi2_path write Setshi2_path;
end;
TShareInfo50Obj = class
private
Fshi50_netname: string;
Fshi50_path: string;
procedure Setshi50_netname(const Value: string);
procedure Setshi50_path(const Value: string);
public
constructor Create(ShareInfo50: TShareInfo50);
property shi50_netname: string read Fshi50_netname write Setshi50_netname;
property shi50_path: string read Fshi50_path write Setshi50_path;
end;
TSessionInfo502Obj = class
private
FSesi502_Time: DWord;
Fsesi502_idle_time: DWord;
FSesi502_num_opens: DWord;
FSesi502_cname: WideString;
FSesi502_username: WideString;
procedure SetSesi502_cname(const Value: WideString);
procedure Setsesi502_idle_time(const Value: DWord);
procedure SetSesi502_num_opens(const Value: DWord);
procedure SetSesi502_Time(const Value: DWord);
procedure SetSesi502_username(const Value: WideString);
public
constructor Create(SessionInfo502: TSessionInfo502);
property Sesi502_cname: WideString read FSesi502_cname write SetSesi502_cname;
property Sesi502_username: WideString read FSesi502_username write SetSesi502_username;
property Sesi502_num_opens: DWord read FSesi502_num_opens write SetSesi502_num_opens;
property Sesi502_Time: DWord read FSesi502_Time write SetSesi502_Time;
property sesi502_idle_time: DWord read Fsesi502_idle_time write Setsesi502_idle_time;
end;
TSessionInfo50Obj = class
private
Fsesi50_num_opens: Integer;
Fsesi50_time: Integer;
Fsesi50_idle_time: Integer;
FSesi50_cname: WideString;
FSesi50_username: WideString;
procedure SetSesi50_cname(const Value: WideString);
procedure Setsesi50_idle_time(const Value: Integer);
procedure Setsesi50_num_opens(const Value: Integer);
procedure Setsesi50_time(const Value: Integer);
procedure SetSesi50_username(const Value: WideString);
public
constructor Create(SessionInfo50: TSessionInfo50);
property Sesi50_cname: WideString read FSesi50_cname write SetSesi50_cname;
property Sesi50_username: WideString read FSesi50_username write SetSesi50_username;
property sesi50_num_opens: Integer read Fsesi50_num_opens write Setsesi50_num_opens;
property sesi50_time: Integer read Fsesi50_time write Setsesi50_time;
property sesi50_idle_time: Integer read Fsesi50_idle_time write Setsesi50_idle_time;
end;
TFileInfo3Obj = class
private
Ffi3_permissions: DWord;
Ffi3_num_locks: DWord;
Ffi3_id: DWord;
Ffi3_pathname: WideString;
Ffi3_username: WideString;
procedure Setfi3_id(const Value: DWord);
procedure Setfi3_num_locks(const Value: DWord);
procedure Setfi3_pathname(const Value: WideString);
procedure Setfi3_permissions(const Value: DWord);
procedure Setfi3_username(const Value: WideString);
public
constructor Create(FileInfo3: TFileInfo3);
property fi3_id: DWord read Ffi3_id write Setfi3_id;
property fi3_permissions: DWord read Ffi3_permissions write Setfi3_permissions;
property fi3_num_locks: DWord read Ffi3_num_locks write Setfi3_num_locks;
property fi3_pathname: WideString read Ffi3_pathname write Setfi3_pathname;
property fi3_username: WideString read Ffi3_username write Setfi3_username;
end;
type
TFileInfo50Obj = class
private
Ffi50_id: Integer;
Ffi50_pathname: string;
Ffi50_username: string;
Ffi50_sharename: string;
Ffi50_permissions: WORD;
Ffi50_num_locks: WORD;
procedure Setfi50_id(const Value: Integer);
procedure Setfi50_num_locks(const Value: WORD);
procedure Setfi50_pathname(const Value: string);
procedure Setfi50_permissions(const Value: WORD);
procedure Setfi50_sharename(const Value: string);
procedure Setfi50_username(const Value: string);
public
constructor Create(FileInfo50: TFileInfo50);
property fi50_id: Integer read Ffi50_id write Setfi50_id;
property fi50_permissions: WORD read Ffi50_permissions write Setfi50_permissions;
property fi50_num_locks: WORD read Ffi50_num_locks write Setfi50_num_locks;
property fi50_pathname: string read Ffi50_pathname write Setfi50_pathname;
property fi50_username: string read Ffi50_username write Setfi50_username;
property fi50_sharename: string read Ffi50_sharename write Setfi50_sharename;
end;
type
TMAC = array[0..7] of Byte;
TTraffic = class
private
FMAC: string;
FdwOutOctets: Integer;
FdwInOctets: Integer;
FCaption: string;
procedure SetCaption(const Value: string);
procedure SetdwInOctets(const Value: Integer);
procedure SetdwOutOctets(const Value: Integer);
procedure SetMAC(const Value: string);
function GetMAC(Value: TMAC; Length: DWORD): string;
public
constructor Create(MibIfRow: TMibIfRow);
property Caption: string read FCaption write SetCaption;
property MAC: string read FMAC write SetMAC;
property dwInOctets: Integer read FdwInOctets write SetdwInOctets;
property dwOutOctets: Integer read FdwOutOctets write SetdwOutOctets;
end;
implementation
uses SysUtils;
function IsNT(var Value: Boolean): Boolean;
var Ver: TOSVersionInfo;
BRes: Boolean;
begin
Ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
BRes := GetVersionEx(Ver);
if not BRes then
begin
Result := False;
Exit;
end else
Result := True;
case Ver.dwPlatformId of
VER_PLATFORM_WIN32_NT: Value := True;
VER_PLATFORM_WIN32_WINDOWS: Value := False;
VER_PLATFORM_WIN32s: Result := False
end;
end;
procedure GetShares(SharesList: TStrings);
var
i: Integer;
FLibHandle: THandle;
ShareNT: PShareInfo2Array;
entriesread, totalentries: DWORD; //<= Win NT
Share: array[0..512] of TShareInfo50;
pcEntriesRead, pcTotalAvail: Word; //<= Windows 9x-Me
OS: Boolean;
begin
if not IsNT(OS) then Exit;
if OS then begin
FLibHandle := LoadLibrary('NETAPI32.DLL');
if FLibHandle = 0 then Exit;
@NetShareEnumNT := GetProcAddress(FLibHandle, 'NetShareEnum');
if not Assigned(NetShareEnumNT) then
begin
FreeLibrary(FLibHandle);
Exit;
end;
ShareNT := nil;
if NetShareEnumNT(nil, 2, @ShareNT, DWORD(-1),
@entriesread, @totalentries, nil) <> 0 then
begin
FreeLibrary(FLibHandle);
Exit;
end;
if entriesread > 0 then
for i := 0 to entriesread - 1 do
SharesList.AddObject(string(ShareNT^[i].shi2_netname), TShareInfo2Obj.Create(ShareNT^[i]));
end else begin
FLibHandle := LoadLibrary('SVRAPI.DLL');
if FLibHandle = 0 then Exit;
@NetShareEnum := GetProcAddress(FLibHandle, 'NetShareEnum');
if not Assigned(NetShareEnum) then
FreeLibrary(FLibHandle);
Exit;
if NetShareEnum(nil, 50, @Share, SizeOf(Share),
@pcEntriesRead, @pcTotalAvail) <> 0 then
begin
FreeLibrary(FLibHandle);
Exit;
end;
if pcEntriesRead > 0 then
for i := 0 to pcEntriesRead - 1 do
SharesList.AddObject(string(Share[i].shi50_netname), TShareInfo50Obj.Create(Share[i]));
end;
FreeLibrary(FLibHandle);
end;
procedure CloseShare(ShareName: string);
var
OS: Boolean;
FLibHandle: THandle;
Name9x: array[0..12] of Char;
NameNT: PWChar;
i: Integer;
begin
if not IsNT(OS) then Exit;
if OS then begin
FLibHandle := LoadLibrary('NETAPI32.DLL');
if FLibHandle = 0 then Exit;
@NetShareDelNT := GetProcAddress(FLibHandle, 'NetShareDel');
if not Assigned(NetShareDelNT) then
begin
FreeLibrary(FLibHandle);
Exit;
end;
i := SizeOf(WideChar) * 256;
GetMem(NameNT, i);
StringToWideChar(ShareName, NameNT, i);
NetShareDelNT(nil, NameNT, 0);
FreeMem(NameNT);
end else begin
FLibHandle := LoadLibrary('SVRAPI.DLL');
if FLibHandle = 0 then Exit;
@NetShareDel := GetProcAddress(FLibHandle, 'NetShareDel');
if not Assigned(NetShareDel) then
begin
FreeLibrary(FLibHandle);
Exit;
end;
FillChar(Name9x, SizeOf(Name9x), #0);
move(ShareName[1], Name9x[0], Length(ShareName));
NetShareDel(nil, @Name9x, 0);
end;
FreeLibrary(FLibHandle);
end;
procedure AddShare(ShareName, ShareDir: string);
const
STYPE_DISKTREE = 0;
ACCESS_ALL = 258;
SHI50F_FULL = 258;
var
FLibHandle: THandle;
Share9x: TShareInfo50;
ShareNT: TShareInfo2;
TmpDirNT, TmpNameNT: PWChar;
OS: Boolean;
TmpLength: Integer;
begin
if not IsNT(OS) then Exit;
if OS then begin
FLibHandle := LoadLibrary('NETAPI32.DLL');
if FLibHandle = 0 then Exit;
@NetShareAddNT := GetProcAddress(FLibHandle, 'NetShareAdd');
if not Assigned(NetShareAddNT) then
begin
FreeLibrary(FLibHandle);
Exit;
end;
TmpLength := SizeOF(WideChar) * 256;
GetMem(TmpNameNT, TmpLength);
StringToWideChar(ShareName, TmpNameNT, TmpLength);
ShareNT.shi2_netname := TmpNameNT;
ShareNT.shi2_type := STYPE_DISKTREE;
ShareNT.shi2_remark := '';
ShareNT.shi2_permissions := ACCESS_ALL;
ShareNT.shi2_max_uses := DWORD(-1);
ShareNT.shi2_current_uses := 0;
GetMem(TmpDirNT, TmpLength);
StringToWideChar(ShareDir, TmpDirNT, TmpLength);
ShareNT.shi2_path := TmpDirNT;
ShareNT.shi2_passwd := '';
NetShareAddNT(nil, 2, @ShareNT, nil);
FreeMem(TmpNameNT);
FreeMem(TmpDirNT);
end else begin
FLibHandle := LoadLibrary('SVRAPI.DLL');
if FLibHandle = 0 then Exit;
@NetShareAdd := GetProcAddress(FLibHandle, 'NetShareAdd');
if not Assigned(NetShareAdd) then
begin
FreeLibrary(FLibHandle);
Exit;
end;
FillChar(Share9x.shi50_netname, SizeOf(Share9x.shi50_netname), #0);
move(ShareName[1], Share9x.shi50_netname[0], Length(ShareName));
Share9x.shi50_type := STYPE_DISKTREE;
Share9x.shi50_flags := SHI50F_FULL;
FillChar(Share9x.shi50_remark,
SizeOf(Share9x.shi50_remark), #0);
FillChar(Share9x.shi50_path,
SizeOf(Share9x.shi50_path), #0);
Share9x.shi50_path := PAnsiChar(ShareDir);
FillChar(Share9x.shi50_rw_password,
SizeOf(Share9x.shi50_rw_password), #0);
FillChar(Share9x.shi50_ro_password,
SizeOf(Share9x.shi50_ro_password), #0);
NetShareAdd(nil, 50, @Share9x, SizeOf(Share9x));
end;
FreeLibrary(FLibHandle);
end;
procedure GetSessions(List: TStrings);
var
OS: Boolean;
FLibHandle: THandle;
SessionInfo50: array[0..512] of TSessionInfo50;
SessionInfo502: PSessionInfo502Array;
TotalEntries, EntriesReadNT: DWORD;
EntriesRead, TotalAvial: Word;
i: integer;
begin
List.Clear;
if not IsNT(OS) then Exit;
if OS then begin
FLibHandle := LoadLibrary('NETAPI32.DLL');
if FLibHandle = 0 then Exit;
@NetSessionEnumNT := GetProcAddress(FLibHandle, 'NetSessionEnum');
if not Assigned(NetSessionEnumNT) then
begin
FreeLibrary(FLibHandle);
Exit;
end;
SessionInfo502 := nil;
if NetSessionEnumNT(nil, nil, nil, 502, @SessionInfo502, DWORD(-1), @entriesreadNT, @totalentries, nil) = 0 then
for i := 0 to EntriesReadNT - 1 do
List.AddObject(string(SessionInfo502^[i].sesi502_cname), TSessionInfo502Obj.Create(SessionInfo502^[i]));
end else begin
FLibHandle := LoadLibrary('SVRAPI.DLL');
if FLibHandle = 0 then Exit;
@NetSessionEnum := GetProcAddress(FLibHandle, 'NetSessionEnum');
if not Assigned(NetSessionEnum) then
begin
FreeLibrary(FLibHandle);
Exit;
end;
if NetSessionEnum(nil, 50, @SessionInfo50, SizeOf(SessionInfo50), @EntriesRead, @TotalAvial) = 0 then
for i := 0 to EntriesRead - 1 do
List.AddObject(string(SessionInfo50[i].Sesi50_cname), TSessionInfo50Obj.Create(SessionInfo50[i]));
end;
FreeLibrary(FLibHandle);
end;
procedure CloseSession(SessionName: string);
var
OS: Boolean;
FLibHandle: THandle;
CNameNT: PWideChar;
CName9x: PAnsiChar;
Key: SmallInt;
begin
if not IsNT(OS) then Exit;
if OS then begin
FLibHandle := LoadLibrary('NETAPI32.DLL');
if FLibHandle = 0 then Exit;
@NetSessionDelNT := GetProcAddress(FLibHandle, 'NetSessionDel');
if not Assigned(NetSessionDelNT) then
begin
FreeLibrary(FLibHandle);
Exit;
end;
CNameNT := PWChar(WideString('\\' + SessionName));
NetSessionDelNT(nil, CNameNT, nil);
end else begin
FLibHandle := LoadLibrary('SVRAPI.DLL');
if FLibHandle = 0 then Exit;
@NetSessionDel := GetProcAddress(FLibHandle, 'NetSessionDel');
if not Assigned(NetSessionDel) then
begin
FreeLibrary(FLibHandle);
Exit;
end;
CName9x := PAnsiChar(SessionName);
// key := SessionCloseKey[i];
// NetSessionDel(nil,CName9x,Key);
end;
FreeLibrary(FLibHandle);
end;
procedure GetFiles(FilesList: TStrings);
var
OS: Boolean;
FLibHandle: THandle;
FileInfoNT: PFileInfo3Array;
FileInfo9x: array[0..512] of TFileInfo50;
TotalEntries, EntriesReadNT: DWORD;
EntriesRead, TotalAvial: Word;
i: integer;
begin
if not IsNT(OS) then Exit;
FilesList.Clear;
if OS then begin
FLibHandle := LoadLibrary('NETAPI32.DLL');
if FLibHandle = 0 then Exit;
@NetFileEnumNT := GetProcAddress(FLibHandle, 'NetFileEnum');
if not Assigned(NetFileEnumNT) then
begin
FreeLibrary(FLibHandle);
Exit;
end;
FileInfoNT := nil;
if NetFileEnumNT(nil, nil, nil, 3, @FileInfoNT, DWORD(-1), @entriesreadNT, @totalentries, nil) = 0 then
for i := 0 to EntriesReadNT - 1 do
FilesList.AddObject(string(IntToStr(FileInfoNT^[i].fi3_id)), TFileInfo3Obj.Create(FileInfoNT^[i]));
end else begin
FLibHandle := LoadLibrary('SVRAPI.DLL');
if FLibHandle = 0 then Exit;
@NetFileEnum := GetProcAddress(FLibHandle, 'NetFileEnum');
if not Assigned(NetFileEnum) then
begin
FreeLibrary(FLibHandle);
Exit;
end;
if NetFileEnum(nil, nil, 50, @FileInfo9x, SizeOf(FileInfo9x), @EntriesRead, @TotalAvial) = 0 then
for i := 0 to EntriesRead - 1 do
FilesList.AddObject(IntToStr(FileInfo9x[i].fi50_id), TFileInfo50Obj.Create(FileInfo9x[i]));
end;
FreeLibrary(FLibHandle);
end;
procedure CloseFile(FileIndex: string);
var
OS: Boolean;
FLibHandle: THandle;
begin
if not IsNT(OS) then Exit;
if OS then begin //暑?潆? NT
FLibHandle := LoadLibrary('NETAPI32.DLL');
if FLibHandle = 0 then Exit;
@NetFileClose := GetProcAddress(FLibHandle, 'NetFileClose');
if not Assigned(NetFileClose) then
begin
FreeLibrary(FLibHandle);
Exit;
end;
NetFileClose(nil, StrToInt(FileIndex));
end else begin
FLibHandle := LoadLibrary('SVRAPI.DLL');
if FLibHandle = 0 then Exit;
@NetFileClose2 := GetProcAddress(FLibHandle, 'NetFileClose2');
if not Assigned(NetFileClose2) then
begin
FreeLibrary(FLibHandle);
Exit;
end;
NetFileClose2(nil, StrToInt(FileIndex));
end;
FreeLibrary(FLibHandle);
end;
procedure GetTrafficSets(TrafficsList: TStrings);
var
FLibHandle : THandle;
Table: TMibIfTable;
i : integer;
Size : integer;
begin
TrafficsList.Clear;
FLibHandle := LoadLibrary('IPHLPAPI.DLL');
if FLibHandle = 0 then Exit;
@GetIfTable := GetProcAddress(FLibHandle, 'GetIfTable');
if not Assigned(GetIfTable) then
begin
FreeLibrary(FLibHandle);
Exit;
end;
Size := SizeOf(Table);
if GetIfTable(@Table, @Size, false ) = 0 then
for i:= 0 to Table.dwNumEntries-1 do
TrafficsList.AddObject(Table.Table[i].bDescr, TTraffic.Create(Table.Table[i]));
FreeLibrary(FLibHandle);
end;
function IntegerToTimeStr(Value: Integer): string;
var d, h, m, s: Real;
begin
d := 0;
h := 0;
m := 0;
s := Value;
if s > 59 then begin
m := int(s / 60);
s := s - (m * 60);
end;
if m > 59 then begin
h := int(m / 60);
m := m - (h * 60);
end;
if h > 23 then begin
d := int(h / 24);
h := h - (d * 24);
end;
Result := '';
if (d > 0) then Result := Result + floattostr(d) + ' d. ';
if (h < 9) then Result := Result + '0' + floattostr(h) + ':' else Result := Result + floattostr(h) + ':';
if (m < 9) then Result := Result + '0' + floattostr(m) + ':' else Result := Result + floattostr(m) + ':';
if (s < 9) then Result := Result + '0' + floattostr(s) else Result := Result + floattostr(s);
end;
{ TSessionInfo50Obj }
constructor TSessionInfo50Obj.Create(SessionInfo50: TSessionInfo50);
begin
FSesi50_cname := SessionInfo50.Sesi50_cname;
FSesi50_username := SessionInfo50.Sesi50_username;
end;
procedure TSessionInfo50Obj.SetSesi50_cname(const Value: WideString);
begin
FSesi50_cname := Value;
end;
procedure TSessionInfo50Obj.Setsesi50_idle_time(const Value: Integer);
begin
Fsesi50_idle_time := Value;
end;
procedure TSessionInfo50Obj.Setsesi50_num_opens(const Value: Integer);
begin
Fsesi50_num_opens := Value;
end;
procedure TSessionInfo50Obj.Setsesi50_time(const Value: Integer);
begin
Fsesi50_time := Value;
end;
procedure TSessionInfo50Obj.SetSesi50_username(const Value: WideString);
begin
FSesi50_username := Value;
end;
{ TSessionInfo502Obj }
constructor TSessionInfo502Obj.Create(SessionInfo502: TSessionInfo502);
begin
FSesi502_cname := SessionInfo502.Sesi502_cname;
FSesi502_username := SessionInfo502.Sesi502_username;
FSesi502_num_opens := SessionInfo502.Sesi502_num_opens;
FSesi502_Time := SessionInfo502.Sesi502_time;
Fsesi502_idle_time := SessionInfo502.Sesi502_idle_time;
end;
procedure TSessionInfo502Obj.SetSesi502_cname(const Value: WideString);
begin
FSesi502_cname := Value;
end;
procedure TSessionInfo502Obj.Setsesi502_idle_time(const Value: DWord);
begin
Fsesi502_idle_time := Value;
end;
procedure TSessionInfo502Obj.SetSesi502_num_opens(const Value: DWord);
begin
FSesi502_num_opens := Value;
end;
procedure TSessionInfo502Obj.SetSesi502_Time(const Value: DWord);
begin
FSesi502_Time := Value;
end;
procedure TSessionInfo502Obj.SetSesi502_username(const Value: WideString);
begin
FSesi502_username := Value;
end;
{ TFileInfo3Obj }
constructor TFileInfo3Obj.Create(FileInfo3: TFileInfo3);
begin
Ffi3_id := FileInfo3.fi3_id;
Ffi3_permissions := FileInfo3.fi3_permissions;
Ffi3_num_locks := FileInfo3.fi3_num_locks;
Ffi3_pathname := FileInfo3.fi3_pathname;
Ffi3_username := FileInfo3.fi3_username;
end;
procedure TFileInfo3Obj.Setfi3_id(const Value: DWord);
begin
Ffi3_id := Value;
end;
procedure TFileInfo3Obj.Setfi3_num_locks(const Value: DWord);
begin
Ffi3_num_locks := Value;
end;
procedure TFileInfo3Obj.Setfi3_pathname(const Value: WideString);
begin
Ffi3_pathname := Value;
end;
procedure TFileInfo3Obj.Setfi3_permissions(const Value: DWord);
begin
Ffi3_permissions := Value;
end;
procedure TFileInfo3Obj.Setfi3_username(const Value: WideString);
begin
Ffi3_username := Value;
end;
{ TFileInfo50Obj }
constructor TFileInfo50Obj.Create(FileInfo50: TFileInfo50);
begin
Ffi50_id := FileInfo50.fi50_id;
Ffi50_permissions := FileInfo50.fi50_permissions;
Ffi50_num_locks := FileInfo50.fi50_num_locks;
Ffi50_pathname := FileInfo50.fi50_pathname;
Ffi50_username := FileInfo50.fi50_username;
Ffi50_sharename := FileInfo50.fi50_sharename;
end;
procedure TFileInfo50Obj.Setfi50_id(const Value: Integer);
begin
Ffi50_id := Value;
end;
procedure TFileInfo50Obj.Setfi50_num_locks(const Value: WORD);
begin
Ffi50_num_locks := Value;
end;
procedure TFileInfo50Obj.Setfi50_pathname(const Value: string);
begin
Ffi50_pathname := Value;
end;
procedure TFileInfo50Obj.Setfi50_permissions(const Value: WORD);
begin
Ffi50_permissions := Value;
end;
procedure TFileInfo50Obj.Setfi50_sharename(const Value: string);
begin
Ffi50_sharename := Value;
end;
procedure TFileInfo50Obj.Setfi50_username(const Value: string);
begin
Ffi50_username := Value;
end;
{ TTraffic }
constructor TTraffic.Create(MibIfRow: TMibIfRow);
begin
FCaption := string(MibIfRow.bDescr);
FMAC := GetMAC(TMAC(MibIfRow.bPhysAddr), MibIfRow.dwPhysAddrLen);
FdwInOctets := MibIfRow.dwInOctets;
FdwOutOctets := MibIfRow.dwOutOctets;
end;
procedure TTraffic.SetCaption(const Value: string);
begin
FCaption := Value;
end;
procedure TTraffic.SetdwInOctets(const Value: Integer);
begin
FdwInOctets := Value;
end;
procedure TTraffic.SetdwOutOctets(const Value: Integer);
begin
FdwOutOctets := Value;
end;
procedure TTraffic.SetMAC(const Value: string);
begin
FMAC := Value;
end;
function TTraffic.GetMAC(Value: TMAC; Length: DWORD): string;
var
i: Integer;
begin
if Length = 0 then Result := '00-00-00-00-00-00' else
begin
Result := '';
for i := 0 to Length - 2 do
Result := Result + IntToHex(Value[i], 2) + '-';
Result := Result + IntToHex(Value[Length - 1], 2);
end;
end;
{ TSessionInfo2Obj }
constructor TShareInfo2Obj.Create(ShareInfo2: TShareInfo2);
begin
Fshi2_netname := ShareInfo2.shi2_netname;
Fshi2_path := ShareInfo2.shi2_path;
end;
procedure TShareInfo2Obj.Setshi2_netname(const Value: string);
begin
Fshi2_netname := Value;
end;
procedure TShareInfo2Obj.Setshi2_path(const Value: string);
begin
Fshi2_path := Value;
end;
{ TShareInfo50Obj }
constructor TShareInfo50Obj.Create(ShareInfo50: TShareInfo50);
begin
Fshi50_netname := ShareInfo50.shi50_netname;
Fshi50_path := ShareInfo50.shi50_path;
end;
procedure TShareInfo50Obj.Setshi50_netname(const Value: string);
begin
Fshi50_netname := Value;
end;
procedure TShareInfo50Obj.Setshi50_path(const Value: string);
begin
Fshi50_path := Value;
end;
end.
unit NetSendUtils;
interface
uses Classes, Windows;
procedure GetNetGroupNameList(Names: TStrings);
procedure GetComputerNameList(GroupName: string; Names: TStrings);
implementation
procedure GetNetGroupNameList(Names: TStrings);
var
lphEnum: THandle;
Buf1, Buf2: Pointer;
Count, BufSize, Res: DWORD;
P: ^TNetResource;
I, J: Integer;
List: TList;
NetResource: TNetResource;
begin
//获取整个网络中的文件资源的句柄,lphEnum为返回名柄
Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
RESOURCEUSAGE_CONTAINER, nil, lphEnum);
if Res <> NO_ERROR then
Exit; //执行失败
//获取整个网络中的网络类型信息
Count := $FFFFFFFF; //不限资源数目
BufSize := 8192; //缓冲区大小设置为8K
GetMem(Buf1, BufSize); //申请内存,用于获取工作组信息
List := TList.Create;
try
Res := WNetEnumResource(lphEnum, Count, Pointer(Buf1), BufSize);
if (Res = ERROR_NO_MORE_ITEMS) or (Res <> NO_ERROR) then
Exit; //资源列举完毕 或者 执行失败
P := Buf1;
for I := 0 to Count - 1 do
begin
List.Add(p);
Inc(P);
end;
Res := WNetCloseEnum(lphEnum); //关闭一次列举
if Res <> NO_ERROR then exit;
for I := 0 to List.Count -1 do
begin
NetResource := TNetResource(List.Items[I]^);
Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
RESOURCEUSAGE_CONTAINER, @NetResource, lphEnum);
if Res <> NO_ERROR then break; //执行失败
Names.Clear;
while True do
begin
Count := $FFFFFFFF; //不限资源数目
GetMem(Buf2, BufSize); //申请内存,用于获取工作组信息
try
Res := WNetEnumResource(lphEnum, Count, Pointer(Buf2), BufSize); //获取一个网络类型的文件资源信息
if (Res = ERROR_NO_MORE_ITEMS) or (Res <> NO_ERROR) then
Break; //资源列举完毕 或者 执行失败
P := Buf2;
for J := 0 to Count - 1 do //列举各个工作组的信息
begin
Names.Add(P^.lpRemoteName);
Inc(P);
end;
finally
FreeMem(Buf2, BufSize);
end;
end;
end;
finally
FreeMem(Buf1, BufSize);
List.Free;
end;
end;
procedure GetComputerNameList(GroupName: string;Names: TStrings);
var
NetResource: TNetResource;
P: ^TNetResource;
lphEnum: THandle;
Buf1: Pointer;
Count, BufSize, Res: DWORD;
I: Integer;
begin
FillChar(NetResource, SizeOf(NetResource), 0); //初始化网络层次信息
NetResource.lpRemoteName := @GroupName[1]; //指定工作组名称
NetResource.dwDisplayType := RESOURCEDISPLAYTYPE_SERVER; //类型为服务器(工作组)
NetResource.dwUsage := RESOURCEUSAGE_CONTAINER;
NetResource.dwScope := RESOURCETYPE_DISK; //列举文件资源信息
//获取指定工作组的网络资源句柄
Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
RESOURCEUSAGE_CONTAINER, @NetResource, lphEnum);
if Res <> NO_ERROR then Exit; //执行失败
Names.Clear;
while True do //列举指定工作组的网络资源
begin
Count := $FFFFFFFF; //不限资源数目
BufSize := 8192; //缓冲区大小设置为8K
GetMem(Buf1, BufSize); //申请内存,用于获取工作组信息
try
Res := WNetEnumResource(lphEnum, Count, Pointer(Buf1), BufSize);
if Res = ERROR_NO_MORE_ITEMS then break; //资源列举完毕
if (Res <> NO_ERROR) then Exit; //执行失败
P := Buf1;
for I := 0 to Count - 1 do //列举工作组的计算机名称
begin
Names.Add(P^.lpRemoteName + 2);
Inc(P);
end;
finally
FreeMem(Buf1);
end;
end;
end;
end.
unit MainFrm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ImgList, StdCtrls, ExtCtrls, ComCtrls, ToolWin, Menus, ActnList, TrayIcon;
type
TMainForm = class(TForm)
StatusBar1: TStatusBar;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
TreeImageList: TImageList;
Panel1: TPanel;
Panel2: TPanel;
gbxTraffic: TGroupBox;
bvlTraffic: TBevel;
lvTraffic: TListView;
gbxShares: TGroupBox;
gbxSessions: TGroupBox;
bvlSessions: TBevel;
lvSessions: TListView;
pmShare: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
pmSession: TPopupMenu;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
Splitter1: TSplitter;
PnlMsg: TPanel;
Splitter2: TSplitter;
Splitter3: TSplitter;
PnlClnt: TPanel;
PnlClntTop: TPanel;
PnlClntBtm: TPanel;
BtnOk: TButton;
BtnClose: TButton;
GroupBox1: TGroupBox;
MemoContents: TMemo;
Splitter4: TSplitter;
GroupBox2: TGroupBox;
Label1: TLabel;
EdToName: TEdit;
Label2: TLabel;
EdFrom: TEdit;
Panel3: TPanel;
TvComputer: TTreeView;
pmTraffic: TPopupMenu;
N8: TMenuItem;
ActionList1: TActionList;
ShareRefreshAction: TAction;
ShareCloseAction: TAction;
ShareAddAction: TAction;
SessionRefreshAction: TAction;
SessionCloseAction: TAction;
NetImageList: TImageList;
TrafficRefreshAction: TAction;
Bevel1: TBevel;
LvShares: TListView;
Timer1: TTimer;
FileRefreshAction: TAction;
FileCloseAction: TAction;
pmFiles: TPopupMenu;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
Splitter6: TSplitter;
GroupBox3: TGroupBox;
Bevel2: TBevel;
LvFiles: TListView;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
pmTree: TPopupMenu;
N16: TMenuItem;
PopupMenu1: TPopupMenu;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure TvComputerClick(Sender: TObject);
procedure BtnCloseClick(Sender: TObject);
procedure BtnOkClick(Sender: TObject);
procedure EdToNameChange(Sender: TObject);
procedure ShareRefreshActionExecute(Sender: TObject);
procedure ShareCloseActionExecute(Sender: TObject);
procedure LvSharesMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure ShareAddActionExecute(Sender: TObject);
procedure SessionRefreshActionExecute(Sender: TObject);
procedure SessionCloseActionExecute(Sender: TObject);
procedure TrafficRefreshActionExecute(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FileRefreshActionExecute(Sender: TObject);
procedure lvSessionsMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure LvFilesMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FileCloseActionExecute(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure N19Click(Sender: TObject);
procedure N17Click(Sender: TObject);
procedure TvComputerContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
private
{ Private declarations }
procedure WMSysCommand(var Msg: TMessage); message WM_SYSCOMMAND;
procedure WMHotkeyHandle(var Msg: Tmessage); message WM_HOTKEY;
public
{ Public declarations }
FRootNode, FCurNode: TTreeNode;
FSendToNames: TStrings;
TrayNotifyIcon1: TTrayNotifyIcon;
HotKeyid: Integer;
procedure ShowMainForm(Sender: TObject);
end;
var
MainForm: TMainForm;
implementation
uses MultInst, NetUtils, SendPopupMsg, NetMonUtils, ShlObj, LKQDialogs, ShellAPI, Clipbrd;
{$R *.DFM}
procedure TMainForm.FormActivate(Sender: TObject);
begin
FRootNode := TvComputer.Items.add(TvComputer.topitem, '整个网络');
FRootNode.imageindex := 0;
TvComputer.SetFocus;
end;
procedure TMainForm.TvComputerClick(Sender: TObject);
var
SelectedNode, Node: TTreeNode;
Strs: TStrings;
I: Integer;
begin
if TvComputer.Selected = nil then
Exit;
SelectedNode := TvComputer.Selected;
Strs := TStringList.Create;
try
if SelectedNode.Level = 0 then
begin
if SelectedNode.count = 0 then
begin
GetNetGroupNameList(Strs);
for I := 0 to Strs.Count - 1 do
begin
Node := TvComputer.Items.AddChild(FRootNode, Strs[I]);
Node.ImageIndex := 1;
Node.SelectedIndex := 1;
end;
end;
end;
if SelectedNode.level = 1 then
begin
if SelectedNode.count = 0 then
begin
GetComputerNameList(SelectedNode.Text, Strs);
for I := 0 to Strs.Count - 1 do
begin
Node := TvComputer.Items.AddChild(SelectedNode, Strs[I]);
Node.ImageIndex := 2;
Node.SelectedIndex := 4;
end;
end;
end;
if SelectedNode.level = 2 then
begin
if FSendToNames.IndexOf(SelectedNode.Parent.Text + '*') <> -1 then Exit;
if FSendToNames.IndexOf(SelectedNode.Text) = -1 then
FSendToNames.Add(SelectedNode.Text);
EdToName.Text := FSendToNames.CommaText;
end;
finally
Strs.Free;
end;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
FSendToNames := TStringList.Create;
SetWindowLong(EdToName.Handle, GWL_STYLE,
GetWindowLong(EdToName.Handle, GWL_STYLE) or
ES_UPPERCASE);
SetWindowLong(EdFrom.Handle, GWL_STYLE,
GetWindowLong(EdFrom.Handle, GWL_STYLE) or
ES_UPPERCASE);
TrayNotifyIcon1 := TTrayNotifyIcon.Create(Self);
with TrayNotifyIcon1 do
begin
Icon := Application.Icon;
Hint := Application.Title;
OnDblClick := ShowMainForm;
PopupMenu := PopupMenu1;
HideTask := False;
IconVisible := True;
end;
Hotkeyid := GlobalAddAtom('UserDefineHotKey') - $C000;
RegisterHotkey(Handle, Hotkeyid, MOD_CONTROL, VK_RETURN);
end;
procedure TMainForm.FormDestroy(Sender: TObject);
begin
FSendToNames.Free;
TrayNotifyIcon1.Free;
UnRegisterhotkey(Handle, Hotkeyid);
DeleteAtom(HotKeyID);
end;
procedure TMainForm.BtnCloseClick(Sender: TObject);
begin
Application.Terminate;
end;
procedure TMainForm.BtnOkClick(Sender: TObject);
var
I, J: Integer;
begin
StatusBar1.SimpleText := '';
for I := 0 to FSendToNames.Count - 1 do
begin
J := SendTextMessage(FSendToNames[I], EdFrom.Text, MemoContents.Lines.Text);
if J <> 0 then
StatusBar1.SimpleText := StatusBar1.SimpleText + FSendToNames[I] + ' ';
end;
if StatusBar1.SimpleText <> '' then StatusBar1.SimpleText := StatusBar1.SimpleText + '没有收到';
end;
procedure TMainForm.EdToNameChange(Sender: TObject);
var
NameList: TStrings;
I: Integer;
begin
NameList := TStringList.Create;
try
NameList.CommaText := EdToName.Text;
for I := (FSendToNames.Count - 1) downto 0 do
begin
if NameList.IndexOf(FSendToNames[I]) = -1 then
FSendToNames.Delete(I);
end;
if EdToName.Text <> FSendToNames.CommaText then
begin
FSendToNames.Assign(NameList);
EdToName.Text := FSendToNames.CommaText;
end;
finally
NameList.Free;
end;
btnOK.Enabled := Trim(EdToName.Text) <> '';
end;
procedure TMainForm.ShareRefreshActionExecute(Sender: TObject);
var
List: TStrings;
I: Integer;
OS: Boolean;
ShareInfo2Obj: TShareInfo2Obj;
begin
if not IsNT(OS) then Exit;
List := TStringList.Create;
try
GetShares(List);
LvShares.Items.BeginUpdate;
try
LvShares.Items.Clear;
for I := 0 to List.Count - 1 do
begin
ShareInfo2Obj := TShareInfo2Obj(List.Objects[I]);
if ShareInfo2Obj <> nil then
begin
with LvShares.Items.Add do
begin
Caption := List[I];
SubItems.Add(ShareInfo2Obj.shi2_path);
end;
end;
end;
finally
LvShares.Items.EndUpdate;
end;
finally
List.Free;
end;
end;
procedure TMainForm.ShareCloseActionExecute(Sender: TObject);
begin
if (LvShares.Items.Count = 0) or (LvShares.Selected = nil) then
Exit;
if Application.MessageBox('确实要关闭该共享吗?', '提示', MB_YESNO + MB_ICONQUESTION) <> ID_YES then
Exit;
CloseShare(LvShares.Selected.Caption);
LvShares.Items.Delete(LvShares.Selected.Index);
end;
procedure TMainForm.LvSharesMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ShareCloseAction.Enabled := (LvShares.Items.Count <> 0) and (LvShares.Selected <> nil);
N13.Enabled := ShareCloseAction.Enabled;
end;
function SelectDirectory: string;
var
lpItemID: PItemIDList;
BrowseInfo: TBrowseInfo;
DisplayName: array[0..MAX_PATH] of Char;
TempPath: array[0..MAX_PATH] of Char;
begin
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
BrowseInfo.hwndOwner := MainForm.Handle;
BrowseInfo.pszDisplayName := @DisplayName;
BrowseInfo.lpszTitle := '请选择共享目录:';
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
lpItemID := SHBrowseForFolder(BrowseInfo);
if Assigned(lpItemId) then begin
SHGetPathFromIDList(lpItemID, TempPath);
GlobalFreePtr(lpItemID);
end else Result := '';
Result := string(TempPath);
end;
procedure TMainForm.TvComputerContextPopup(Sender: TObject;
MousePos: TPoint; var Handled: Boolean);
begin
FCurNode := TvComputer.GetNodeAt(MousePos.X, MousePos.Y);
if FCurNode <> nil then
N16.Enabled := FCurNode.Level = 1;
end;
procedure TMainForm.ShareAddActionExecute(Sender: TObject);
var
Name, Dir: string;
begin
if Sys_SelectDirectory(Self.Handle, Dir, '请选择共享目录:', True) then
begin
Name := InputBox('输入', '请输入共享名称', ExtractFileName(Dir));
AddShare(Name, Dir);
with LvShares.Items.Add do
begin
Caption := Name;
SubItems.Add(Dir);
end;
end;
end;
procedure TMainForm.SessionRefreshActionExecute(Sender: TObject);
var
List: TStrings;
I: Integer;
OS: Boolean;
SessionInfo502Obj: TSessionInfo502Obj;
begin
if not IsNT(OS) then Exit;
List := TStringList.Create;
try
GetSessions(List);
lvSessions.Items.Clear;
for I := 0 to List.Count - 1 do
begin
SessionInfo502Obj := TSessionInfo502Obj(List.Objects[I]);
if SessionInfo502Obj <> nil then
begin
with lvSessions.Items.Add do
begin
Caption := List[I];
SubItems.Add(SessionInfo502Obj.Sesi502_username);
SubItems.Add(IntToStr(SessionInfo502Obj.Sesi502_num_opens));
SubItems.Add(IntegerToTimeStr(SessionInfo502Obj.Sesi502_Time));
SubItems.Add(IntegerToTimeStr(SessionInfo502Obj.sesi502_idle_time));
end;
end;
end;
finally
List.Free;
end;
end;
procedure TMainForm.SessionCloseActionExecute(Sender: TObject);
begin
if (lvSessions.Items.Count = 0) or (lvSessions.Selected = nil) then
Exit;
if Application.MessageBox('确实要关闭该会话吗?', '提示', MB_YESNO + MB_ICONQUESTION) <> ID_YES then
Exit;
CloseSession(lvSessions.Selected.Caption);
lvSessions.Items.Delete(lvSessions.Selected.Index);
end;
procedure TMainForm.TrafficRefreshActionExecute(Sender: TObject);
var
List: TStrings;
I: Integer;
OS: Boolean;
Traffic: TTraffic;
begin
if not IsNT(OS) then Exit;
List := TStringList.Create;
try
GetTrafficSets(List);
lvTraffic.Items.BeginUpdate;
try
lvTraffic.Items.Clear;
for I := 0 to List.Count - 1 do
begin
Traffic := TTraffic(List.Objects[I]);
if Traffic <> nil then
begin
with lvTraffic.Items.Add do
begin
Caption := List[I];
SubItems.Add(Traffic.MAC);
SubItems.Add(IntToStr(Traffic.dwInOctets));
SubItems.Add(IntToStr(Traffic.dwInOctets));
end;
end;
end;
finally
lvTraffic.Items.EndUpdate;
end;
finally
List.Free;
end;
end;
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
ShareRefreshActionExecute(nil);
SessionRefreshActionExecute(nil);
TrafficRefreshActionExecute(nil);
FileRefreshActionExecute(nil);
if LvFiles.Items.Count <> 0 then
ShowMainForm(nil);
end;
procedure TMainForm.FormShow(Sender: TObject);
begin
ShareRefreshActionExecute(nil);
SessionRefreshActionExecute(nil);
TrafficRefreshActionExecute(nil);
FileRefreshActionExecute(nil);
Timer1.Enabled := True;
end;
procedure TMainForm.FileRefreshActionExecute(Sender: TObject);
var
List: TStrings;
I: Integer;
OS: Boolean;
FileInfo3Obj: TFileInfo3Obj;
begin
if not IsNT(OS) then Exit;
List := TStringList.Create;
try
GetFiles(List);
lvFiles.Items.BeginUpdate;
try
lvFiles.Items.Clear;
for I := 0 to List.Count - 1 do
begin
FileInfo3Obj := TFileInfo3Obj(List.Objects[I]);
if FileInfo3Obj <> nil then
begin
with lvFiles.Items.Add do
begin
Caption := List[I];
SubItems.Add(FileInfo3Obj.fi3_pathname);
SubItems.Add(FileInfo3Obj.fi3_username);
end;
end;
end;
finally
lvFiles.Items.EndUpdate;
end;
finally
List.Free;
end;
end;
procedure TMainForm.lvSessionsMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SessionCloseAction.Enabled := (lvSessions.Items.Count <> 0) and (lvSessions.Selected <> nil);
N15.Enabled := SessionCloseAction.Enabled;
end;
procedure TMainForm.LvFilesMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FileCloseAction.Enabled := (LvFiles.Items.Count <> 0) and (LvFiles.Selected <> nil);
end;
procedure TMainForm.FileCloseActionExecute(Sender: TObject);
begin
if (lvFiles.Items.Count = 0) or (lvFiles.Selected = nil) then
Exit;
if Application.MessageBox('确实要关闭该会话吗?', '提示', MB_YESNO + MB_ICONQUESTION) <> ID_YES then
Exit;
CloseFile(lvFiles.Selected.Caption);
lvFiles.Items.Delete(lvFiles.Selected.Index);
end;
procedure TMainForm.N13Click(Sender: TObject);
var
Path: string;
begin
if LvShares.Selected <> nil then
begin
Path := LvShares.Selected.SubItems[0];
ShellExecute(0, 'explore', PChar(Path),
nil, nil, SW_NORMAL);
end;
end;
procedure TMainForm.N15Click(Sender: TObject);
var
Name: string;
begin
if LvSessions.Selected <> nil then
begin
Name := LvSessions.Selected.SubItems[0];
Clipboard.AsText := Name
end;
end;
procedure TMainForm.N16Click(Sender: TObject);
begin
if FSendToNames.IndexOf(FCurNode.Text + '*') = -1 then
FSendToNames.Add(FCurNode.Text + '*');
EdToName.Text := EdToName.Text + FCurNode.Text + '*';
end;
procedure TMainForm.N19Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TMainForm.N17Click(Sender: TObject);
begin
ShowMainForm(nil);
end;
procedure TMainForm.ShowMainForm(Sender: TObject);
begin
TrayNotifyIcon1.HideTask := False;
end;
procedure TMainForm.WMSysCommand(var Msg: TMessage);
begin
if (Msg.WParam = SC_CLOSE) then
Msg.WParam := SC_MINIMIZE;
inherited;
if (Msg.WParam = SC_MINIMIZE) then
TrayNotifyIcon1.HideTask := True;
end;
procedure TMainForm.WMHotkeyHandle(var Msg: Tmessage);
begin
if (Msg.LParamHi = VK_RETURN) and (Msg.lparamLo = MOD_CONTROL) then
begin
if BtnOk.Enabled then
BtnOkClick(nil);
Msg.Result := 1;
end;
end;
end.
界面dfm文件
object MainForm: TMainForm
Left = 64
Top = 98
Width = 921
Height = 577
Color = clBtnFace
Font.Charset = GB2312_CHARSET
Font.Color = clWindowText
Font.Height = -12
Font.Name = '宋体'
Font.Style = []
OldCreateOrder = False
WindowState = wsMaximized
OnActivate = FormActivate
OnCreate = FormCreate
OnDestroy = FormDestroy
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 12
object Splitter2: TSplitter
Left = 0
Top = 233
Width = 913
Height = 3
Cursor = crVSplit
Align = alTop
end
object Splitter3: TSplitter
Left = 0
Top = 446
Width = 913
Height = 3
Cursor = crVSplit
Align = alBottom
end
object StatusBar1: TStatusBar
Left = 0
Top = 531
Width = 913
Height = 19
Panels = <>
SimplePanel = False
end
object ToolBar1: TToolBar
Left = 0
Top = 0
Width = 913
Height = 41
Caption = 'ToolBar1'
TabOrder = 1
Visible = False
object ToolButton1: TToolButton
Left = 0
Top = 2
Caption = 'ToolButton1'
ImageIndex = 0
end
object ToolButton2: TToolButton
Left = 23
Top = 2
Caption = 'ToolButton2'
ImageIndex = 1
end
end
object Panel1: TPanel
Left = 0
Top = 41
Width = 913
Height = 192
Align = alTop
Caption = 'Panel1'
TabOrder = 2
object Splitter1: TSplitter
Left = 249
Top = 1
Width = 3
Height = 190
Cursor = crHSplit
end
object Splitter6: TSplitter
Left = 641
Top = 1
Width = 3
Height = 190
Cursor = crHSplit
end
object gbxShares: TGroupBox
Left = 1
Top = 1
Width = 248
Height = 190
Align = alLeft
Caption = '共享文件'
TabOrder = 0
object Bevel1: TBevel
Left = 2
Top = 14
Width = 244
Height = 2
Align = alTop
end
object LvShares: TListView
Left = 2
Top = 16
Width = 244
Height = 172
Align = alClient
BorderStyle = bsNone
Columns = <
item
Caption = '名称'
Width = 80
end
item
AutoSize = True
Caption = '文件夹路径'
end>
ColumnClick = False
RowSelect = True
PopupMenu = pmShare
TabOrder = 0
ViewStyle = vsReport
OnMouseDown = LvSharesMouseDown
end
end
object gbxSessions: TGroupBox
Left = 252
Top = 1
Width = 389
Height = 190
Align = alLeft
Caption = '会话'
TabOrder = 1
object bvlSessions: TBevel
Left = 2
Top = 14
Width = 385
Height = 2
Align = alTop
end
object lvSessions: TListView
Left = 2
Top = 16
Width = 385
Height = 172
Align = alClient
BorderStyle = bsNone
Columns = <
item
Caption = '计算机名'
Width = 70
end
item
Caption = '用户名'
Width = 70
end
item
Alignment = taRightJustify
Caption = '打开连接数'
Width = 100
end
item
Caption = '连接时间'
Width = 70
end
item
AutoSize = True
Caption = '空闲时间'
end>
ColumnClick = False
RowSelect = True
PopupMenu = pmSession
TabOrder = 0
ViewStyle = vsReport
OnMouseDown = lvSessionsMouseDown
end
end
object GroupBox3: TGroupBox
Left = 644
Top = 1
Width = 268
Height = 190
Align = alClient
Caption = '活动文件'
TabOrder = 2
object Bevel2: TBevel
Left = 2
Top = 14
Width = 264
Height = 2
Align = alTop
end
object LvFiles: TListView
Left = 2
Top = 16
Width = 264
Height = 172
Align = alClient
BorderStyle = bsNone
Columns = <
item
Caption = '序号'
end
item
Caption = '文件路径'
Width = 200
end
item
AutoSize = True
Caption = '用户名称'
end>
ColumnClick = False
RowSelect = True
PopupMenu = pmFiles
TabOrder = 0
ViewStyle = vsReport
OnMouseDown = LvFilesMouseDown
end
end
end
object Panel2: TPanel
Left = 0
Top = 449
Width = 913
Height = 82
Align = alBottom
Caption = 'Panel2'
TabOrder = 3
object gbxTraffic: TGroupBox
Left = 1
Top = 1
Width = 911
Height = 80
Align = alClient
Caption = '适配器'
TabOrder = 0
object bvlTraffic: TBevel
Left = 2
Top = 14
Width = 907
Height = 2
Align = alTop
end
object lvTraffic: TListView
Left = 2
Top = 16
Width = 907
Height = 62
Align = alClient
BorderStyle = bsNone
Columns = <
item
Caption = '设备名称'
Width = 300
end
item
Caption = '地址(MAC)'
Width = 300
end
item
Alignment = taRightJustify
Caption = '接收'
Width = 100
end
item
Alignment = taRightJustify
AutoSize = True
Caption = '发送'
end>
ColumnClick = False
RowSelect = True
PopupMenu = pmTraffic
TabOrder = 0
ViewStyle = vsReport
end
end
end
object PnlMsg: TPanel
Left = 0
Top = 236
Width = 913
Height = 210
Align = alClient
Caption = 'PnlMsg'
TabOrder = 4
object Splitter4: TSplitter
Left = 249
Top = 1
Width = 3
Height = 208
Cursor = crHSplit
end
object PnlClnt: TPanel
Left = 252
Top = 1
Width = 660
Height = 208
Align = alClient
BevelOuter = bvNone
Caption = 'PnlClnt'
TabOrder = 0
object PnlClntTop: TPanel
Left = 0
Top = 0
Width = 660
Height = 68
Align = alTop
BevelOuter = bvNone
TabOrder = 0
object GroupBox2: TGroupBox
Left = 0
Top = 0
Width = 660
Height = 68
Align = alClient
Caption = '信息发送'
TabOrder = 0
object Label1: TLabel
Left = 7
Top = 15
Width = 48
Height = 12
Caption = '发送到:'
end
object Label2: TLabel
Left = 7
Top = 39
Width = 60
Height = 12
Caption = '本机器名:'
end
object EdToName: TEdit
Left = 66
Top = 10
Width = 586
Height = 20
Anchors = [akLeft, akTop, akRight]
TabOrder = 0
OnChange = EdToNameChange
end
object EdFrom: TEdit
Left = 66
Top = 35
Width = 588
Height = 20
Anchors = [akLeft, akTop, akRight]
TabOrder = 1
end
end
end
object PnlClntBtm: TPanel
Left = 0
Top = 175
Width = 660
Height = 33
Align = alBottom
BevelInner = bvLowered
BevelOuter = bvNone
TabOrder = 1
object BtnOk: TButton
Left = 500
Top = 5
Width = 75
Height = 23
Anchors = [akTop, akRight]
Caption = '发送(&O)'
Default = True
Enabled = False
TabOrder = 0
end
object BtnClose: TButton
Left = 580
Top = 5
Width = 75
Height = 23
Anchors = [akTop, akRight]
Caption = '退出(&Q)'
TabOrder = 1
OnClick = BtnCloseClick
end
end
object GroupBox1: TGroupBox
Left = 0
Top = 68
Width = 660
Height = 107
Align = alClient
Caption = '内容:'
TabOrder = 2
object MemoContents: TMemo
Left = 2
Top = 14
Width = 656
Height = 91
Align = alClient
TabOrder = 0
end
end
end
object Panel3: TPanel
Left = 1
Top = 1
Width = 248
Height = 208
Align = alLeft
Caption = 'Panel3'
TabOrder = 1
object TvComputer: TTreeView
Left = 1
Top = 1
Width = 246
Height = 206
Align = alClient
Images = TreeImageList
Indent = 19
PopupMenu = pmTree
ReadOnly = True
TabOrder = 0
OnClick = TvComputerClick
OnContextPopup = TvComputerContextPopup
end
end
end
object TreeImageList: TImageList
Left = 168
Top = 320
Bitmap = {
494C010108000900040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000003000000001002000000000000030
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000F9F5F600E3CED600D1ADBB00C394A600B8859900C192A400D0ACBA00E3CE
D600F9F5F6000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000007349
5A0073495A0073495A009C757300000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000ECDE
E300CFABB900BE8C9F00C090A300C091A400C091A300BD8C9F00BA869A00B781
9600CDA8B700ECDEE30000000000000000000000000000000000000000000000
0000FBD4D100F6958E00F1605500EE3B2D00EE3B2D00F1605500F6958E00FBD4
D1000000000000000000000000000000000000000000BDA6A500DECFCE00DED3
D600DECBCE00D6C3C600D6B6B500B586840073495A0000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000ECDEE400CBA4
B300C395A700C79DAE00CAA3B300CBA5B300CBA3B200C79DAD00C295A600BC8B
9E00B7829700C69CAC00ECDEE30000000000000000000000000000000000F8AA
A400F0554900EE392B00EE3B2E00EE392B00ED332500ED2C1D00ED2C1D00F04F
4200F8AAA400000000000000000000000000C6AEAD00E7E7E700E7E7E700DEDF
DE00DED3D600CEB2B5009C929400AD7D7B00CEA2A50073495A00000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000F9F5F600D1AFBD00C498
A900CCA5B400D2AFBD00D5B6C200D7B9C500D5B6C300D1AFBD00CBA4B400C498
A900BD8B9E00B7819600CDA8B700F9F5F6000000000000000000F8ACA600F04A
3E00F04E4100F1584C00F15B5000F0574C00F04E4100EF403200ED322300ED2C
1D00EE382900F8AAA4000000000000000000E7E7E700F7F3F700F7F3F700E7E7
E700DED7D600E7D7D600AD868400AD868400CEA6A5009C696B00000000009C75
730073495A000000000000000000000000000000000000000000000000000000
00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
FF000000000000000000000000000000000000000000E4D0D800C294A600CBA5
B300D4B4C100DBC0CA00DFC8D100E2CCD400E0C8D100DBC0CA00D4B4C100CBA5
B300C294A600BA869B00B7819600E3CED60000000000FCD5D200F2645900F15B
4F00F26E6400F37B7100F3807600F37B7200F36E6300F15B4F00EF453800ED32
2300ED2C1D00F04F4200FBD4D10000000000CEB2B500F7F3F700F7EFEF00EFEB
EF00D6BEBD00D6AAAD00BD797B00BD717300CEA6A5009C696B00D6B2B500D6B2
B500ADA2A5009C75730073495A00000000000000000000000000000000000000
00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
FF000000000000000000000000000000000000000000D4B4C000C79EAD00D2AF
BC00DBC0CA00E3CFD700EBDAE100EDE0E500EADAE100E4CFD700DBC0CB00D2B0
BD00C79DAD00BD8C9F00B7819600D0ACBA0000000000F79F9900F15B5000F376
6D00F58D8400F69C9400F7A19A00F69C9400F58D8400F3776D00F05B4F00EF40
3200ED2C1D00ED2C1D00F6958E000000000000000000DEB6B500F7CB9C00D69A
9C00C68E8C00C6757300C66D6B00CE696B00DECBCE00DEC3C600DEBABD00D6A2
A500B59E9C00B59E9C00ADA2A50073495A000000000000000000000000000000
00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
FF000000000000000000000000000000000000000000C89FB000CAA2B200D6B6
C200DFC9D200EBDBE000F4EBEE00F8F2F400F4EBEE00EADBE100DFC8D100D5B7
C300CAA3B200C090A300B8829700C192A40000000000F37A7000F36E6400F58D
8500F7A6A000F9BCB700FAC4C000F9BCB700F7A7A100F48D8500F36F6400F04E
4200EE332500ED2C1D00F16055000000000000000000D6AEAD00FFA21000FFAA
2100FFB64A00DEAAAD00C66D6B00B5696B00DEC3C600CE9E9C00D6A2A500D6B2
B500AD8684009C696B00B592940073495A000000000000000000000000000000
00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
FF000000000000000000000000000000000000000000C294A400CBA5B300D7B9
C500E1CCD400EDDFE500F8F3F40000000000F8F2F400EDE0E400E2CBD400D7B9
C500CBA5B300C192A300B8849700B883980000000000F1635900F37A7200F69B
9400F9BCB700FBD9D600FCE7E400FBD9D600F9BCB700F69C9500F37B7200F057
4B00EE392B00ED2C1D00EE3B2D000000000000000000D6B2B500FFB63100FFB6
3900FFBA3900FFBA3900FFB63900EFB66B00CE797B00DEAAAD00DEBABD00CEAA
AD00BD8E8C00AD7D7B00B586840073495A000000000000000000000000000000
00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
FF000000000000000000000000000000000000000000C99FAF00CBA3B200D6B6
C300E0C8D200EADBE100F3EBEE00F7F2F400F4EBEE00EADBE100E0C8D200D5B6
C300CAA2B200BF90A300B8829700C192A40000000000F2675C00F47F7700F6A0
9A00F9C5C100FCE6E500FEFEFE00FDE6E400F9C5C100F6A19A00F37F7600F15B
4F00EE3B2E00ED2C1D00EE3B2D000000000000000000CEA6A500FFBE4A00FFC3
5200FFC75200FFC75A00FFC35200FFBE4A00FFBA4200CE696B00DEBABD00D6A2
A500BD8E8C00CE9A9C00B582840073495A000000000000000000000000000000
00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
FF000000000000000000000000000000000000000000D4B4C000C79DAD00D2AF
BD00DBC0CB00E4CFD700EBDBE100EDE0E500EADBE000E4CFD700DBC0CB00D1B0
BD00C79DAD00BD8C9F00B7819600D0ACBA0000000000F4817800F47B7200F69B
9400F9BCB700FBD9D700FCE6E500FBDAD700F9BCB700F69C9400F37B7200F057
4C00EE392B00ED2C1D00F16055000000000000000000C6A28400FFCB5A00FFCF
6B00FFD36B00FFD36B00FFCF6B00FFCB6300FFC35200CE828400DEBABD00D6A2
A500BD8A8C00AD7D7B00AD75730073495A000000000000000000000000000000
00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
FF000000000000000000000000000000000000000000E5D0D800C294A600CBA5
B400D4B4C100DBC0CB00E0C8D100E1CBD400E0C8D100DBC0CB00D4B4C000CCA5
B400C295A700BA869A00B7819600E3CED60000000000F7A6A000F26E6400F48C
8500F7A7A100F8BCB700F9C4C100F9BCB700F7A6A000F58D8500F36E6400F04E
4100ED342500ED2C1D00F6958E0000000000D6B6B500DEA67300FFD37300FFDB
7B00FFDF8400FFDF8C00FFDB8400FFD77B00FFCB6300CE969400DEBABD00D6A2
A500BD8E8C00C68E8C00B582840073495A000000000000000000000000000000
00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
FF000000000000000000000000000000000000000000F9F5F600D1AFBD00C498
A900CBA5B400D2AFBD00D6B6C200D7B9C400D6B6C300D1B0BD00CBA5B400C498
A900BD8B9E00B7819600CDA8B700F9F5F60000000000FCD8D500F3766C00F377
6D00F58D8400F69C9500F7A09A00F69B9400F48D8500F3776D00F15B5000EF40
3300ED2C1D00F04F4200FBD4D10000000000D6B6B500FFD37300FFDF8400FFE3
9400FFEB9C00FFEBA500FFE79C00FFE38C00FFD77B00D6AEAD00DEBABD00CE96
9400C6757300AD6D6B00AD75730073495A000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000ECDEE400CBA4
B300C294A600C89DAD00CAA3B200CBA4B400CBA3B200C79DAE00C394A700BD8B
9E00B7829700C69CAC00ECDEE300000000000000000000000000F9B4AF00F264
5A00F26E6400F47B7100F37F7600F37B7100F26E6400F15B4F00EF453800ED32
2300EE382900F8AAA4000000000000000000F7EFEF00FFDB7B00FFE39400FFEF
AD00FFF3B500FFF7BD00FFF3AD00FFEB9C00FFDF8C00E7C3C600EFDBDE00FFFB
FF00DEAAAD00CE696B00CE6D6B0073495A000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000ECDE
E300CFACBA00BE8C9F00C090A200C191A400C090A300BE8C9F00BB869B00B781
9600CDA8B700ECDEE3000000000000000000000000000000000000000000F8B2
AD00F26A6100F1574B00F15B5000F0584C00F04E4100EE403200ED312300F04F
4200F8AAA400000000000000000000000000EFEBEF009C929400BD9E9400D6C3
AD00FFFFCE00FFFFCE00FFFBC600FFEFAD00EFC78C00EFCFCE00EFCFCE00EFCF
CE00EFCFCE00D6AEAD00D6AEAD00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000F9F5F600E3CED600D0AEBB00C294A600B9849A00C192A400D0ACBA00E3CE
D600F9F5F6000000000000000000000000000000000000000000000000000000
0000FBD5D300F69C9500F26B6100EF473A00EF413300F1605500F6958E00FBD4
D10000000000000000000000000000000000D6B6B500D6B6B500C6BABD00DED3
D600DECBCE00BDA6A500AD868400B59A8C00C6A28400BD929400000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000D6B6B500D6B6B500D6B6B500D6B6B50000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
C600000000000000000000000000000000000000000000000000000000000000
000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
0000000000000000000000000000000000000000000000000000000000000000
0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
0000000000000000000000000000000000000000000000000000000000000000
0000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
FF00000000000000000000000000000000000000000000000000000000000000
0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
C600000000000000000000000000000000000000000000000000000000000000
000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
0000000000000000000000000000000000000000000000000000000000000000
0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
0000000000000000000000000000000000000000000000000000000000000000
0000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
FF00000000000000000000000000000000000000000000000000000000000000
0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
C600000000000000000000000000000000000000000000000000000000000000
000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
0000000000000000000000000000000000000000000000000000000000000000
0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
0000000000000000000000000000000000000000000000000000000000000000
0000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
FF00000000000000000000000000000000000000000000000000000000000000
0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
C600000000000000000000000000000000000000000000000000000000000000
000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
0000000000000000000000000000000000000000000000000000000000000000
0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
0000000000000000000000000000000000000000000000000000000000000000
0000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
FF00000000000000000000000000000000000000000000000000000000000000
0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
C600000000000000000000000000000000000000000000000000000000000000
000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
0000000000000000000000000000000000000000000000000000000000000000
0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
0000000000000000000000000000000000000000000000000000000000000000
0000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
FF00000000000000000000000000000000000000000000000000000000000000
0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
C600000000000000000000000000000000000000000000000000000000000000
000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
0000000000000000000000000000000000000000000000000000000000000000
0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
0000000000000000000000000000000000000000000000000000000000000000
0000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
FF00000000000000000000000000000000000000000000000000000000000000
0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
C600000000000000000000000000000000000000000000000000000000000000
000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
0000000000000000000000000000000000000000000000000000000000000000
0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
0000000000000000000000000000000000000000000000000000000000000000
0000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
FF00000000000000000000000000000000000000000000000000000000000000
0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
C600000000000000000000000000000000000000000000000000000000000000
000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
0000000000000000000000000000000000000000000000000000000000000000
0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
0000000000000000000000000000000000000000000000000000000000000000
0000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
FF00000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000424D3E000000000000003E000000
2800000040000000300000000100010000000000800100000000000000000000
000000000000000000000000FFFFFF0000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000FFFFF007FFFFE1FFFFFFE003F00F807F
FFFFC001E007003FFFFF8000C0030027F00F800080010001F00F800080018000
F00F800080018000F00F810080018000F00F800080018000F00F800080018000
F00F800080010000F00F800080010000FFFFC001C0030000FFFFE003E0070001
FFFFF007F00F003FFFFFFFFFFFFFF87FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00FF00FF00FF00FF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000
000000000000}
end
object pmShare: TPopupMenu
Images = NetImageList
Left = 48
Top = 136
object N1: TMenuItem
Action = ShareRefreshAction
end
object N4: TMenuItem
Caption = '-'
end
object N2: TMenuItem
Action = ShareCloseAction
end
object N3: TMenuItem
Action = ShareAddAction
end
object N12: TMenuItem
Caption = '-'
end
object N13: TMenuItem
Caption = '打开目录'
OnClick = N13Click
end
end
object pmSession: TPopupMenu
Images = NetImageList
Left = 144
Top = 136
object N5: TMenuItem
Action = SessionRefreshAction
end
object N6: TMenuItem
Caption = '-'
end
object N7: TMenuItem
Action = SessionCloseAction
end
object N14: TMenuItem
Caption = '-'
end
object N15: TMenuItem
Caption = '复制计算机名'
Enabled = False
OnClick = N15Click
end
end
object pmTraffic: TPopupMenu
Images = NetImageList
Left = 81
Top = 136
object N8: TMenuItem
Action = TrafficRefreshAction
end
end
object ActionList1: TActionList
Images = NetImageList
Left = 84
Top = 98
object ShareRefreshAction: TAction
Category = 'Share'
Caption = '刷新'
ImageIndex = 0
OnExecute = ShareRefreshActionExecute
end
object ShareAddAction: TAction
Category = 'Share'
Caption = '新建共享'
ImageIndex = 1
OnExecute = ShareAddActionExecute
end
object ShareCloseAction: TAction
Category = 'Share'
Caption = '停止共享'
Enabled = False
ImageIndex = 2
OnExecute = ShareCloseActionExecute
end
object SessionRefreshAction: TAction
Category = 'Session'
Caption = '刷新'
ImageIndex = 0
OnExecute = SessionRefreshActionExecute
end
object SessionCloseAction: TAction
Category = 'Session'
Caption = '关闭会话'
Enabled = False
ImageIndex = 1
OnExecute = SessionCloseActionExecute
end
object TrafficRefreshAction: TAction
Category = 'Traffic'
Caption = '刷新'
ImageIndex = 0
OnExecute = TrafficRefreshActionExecute
end
object FileRefreshAction: TAction
Category = 'Files'
Caption = '刷新'
ImageIndex = 0
OnExecute = FileRefreshActionExecute
end
object FileCloseAction: TAction
Category = 'Files'
Caption = '关闭活动文件'
Enabled = False
ImageIndex = 2
OnExecute = FileCloseActionExecute
end
end
object NetImageList: TImageList
Left = 124
Top = 98
Bitmap = {
494C010103000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000001000000001002000000000000010
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000C8C8C8FFF7F7F7FF0000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000C8C8C8FFF7F7F7FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000084848400C6C6C600C6C6
C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
C600C6C6C600000000000000000000000000ACB9ACFF11B227FF0C9D1BFF156E
19FF5F715FFFBEBEBEFFF4F4F4FF000000000000000000000000000000000000
000000000000000000000000000000000000C0B1B0FFD16E3DFFC15B37FF9244
37FF7A6565FFBEBEBEFFF4F4F4FF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000084848400FFFFFF00FFFF
FF0084E7E700FFFFFF0084E7E70000A5420084E7E700FFFFFF0084E7E700FFFF
FF00C6C6C60000000000000000000000000091A191FF18992EFF15B82CFF13B8
2CFF14B82BFF13B82AFF0DA51EFF0E7713FF536A53FFB7B7B7FFF0F0F0FF0000
000000000000000000000000000000000000AC9797FFD0703FFFD06E3FFFCF6D
3DFFCE6C3CFFD06C3BFFC76138FFA14534FF775A5BFFB6B6B6FFF0F0F0FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000084848400FFFFFF0084E7
E700FFFFFF0084E7E70000A5420000A54200FFFFFF0084E7E700FFFFFF0084E7
E700C6C6C600000000000000000000000000769976FF39BF6AFF26BD3CFF1CB9
32FF13B72AFF14B72BFF15B82CFF15B82CFF14B72BFF13B82BFF0FAD23FF067F
0CFF00000000000000000000000000000000AD8583FFCC6D40FFD0703FFFD06D
3FFFCE6C3EFFCF6D3CFFCF6D3DFFCF6D3DFFCE6C3CFFCF6B3BFFCD6639FFA742
30FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000084848400FFFFFF00FFFF
FF0084E7E70000A5420000A5420000A5420000A5420000A5420084E7E700FFFF
FF00C6C6C6000000000000000000000000005B8B5BFF49D380FF4BC95DFF41C4
54FF39C34CFF32C146FF1BB931FF14B72BFF15B82CFF15B82CFF15B82CFF0BAB
1DFFB3D2B3FF000000000000000000000000A07270FFCA7655FFD37B50FFD175
48FFCF6E3EFFD06D3DFFCF6C3CFFCF6D3DFFCF6D3DFFCF6D3DFFCF6D3DFFC761
36FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000084848400FFFFFF0084E7
E700FFFFFF0084E7E70000A5420000A54200FFFFFF0084A500008463000084E7
E700C6C6C600000000000000000000000000448249FF52D283FF36A141FF65D0
74FF5DCC6CFF54C965FF4BC85CFF42C555FF12B62AFF15B82CFF15B82CFF0BA9
1CFF30B63CFF0000000000000000000000009B6561FFC77960FFDC946FFFDA8D
68FFD78861FFD6845CFFD17649FFCE6C3EFFCF6D3DFFCF6D3DFFCF6D3DFFC963
35FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000084848400FFFFFF00FFFF
FF0084E7E700FFFFFF0084E7E70000A5420084E7E700FFFFFF0084630000FFFF
FF00C6C6C6000000000000000000000000002F8936FF5DD48BFF37AB57FF8DDC
98FF82D88EFF7AD687FF70D37EFF65D076FF5DCD6DFF47C658FF11B62AFF0AA8
1AFF3BC247FFEFF4EFFF0000000000000000AE615AFFC07766FFE1A98BFFE1A2
85FFDF9E7EFFDC9775FFDA936EFFD88862FFCE6D3CFFCF6D3CFFCF6D3DFFC661
35FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000084848400FFFFFF0084E7
E7008463000084E7E700FFFFFF0084E7E700FFFFFF0084E7E7008463000084E7
E700C6C6C60000000000000000000000000021862CFF6AD793FF69D994FFB6EA
BCFFABE5B3FFA0E2A9FF97DFA1FF8DDC98FF82D88EFF7AD587FF70D37EFF61C6
6BFF67CF71FF30A037FF0000000000000000AF5D55FFC58375FFE8BEA8FFE8B7
A1FFE6B399FFE3AE93FFE1A88CFFDFA383FFDF9E7FFFD27447FFCE6B3BFFC35F
33FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000084848400FFFFFF00FFFF
FF0084630000FFFFFF0084E7E70000A5420084E7E700FFFFFF0084E7E700FFFF
FF00C6C6C600000000000000000000000000268C34FF77DA9CFF73DA9AFF73DB
9BFF52BD73FF39A54FFF54AA5CFFB6E9BCFFA9E3B1FFA0E2A9FF97DFA1FF86D3
8EFF96DE9CFF91DD98FF0000000000000000B4685EFFC38376FFEFD1C2FFEECC
BBFFEBC7B5FFEBC1ADFFE9BCA8FFE6B8A1FFE6B39AFFE4AC91FFE2A88CFFD898
7EFFF3F0F0FF0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000084848400FFFFFF0084E7
E7008463000084A50000FFFFFF0000A5420000A5420084E7E700FFFFFF0084E7
E700C6C6C600000000000000000000000000389846FF85DDA5FF82DDA3FF7DDC
A1FF7ADA9FFF78DB9BFF73DA99FF5BC47DFFBFEAC4FFC8EFCDFFBEEDC5FFAEE1
B4FFB5E8BAFFADE5B3FF64A865FF00000000BE7B71FFF7DAC9FFDBAA9BFFC685
76FFC6867AFFECCCBDFFEED0C1FFEECCBBFFEBC7B5FFEBC1ADFFE9BDA8FFE1B1
9CFFEEE1E0FF0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000084848400FFFFFF00FFFF
FF0084E7E70000A5420000A5420000A5420000A5420000A5420084E7E700FFFF
FF00C6C6C6000000000000000000000000004DA55BFF92E0ADFF8FE0AAFF8CDF
A8FF89DDA6FF86DEA4FF81DDA2FF7FDBA1FF7EDCA1FF79DD9FFF73DA9AFF176F
1CFF9ABB99FF64A866FF66B26AFF00000000C99085FFF8E0D1FFF6DAC9FFF4D4
C3FFF2CDBBFFE4B5A1FFDBB0A6FFF3DACFFFF4DCCFFFF2D7C9FFEFD1C2FFE8C5
B6FFD9B7B5FF0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000084848400FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF0000A5420000A5420084E7E700FFFFFF00C6C6
C600C6C6C600000000000000000000000000308D38FF9DE3B5FF9BE1B2FF98E2
B2FF95E1B0FF8EDDAAFF84D59EFF86D9A2FF88DCA6FF86DDA6FF83DEA5FF2673
2CFF00000000000000000000000000000000B76D65FFFAE6D9FFF9E2D4FFF7DC
CCFFF5D7C6FFF0CCBBFFEABDAAFFECBDA9FFECBBA3FFE7AE95FFCE8873FF9848
3FFFE8DAD9FF0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000084848400FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF0000A5420084E7E700FFFFFF00000000000000
000000000000000000000000000000000000D1D5D1FF9BDAAEFFA3E2B8FFA2E4
B9FF9CDFB2FF3D793EFF0000000000000000CFD2CFFF90A390FF588A59FF95AA
95FF00000000000000000000000000000000D8D2D1FFF3DED1FFF9E6D9FFF8E3
D6FFF5DACBFF935A58FF0000000000000000D4D0D0FFAD9797FFA16F6DFFB49E
9EFF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000084848400FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF0084E7E700FFFFFF0084E7E70084848400FFFF
FF00000000000000000000000000000000000000000000000000D7DDD7FF9EBA
9EFF8AB58BFF0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000DFD9D9FFC6AB
AAFFC79F9DFF0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000084848400FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00848484000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000084848400848484008484
8400848484008484840084848400848484008484840084848400848484000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000424D3E000000000000003E000000
2800000040000000100000000100010000000000800000000000000000000000
000000000000000000000000FFFFFF0080039FFF9FFF0000800301FF01FF0000
8003001F001F00008003000F000F000080030007000F000080030007000F0000
80030003000F000080030003000F000080030003000700008003000100070000
80030001000700008003000F000700008003030F030F00008007C7FFC7FF0000
800FFFFFFFFF0000801FFFFFFFFF000000000000000000000000000000000000
000000000000}
end
object Timer1: TTimer
Enabled = False
Interval = 10000
OnTimer = Timer1Timer
Left = 409
Top = 483
end
object pmFiles: TPopupMenu
Images = NetImageList
Left = 185
Top = 136
object N11: TMenuItem
Action = FileRefreshAction
end
object N10: TMenuItem
Caption = '-'
end
object N9: TMenuItem
Action = FileCloseAction
end
end
object pmTree: TPopupMenu
Left = 113
Top = 136
object N16: TMenuItem
Caption = '将本工作组加入发送列表'
Enabled = False
OnClick = N16Click
end
end
object PopupMenu1: TPopupMenu
Left = 716
Top = 337
object N17: TMenuItem
Caption = '显示主窗体'
OnClick = N17Click
end
object N18: TMenuItem
Caption = '-'
end
object N19: TMenuItem
Caption = '退出'
OnClick = N19Click
end
end
end