📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ImgList, ComCtrls, StdCtrls, ExtCtrls, FileCtrl;
type
TmainForm = class(TForm)
TV: TTreeView;
rgResources: TRadioGroup;
sbProcess: TStatusBar;
ImageList1: TImageList;
MainMenu1: TMainMenu;
n1: TMenuItem;
Scan: TMenuItem;
ProgressBar1: TProgressBar;
Exit: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
PopupMenu1: TPopupMenu;
N11: TMenuItem;
ComboBox1: TComboBox;
Button2: TButton;
ComboBox2: TComboBox;
Button3: TButton;
Edit1: TEdit;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
Label1: TLabel;
Label2: TLabel;
N12: TMenuItem;
Label3: TLabel;
Button1: TButton;
procedure ExitClick(Sender: TObject);
procedure ScanClick(Sender: TObject);
procedure EnumResource(NetRes:PNetResource;node:TTreeNode);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure TVDblClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
NumRes = 2000;
type
NetResBuf = array [1..NumRes] of NETRESOURCE;
pNetResBuf = ^NetResBuf;
var
mainForm: TmainForm;
wdType : Longword;
hThread : THandle;
idThread : DWORD;
procedure netresources;
implementation
{$R *.dfm}
procedure netresources;
var
Buffer_Size : longword;
Buffer : PChar;
i,j,k : integer;
D_Name : String;
used_disk: array[1..26] of char;
no: boolean;
begin
Buffer_Size := 2000;
mainform.ComboBox1.Items.Clear;
mainform.ComboBox2.Items.Clear;
GetMem(Buffer,Buffer_Size);
Buffer_Size :=GetLogicalDriveStrings(Buffer_Size,Buffer);
i:=0; k:=0;
while (i < Buffer_Size) do
begin
D_Name := Buffer[i];
inc(k);
used_disk[k]:=D_name[1];
Inc(i,4);
end;
Dispose(Buffer);
for i:=ord('A') to ord('Z') do
begin
no:=false;
for j:=1 to k do
if chr(i)=used_disk[j] then no:=true;
if not(no) then
mainform.Combobox1.Items.Add(chr(i));
if (GetDriveType(PChar(chr(i)+':\'))=DRIVE_REMOTE) then
mainform.ComboBox2.Items.Add(chr(i));
end;
end;
procedure TmainForm.ExitClick(Sender: TObject);
begin
Close;
end;
procedure TMainForm.EnumResource(NetRes:PNetResource;node:TTreeNode);
var
result,count,Buffer_size : longword;
Buffer : pNetResBuf;
hEnum : THandle;
j,i,img : integer;
child : TTreeNode;
ShortName,NameC: String;
begin
result:=WNetOpenEnum(RESOURCE_GLOBALNET,wdtype,0,NetRes,hEnum);
if result=No_Error then
begin
count:=NumRes;
Buffer_size:=sizeof(NETRESOURCE)*NumRes;
GetMem(Buffer,Buffer_Size);
result:=WNetEnumResource(hEnum,count,Buffer,Buffer_size);
if result=No_Error then
for i:=1 to count do
begin
case Buffer^[i].dwDisplayType of
RESOURCEDISPLAYTYPE_DOMAIN: img:=1;
RESOURCEDISPLAYTYPE_GENERIC: img:=0;
RESOURCEDISPLAYTYPE_SERVER: img:=2;
RESOURCEDISPLAYTYPE_SHARE: img:=3;
else img:=0;
end;
NameC:=Buffer^[i].lpRemoteName;
for j:=1 to length(NameC) do
begin
if NameC[j]<>'\' then ShortName:=ShortName+NameC[j]
else ShortName:='';
end;
child:=TV.Items.AddChild(node,shortname);
shortname:='';
child.ImageIndex:=img;
child.SelectedIndex:=img;
if (Buffer^[i].dwUsage and RESOURCEUSAGE_CONTAINER) = RESOURCEUSAGE_CONTAINER then
EnumResource(@Buffer^[i],child);
ProgressBar1.Position:=(100*i) div count;
end;
FreeMem(Buffer);
end
else WNetCloseEnum(hEnum);
end;
function NETScanner:DWORD;
begin
with mainForm do
begin
case rgResources.ItemIndex of
0: wdType := RESOURCETYPE_ANY;
1: wdType := RESOURCETYPE_DISK;
2: wdType := RESOURCETYPE_PRINT;
end;
TV.Items.Clear;
TV.Items.AddChild(nil,'埋
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -