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

📄 unit1.pas

📁 scaniruet vse computory v sety
💻 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 + -