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

📄 u_sysset.pas

📁 软件功能:下载一个网站上所有的彩铃! 铃声下载完后
💻 PAS
字号:
unit U_SysSet;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls;

type
TNetResourceArray = ^TNetResource;//网络类型的数组

const
    MaxEntries = 250;

type
  TF_SysSet = class(TForm)
    bbtnSure: TBitBtn;
    bbtnCan: TBitBtn;
    RadioGroup1: TRadioGroup;
    cbIsShowLoginFrm: TCheckBox;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    cbbServerName: TComboBox;
    cbbDb: TComboBox;
    cbbSubmitLogTb: TComboBox;
    cbbDeliverLogTb: TComboBox;
    procedure bbtnCanClick(Sender: TObject);
    procedure editOnceShowCountKeyPress(Sender: TObject; var Key: Char);
    procedure cbbServerNameSelect(Sender: TObject);
    procedure cbbDbSelect(Sender: TObject);
  private
    Function GetServerList(var Computers: TStringList): DWORD;
    function GetUsers(GroupName: string; var List: TStringList): Boolean;
    Procedure SetcbbServerName;
    Procedure SetcbbServerNameList;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  F_SysSet: TF_SysSet;
  Procedure InitF_SysSet;

implementation

  Uses U_OtherPublicPack,U_DBPublicPack,U_PulicPack,U_StringPublicPack, U_main,
  StdConvs, U_RecordStruct;

{$R *.dfm}

Procedure InitF_SysSet;
begin
  F_SysSet:=TF_SysSet.Create(nil);
  try
    F_SysSet.ShowModal;
  Finally
    FreeAndNil(F_SysSet);
  end;
end;

procedure TF_SysSet.bbtnCanClick(Sender: TObject);
begin
  Close;
end;

procedure TF_SysSet.editOnceShowCountKeyPress(Sender: TObject;
  var Key: Char);
begin
  if not IsValidChar(Key) then
  begin
    Key := #0;
    MessageBeep(0)
  end;
  if Key <> #0 then inherited KeyPress(Key);
end;

function TF_SysSet.GetServerList(Var Computers: TStringList): DWORD;
var
  EnumWorkGroupHandle, EnumComputerHandle: THandle;
  EnumError: DWORD;
  Network: TNetResource;
  WorkGroupEntries, ComputerEntries: DWORD;
  EnumWorkGroupBuffer, EnumComputerBuffer: array[1..MaxEntries] of TNetResource;
  EnumBufferLength: DWORD;
  I, J: DWORD;
begin
  Computers.Clear;
  FillChar(Network, SizeOf(Network), 0);
    with Network do
    begin
      dwScope := RESOURCE_GLOBALNET;
      dwType := RESOURCETYPE_ANY;
      dwUsage := RESOURCEUSAGE_CONTAINER;
    end;
  
    EnumError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @Network, EnumWorkGroupHandle);

    if EnumError = NO_ERROR then
    begin
      WorkGroupEntries := MaxEntries;
      EnumBufferLength := SizeOf(EnumWorkGroupBuffer);
      EnumError := WNetEnumResource(EnumWorkGroupHandle, WorkGroupEntries, @EnumWorkGroupBuffer, EnumBufferLength);
  
      if EnumError = NO_ERROR then
      begin
        for I := 1 to WorkGroupEntries do
        begin
          EnumError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @EnumWorkGroupBuffer[I], EnumComputerHandle);
          if EnumError = NO_ERROR then
          begin
            ComputerEntries := MaxEntries;
            EnumBufferLength := SizeOf(EnumComputerBuffer);
            EnumError := WNetEnumResource(EnumComputerHandle, ComputerEntries, @EnumComputerBuffer, EnumBufferLength);
            if EnumError = NO_ERROR then
              for J := 1 to ComputerEntries do
                Computers.Add(Copy(EnumComputerBuffer[J].lpRemoteName, 1, Length(EnumComputerBuffer[J].lpRemoteName)));
            WNetCloseEnum(EnumComputerHandle);
          end;
        end;
      end;
      WNetCloseEnum(EnumWorkGroupHandle);
    end;
  
    if EnumError = ERROR_NO_MORE_ITEMS then
      EnumError := NO_ERROR;
    Result := EnumError;
  
end;

function TF_SysSet.GetUsers(GroupName: string;
  var List: TStringList): Boolean;
var
  NetResource : TNetResource;
  Buf : Pointer;
  Count,BufSize,Res : DWord;
  Ind : Integer;
  lphEnum : THandle;
  Temp : TNetResourceArray;
Begin
  buf:=nil;
  Result := False;
  List.Clear;
  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; //执行失败
    While True Do//列举指定工作组的网络资源
    Begin
      Count := $FFFFFFFF;//不限资源数目
      BufSize := 8192;//缓冲区大小设置为8K
      GetMem(Buf, BufSize);//申请内存,用于获取工作组信息
      //获取计算机名称
      Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);
      If Res = ERROR_NO_MORE_ITEMS Then break;//资源列举完毕
      If (Res <> NO_ERROR) then Exit;//执行失败
      Temp := TNetResourceArray(Buf);
      For Ind := 0 to Count - 1 do//列举工作组的计算机名称
      Begin
      //获取工作组的计算机名称,+2表示删除"\\",如\\wangfajun=>wangfajun
        List.Add(Temp^.lpRemoteName + 2);
        Inc(Temp);
      End;
    End;
    Res := WNetCloseEnum(lphEnum);//关闭一次列举
    If Res <> NO_ERROR Then exit;//执行失败
    Result := True;
    FreeMem(Buf);
  end;



procedure TF_SysSet.SetcbbServerName;
Var
  iList,jList:TStrings;
  i,j:Integer;
begin
  cbbServerName.Clear;
  iList:=TStringList.Create;
  jList:=TStringList.Create;
  jList.Clear;
  GetServerList(TStringList(iList));
  For i:=0 to iList.Count-1 do
  begin
    GetUsers(iList.Strings[i],TStringList(jList));
    For j:=0 to jList.Count-1 do
      cbbServerName.Items.Add(jList.Strings[j]);
  end;  
end;

procedure TF_SysSet.cbbServerNameSelect(Sender: TObject);
begin
  //ServerName := cbbServerName.Text;
  GetAllDateBaseName(cbbDb.Items,cbbServerName.Text);
end;

procedure TF_SysSet.cbbDbSelect(Sender: TObject);
begin
  //DataBaseName := cbbDB.Text;
  GetAllTableName(cbbServerName.Text,cbbDB.Text,cbbDeliverLogTb.Items);
  GetAllTableName(cbbServerName.Text,cbbDB.Text,cbbSubmitLogTb.Items);
end;

procedure TF_SysSet.SetcbbServerNameList;
begin
  cbbServerName.Clear;
  ExtractStrings([','],[],Pchar(ServerNameList),cbbServerName.Items);
end;

end.

⌨️ 快捷键说明

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