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

📄 fununit.pas

📁 史上最完整的下载者源代码,需要的朋友下载后可以研究
💻 PAS
字号:
unit FunUnit;

interface

uses Windows;

function ExtractFileName(const FullName: string): string; // 解出文件名
function CompareAnsiText(const Str1, Str2: string): Boolean; // 字符串比较
procedure SetRegStr(RootKey: HKEY; const StrPath, StrName, StrData: PChar); // 设置键值
procedure DelRegStr(RootKey: HKEY; const StrPath, StrValue: PChar); // 删除键值
function QueryRegStr(RootKey: HKEY; const StrPath, StrValue: PChar): Boolean; // 查询键值
procedure DeleteFileRestart(const FileName: string); // 删除文件(重启后)

implementation

  // 解出文件名
function ExtractFileName(const FullName: string): string;
var
  P: Integer;
begin
  P := Length(FullName);
  while (P > 0) and (FullName[P] <> '\') and (FullName[P] <> ':') do Dec(P);
  Result := Copy(FullName, P + 1, Length(FullName) - P);
end;

  // 字符串比较
function CompareAnsiText(const Str1, Str2: string): Boolean;
begin
  Result :=
    CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, @Str1[1], -1, @Str2[1], -1) = 2;
end;

  // 设置注册表键值
procedure SetRegStr(RootKey: HKEY; const StrPath, StrName, StrData: PChar);
    // 返回字符串长度
  function StrLen(const Str: PChar): Cardinal; assembler;
  asm
        MOV     EDX,EDI
        MOV     EDI,EAX
        MOV     ECX,0FFFFFFFFH
        XOR     AL,AL
        REPNE   SCASB
        MOV     EAX,0FFFFFFFEH
        SUB     EAX,ECX
        MOV     EDI,EDX
  end;
var
  TempKey: HKEY;
  Disposition, DataSize: LongWord;
begin
 // 打开
  TempKey := 0;
  Disposition := REG_CREATED_NEW_KEY;
  RegCreateKeyEx(RootKey, StrPath, 0, nil, 0, KEY_ALL_ACCESS, nil, TempKey, @Disposition);

 // 添加
  DataSize := StrLen(StrData) + 1;
  RegSetValueEx(TempKey, StrName, 0, REG_SZ, StrData, DataSize);
  
 // 关闭
  RegCloseKey(TempKey);
end;

  // 删除注册表键值
procedure DelRegStr(RootKey: HKEY; const StrPath, StrValue: PChar);
var
  TempKey: HKEY;
  Disposition: LongWord;
begin
 // 打开
	TempKey := 0;
  Disposition := REG_OPENED_EXISTING_KEY;
	RegCreateKeyEx(RootKey, StrPath, 0, nil, 0, KEY_ALL_ACCESS, nil, TempKey, @Disposition);

 // 删除
	RegDeleteValue(TempKey, StrValue);
  
 // 关闭
	RegCloseKey(TempKey);
end;

  // 查询注册表键值
function QueryRegStr(RootKey: HKEY; const StrPath, StrValue: PChar): Boolean;
var
  TempKey: Hkey;
  Disposition, ValueType: LongWord;
begin
 // 打开
	TempKey := 0;
  Disposition := REG_OPENED_EXISTING_KEY;
	RegCreateKeyEx(RootKey, StrPath, 0, nil, 0, KEY_ALL_ACCESS, nil, TempKey, @Disposition);

 // 查询
	ValueType := REG_SZ;
	Result := RegQueryValueEx(TempKey, StrValue, nil, @ValueType, nil, nil) = ERROR_SUCCESS;
  
 // 关闭
	RegCloseKey(TempKey);
end;

  // 删除文件(重启后)
procedure DeleteFileRestart(const FileName: string);
    // 是否9x操作系统
  function IsWindows9x(): Boolean;
  var
    Osi: TOSVersionInfo;
  begin
    Osi.dwOSVersionInfoSize := SizeOf(Osi);
    GetVersionEx(Osi);
    Result := Osi.dwPlatformId <> VER_PLATFORM_WIN32_NT;
  end;
var
  PathBuff: array[0..MAX_PATH] of Char;
begin
  if (IsWindows9x() = FALSE) then
    MoveFileEx(@FileName[1], nil, MOVEFILE_DELAY_UNTIL_REBOOT) // 由该函数写注册表
  else begin
    GetShortPathName(@FileName[1], @PathBuff[0], MAX_PATH); // 转为"8.3命名法"短文件名
    WritePrivateProfileString('rename', 'NUL', @PathBuff[0], 'wininit.ini'); // 写wininit文件
  end;
end;

end.

⌨️ 快捷键说明

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