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

📄 globals.pas

📁 del *.obj del *.dcu del *.~* del *.hpp del *.dcp del *.dpl del *.cesettings del *.log upx sy
💻 PAS
📖 第 1 页 / 共 2 页
字号:
if FileExists(myGetSystemDirectory+'\dxdiag.exe') then Result:=myGetSystemDirectory+'\dxdiag.exe' else
if FileExists(myGetWindowsDirectory+'\dxdiag.exe') then Result:=myGetWindowsDirectory+'\dxdiag.exe'
else Result:='dxdiag';
end;

Function ResultRegeditFile:string;
begin
if FileExists(myGetSystemDirectory+'\regedit.exe') then Result:=myGetSystemDirectory+'\regedit.exe' else
if FileExists(myGetWindowsDirectory+'\regedit.exe') then Result:=myGetWindowsDirectory+'\regedit.exe'
else Result:='regedit';
end;

Procedure ExitWindowsSystem(Const I:integer);
  function SetPrivilege(sPrivilegeName : string;bEnabled : boolean ): boolean;
  var  //NT关机准备函数
    TPPrev,TP : TTokenPrivileges;
    Token : THandle;
    dwRetLen : DWord;
  begin
    Result := False;
    OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,Token);
    TP.PrivilegeCount:=1;
    if( LookupPrivilegeValue(Nil,PChar( sPrivilegeName ),TP.Privileges[ 0 ].LUID ))then
    begin
      if( bEnabled )then //Give this privileges
      begin
        TP.Privileges[ 0 ].Attributes := SE_PRIVILEGE_ENABLED;
      end
      else begin //NOT Give this privileges
        TP.Privileges[ 0 ].Attributes := 0;
      end;
      dwRetLen := 0;
      //enables or disables privileges in the specified access token.
      Result := AdjustTokenPrivileges(Token,False,TP,SizeOf( TPPrev ),TPPrev,dwRetLen);
    end;
    CloseHandle( Token );
  end;
  function WinExitInNT( iFlags : integer ) : boolean;
  begin  //NT关机函数
    Result := True;
    if( SetPrivilege( 'SeShutdownPrivilege',True ) )then
    begin
      if( not ExitWindowsEx( iFlags,0 ) )then
      begin
        Result := False;
      end;
      SetPrivilege( 'SeShutdownPrivilege',False )
    end
    else begin
    Result := False;
    end;
  end;
begin
  case I of
  0 : begin
      win32check(exitwindows(0,0)); //第一个注销
      win32check(exitwindowsex(ewx_logoff,0));//第二个注销
      end;
  1 : begin  //重启系统
      if Win32Platform = VER_PLATFORM_WIN32_WINDOWS then ExitWindowsEx(EWX_FORCE+EWX_SHUTDOWN+EWX_POWEROFF,32);
      if win32platform =ver_platform_win32_NT then  WinExitInNT(EWX_FORCE+EWX_reboot);
      end;
  2 : begin  //关闭系统
      if win32platform =ver_platform_win32_windows then exitwindowsex(ewx_force+ewx_shutdown+ewx_poweroff,32);
      if win32platform =ver_platform_win32_NT then WinExitInNT(EWX_FORCE+EWX_SHUTDOWN+EWX_POWEROFF);
      //以下为自添多个关机过程
         exitwindowsex(ewx_logoff+ewx_force,32);
         exitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF,0);
         exitwindowsex(ewx_shutdown,32);
         WinExitInNT(EWX_FORCE+EWX_SHUTDOWN+EWX_POWEROFF);
      end ;
  end;
end;

Procedure EmptyRecycleBin ;  //清空回收站
Const
SHERB_NOCONFIRMATION = $00000001 ;
SHERB_NOPROGRESSUI = $00000002 ;
SHERB_NOSOUND = $00000004 ;
Type
TSHEmptyRecycleBin = function (Wnd : HWND ;LPCTSTR : PChar ;DWORD : Word ) : Integer ; stdcall ;
Var
SHEmptyRecycleBin : TSHEmptyRecycleBin ;
LibHandle : THandle ;
Begin
LibHandle := LoadLibrary(PChar('Shell32.dll')) ;
If LibHandle <> 0 then
@SHEmptyRecycleBin := GetProcAddress(LibHandle, 'SHEmptyRecycleBinA')
Else
Begin
MessageDlg('Failed to load Shell32.dll.', mtError, [mbOK], 0);
Exit ;
End ;
If @SHEmptyRecycleBin <> nil then SHEmptyRecycleBin(Application.Handle ,'' ,SHERB_NOCONFIRMATION or SHERB_NOPROGRESSUI or SHERB_NOSOUND ) ;
FreeLibrary(LibHandle);
@SHEmptyRecycleBin := nil ;
End ;


function SearchAllFile(Path:string;Ext:string):TStrings;
var  //搜索指定目录下的所有指定扩展名的文件,返回全路径文件名到TSrings字符串    Path 路径(ExtractFilePath(ParamStr(0))),Ext扩展名(*.ini)
  ResultStrings:TStrings;
  SResult:integer;
  SearchRec:TsearchRec;
begin
  ResultStrings:=TStringList.Create;
  SResult:=FindFirst(format('%s\', [Path])+Ext, faAnyFile, SearchRec);
  while SResult=0 do
  begin
  if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') and (SearchRec.Attr<>faDirectory) and (LowerCase(SearchRec.Name)<>'desktop.ini') then
  begin
    //ResultStrings.Add(ChangeFileExt(SearchRec.Name,''));  //反回去扩展名的
    ResultStrings.Add(format('%s\',[Path])+SearchRec.Name);
  end;
  SResult:=FindNext(SearchRec);
  end;
  FindClose(SearchRec);
  Result:=ResultStrings;
end;

Function RegValueExists(RootKEY:HKEY;Const Openkey,KeyName:string):boolean;
var
   Reg:TRegistry;
begin
   try
   Reg:=TRegistry.Create;
   Reg.RootKey:=RootKey;
   if (Reg.OpenKey(OpenKey,False))and(Reg.ValueExists(KeyName)) then Result:=True else Result:=False;
   finally
   Reg.CloseKey;
   Reg.Free;
   end;
end;

Function RegKeyExists(RootKEY:HKEY;Const Openkey,KeyName:string):boolean;
var
   Reg:TRegistry;
begin
   try
   Reg:=TRegistry.Create;
   Reg.RootKey:=RootKey;
   if (Reg.OpenKey(OpenKey,False))and(Reg.KeyExists(KeyName)) then Result:=True else Result:=False;
   finally
   Reg.CloseKey;
   Reg.Free;
   end;
end;

Function DeleteKey(RootKEY:HKEY;Const Openkey,KeyName:string):boolean;
var
   Reg:TRegistry;
begin
   try
   Reg:=Tregistry.Create;
   Reg.RootKey:=RootKEY;
   Reg.OpenKey(Openkey,False);
   Result:=Reg.DeleteKey(KeyName);
   finally
   Reg.CloseKey;
   Reg.Free;
   end;
end;

Function DeleteValue(RootKEY:HKEY;Const Openkey,KeyName:string):boolean;
var
   Reg:TRegistry;
begin
   try
   Reg:=TRegistry.Create;
   Reg.RootKey:=RootKey;
   if (Reg.OpenKey(OpenKey,False))and(Reg.ValueExists(KeyName)) then Result:=Reg.DeleteValue(KeyName) else Result:=True;
   finally
   Reg.CloseKey;
   Reg.Free;
   end;
end;

Function GetRegStringKey(RootKEY:HKEY;Const Openkey,KeyName:string):String;
var
   Reg:TRegistry;
begin
   try
   Reg:=TRegistry.Create;
   Reg.RootKey:=RootKey;
   if (Reg.OpenKey(OpenKey,False))and(Reg.ValueExists(KeyName)) then Result:=Reg.ReadString(KeyName) else Result:='';
   finally
   Reg.CloseKey;
   Reg.Free;
   end;
end;

Function SetRegStringKey(RootKEY:HKEY;Const Openkey,KeyName,KeyValue:string):Boolean;
var
   Reg:TRegistry;
begin
   Reg:=TRegistry.Create;
   try
   Reg.RootKey:=RootKey;
   if Reg.OpenKey(OpenKey,True) then Reg.WriteString(KeyName,KeyValue);
   Finally
   Reg.CloseKey;
   Reg.Free;
   Result:=False;
   end;
   Result:=True;
end;

Function GetRegIntegerKey(RootKEY:HKEY;Const Openkey,KeyName:string):integer;
var
  Reg:TRegistry;
begin
  try
  Reg:=TRegistry.Create;
  Reg.RootKey:=RootKey;
  if (Reg.OpenKey(OpenKey,False))and(Reg.ValueExists(KeyName)) then Result:=Reg.ReadInteger(KeyName) else Result:=0;
  finally
  Reg.CloseKey;
  Reg.Free;
  end;
end;

Function SetRegIntegerKey(RootKEY:HKEY;Const Openkey,KeyName:string;KeyValue:integer):Boolean;
var
  Reg:TRegistry;
begin
  try
  Reg:=TRegistry.Create;
  Reg.RootKey:=RootKey;
  if Reg.OpenKey(OpenKey,True) then Reg.WriteInteger(KeyName,KeyValue);
  Finally
  Reg.CloseKey;
  Reg.Free;
  Result:=False;
  end;
  Result:=True;
end;

Function GetRegBinaryKey(RootKEY:HKEY;Const Openkey,KeyName:string):Byte;
var
  Reg:TRegistry;
begin
  try
  Reg:=TRegistry.Create;
  Reg.RootKey:=RootKey;
  if (Reg.OpenKey(OpenKey,False))and(Reg.ValueExists(KeyName)) then  Reg.ReadBinaryData(KeyName,Result,512) else Result:=0;
  finally
  Reg.CloseKey;
  Reg.Free;
  end;
end;

Function SetRegBinaryKey(RootKEY:HKEY;Const Openkey,KeyName:string;KeyValue:Byte):Boolean;
var
  Reg:TRegistry;
begin
  try
  Reg:=TRegistry.Create;
  Reg.RootKey:=RootKey;
  if Reg.OpenKey(OpenKey,True) then Reg.WriteBinaryData(KeyName,KeyValue,SizeOf(KeyValue));//写注册表
  Finally
  Reg.CloseKey;
  Reg.Free;
  Result:=False;
  end;
  Result:=True;
end;


Function BooleanToInteger(Const BooleanValue:Boolean):integer;
begin
if BooleanValue then result:=1 else result:=0;
end;
Function IntegerToBoolean(Const IntegerValue:integer):Boolean;
begin
if IntegerValue>0 then result:=True else result:=False;
end;
Function YesNoToBoolean(Const YesNoValue:string):Boolean;
begin
if LowerCase(YesNoValue)='yes' then result:=True else result:=False;
end;
Function BooleanToYesNo(Const BooleanValue:boolean):string;
begin
if BooleanValue then result:='yes' else result:='no';
end;
Function StringToBoolean(Const StringValue:string):Boolean;
begin
if StringValue>'0' then result:=True else result:=False;
end;
Function BooleanToString(Const BooleanValue:boolean):string;
begin
if BooleanValue then result:='1' else result:='0';
end;




end.









⌨️ 快捷键说明

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