📄 unitpublicfunction.pas
字号:
unit UnitPublicFunction; //公共单元
interface
uses
Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,
WinSock,MMSystem,ShellApi,ActiveX;
procedure HideDesktop;//隐藏桌面图标
procedure ShowDesktop;//恢复桌面图标
procedure StartScreenSave;//启动屏幕保护程序
procedure HideTaskbar;//隐藏任务栏
procedure ShowTaskbar;//恢复任务栏
procedure CloseCTRLALTDEL;//屏蔽Ctrl+Alt+Del
procedure RestoreCTRLALTDEL;//恢复Ctrl+Alt+Del
procedure OpenCDROM;//打开光驱
procedure CloseCDROM;//关闭光驱
procedure ExitWindows;//关闭windows
procedure ChangeDateTime;//启动WINDOWS控制面板改变日期时间设置
procedure ChangeDesk;//启动WINDOWS控制面板改变桌面设置
function HideAppTask:Boolean;//使程序不出现在任务栏
function SetComputerName(name:string):Boolean;//改变计算机在网络中的名字
function SmallTOBig(small:real):string;//小写金额转成大写金额
function GetIPAddress:string;//获取本机的IP地址
function GetSysMetrics:string;//获取显示分辨率
function DynamicResolution(X,Y:Word):Boolean;//动态修改显示器分辨率
function GetUserName:AnsiString;//获取windows的用户名
function GetSysPath:string;//获取WINDOWS系统路径
function GetSysInfo:string;//获取WINDOWS版本信息
function DePwd(password: AnsiString; mode:Integer): AnsiString;//加密/解密
function IsEqualsTStrs(A,B:TStrings):Boolean;//比较两个TStrings
function IsDate(tmp:string):Boolean;//判断是否为合法日期
function CopyDir(fromdir,todir:string):Boolean;//拷贝目录
function GetIdeSerialNumber: PChar;//获取第一个IDE硬盘的序列号
function GetGUID:String;
implementation
function DePwd(password: AnsiString; mode:Integer): AnsiString;//加密/解密
const
key: Integer = 32;
t1 : array[0..15] of Integer=(6,12,5,9,10,0,13,8,15,3,14,4,2,11,1,7);
t2 : array[0..15] of Integer=(5,14,12,9,11,2,0,15,7,3,4,13,1,6,10,8);
t3 : array[0..15] of Char = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
var
pwdstr :string;
passleng, keypass, m, n : integer;
begin
pwdstr := '';
if mode = 0 then //mode=0加密, 否则进行解密
begin
for passleng := 0 to length(password)-1 do
begin
keypass:=ord(password[passleng+1]) xor 32;
pwdstr:=pwdstr+t3[t1[keypass div 16]]+t3[t1[keypass mod 16]];
end;
end
else //解密过程
begin
passleng:=0;
while passleng<length(password)-1 do
begin
m:=0;
while copy(password,passleng+1,1)<>t3[m] do m:=m+1;
n:=0;
passleng := passleng+1;
while copy(password,passleng+1,1)<>t3[n] do n:=n+1;
passleng := passleng+1;
pwdstr := pwdstr+char((t2[m]*16+t2[n]) xor key);
end;
end;
Result := pwdstr; //返回值
end;
function SmallTOBig(small:real):string;//小写金额转成大写金额
var
SmallMonth,BigMonth : string;
wei1,qianwei1 : string[2];
wei,qianwei,dianweizhi,qian: integer;
smallvalue : real;
begin
smallvalue := abs(small);
qianwei := -2;//小数点后的位置,可以改动成更精确的位置
smallmonth := formatfloat('0.00',smallvalue);
dianweizhi := pos('.',smallmonth);
for qian:=length(smallmonth) downto 1 do
begin
if qian<>dianweizhi then
begin
case strtoint(copy(smallmonth,qian,1)) of//位置上的数转换成大写
1 : wei1 := '壹';
2 : wei1 := '贰';
3 : wei1 := '叁';
4 : wei1 := '肆';
5 : wei1 := '伍';
6 : wei1 := '陆';
7 : wei1 := '柒';
8 : wei1 := '捌';
9 : wei1 := '玖';
0 : wei1 := '零';
end;
case qianwei of//判断大写位置,可以继续增大到real类型的最大值
-3 : qianwei1 := '厘';
-2 : qianwei1 := '分';
-1 : qianwei1 := '角';
0 : qianwei1 := '元';
1 : qianwei1 := '拾';
2 : qianwei1 := '佰';
3 : qianwei1 := '千';
4 : qianwei1 := '万';
5 : qianwei1 := '拾';
6 : qianwei1 := '佰';
7 : qianwei1 := '千';
8 : qianwei1 := '亿';
9 : qianwei1 := '十';
10 : qianwei1 := '佰';
11 : qianwei1 := '千';
end;
inc(qianwei);
BigMonth := wei1 + qianwei1 + BigMonth;
end;
end;
if small<0 then BigMonth := '负' + BigMonth;
SmallToBig := BigMonth;
end;
function GetIPAddress:string;//获取本机的IP地址
var
IP : string;
IPStr : string;
ch : array[1..32] of char;
i : integer;
WSData : TWSAData;
MyHost : PHostEnt;
begin
if WSAstartup(2,wsdata)<>0 then
begin
// MessageDlg('没有成功返回!',mtinformation,[mbok],0);
halt(2);
end;
try
if gethostname(@ch[1],32)<>0 then
begin
// MessageDlg('没有成功返回!',mtinformation,[mbok],0);
halt(3);
end;
except
// MessageDlg('没有成功返回!',mtinformation,[mbok],0);
halt(3);
end;
MyHost := GetHostByName(@ch[1]);
if MyHost=Nil then
begin
// MessageDlg('IP地址为空!',mtinformation,[mbok],0);
halt(4);
end
else
begin
for i:=1 to 4 do
begin
IP := inttostr(ord(MyHost.h_addr^[i-1]));
// showmessage('分段IP 地址为:'+IP);
IPStr := IPStr + IP;
if i<4 then
begin
IPStr := IPStr+'.';
end
else
begin
// MessageDlg('IP地址为:'+IPStr,mtinformation,[mbok],0);
Result := IPStr;
end;
end;
end;
end;
procedure HideDesktop;//隐藏桌面图标
var
hDesktop : THandle;
begin
hDesktop := FindWindow('Progman',Nil);
ShowWindow(hDesktop,SW_HIDE);
end;
procedure ShowDesktop;//恢复桌面图标
var
hDesktop : THandle;
begin
hDesktop := FindWindow('Progman',Nil);
ShowWindow(hDesktop,SW_SHOW);
end;
function DynamicResolution(X,Y:Word):Boolean;//动态修改显示器分辨率
var
lpDevMode : TDeviceMode;
begin
Result := EnumDisplaySettings(Nil,0,lpDevMode);
if Result then
begin
lpDevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
lpDevMode.dmPelsWidth := X;
lpDevMode.dmPelsHeight:= Y;
Result := ChangeDisplaySettings(lpDevMode,0) = DISP_CHANGE_SUCCESSFUL;
end;
end;
procedure StartScreenSave;//启动屏幕保护程序
begin
SendMessage(HWND_BROADCAST,WM_SYSCOMMAND,SC_SCREENSAVE,0);
end;
function GetSysMetrics:string;//获取显示分辨率
var
x,y : longint;
sx,sy : string;
begin
x := GetSystemMetrics(SM_CXSCREEN);
Str(x,sx);
y := GetSystemMetrics(SM_CYSCREEN);
Str(y,sy);
Result := sx + '*' + sy;
end;
procedure HideTaskbar;//隐藏任务栏
var
wndHandle : THandle;
wndClass : array [0..250] of Char;
begin
StrPCopy(@wndClass[0],'Shell_TrayWnd');
wndHandle := FindWindow(@wndClass[0],Nil);
ShowWindow(wndHandle,SW_HIDE);
end;
procedure ShowTaskbar;//恢复任务栏
var
wndHandle : THandle;
wndClass : array [0..250] of Char;
begin
StrPCopy(@wndClass[0],'Shell_TrayWnd');
wndHandle := FindWindow(@wndClass[0],Nil);
ShowWindow(wndHandle,SW_RESTORE);
end;
procedure CloseCTRLALTDEL;//屏蔽Ctrl+Alt+Del
var
tmp : integer;
begin
tmp := 0;
SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,@tmp,0);
end;
procedure RestoreCTRLALTDEL;//恢复Ctrl+Alt+Del
var
tmp : integer;
begin
tmp := 0;
SystemParametersInfo(SPI_SCREENSAVERRUNNING,0,@tmp,0);
end;
procedure OpenCDROM;//打开光驱
begin
mciSendString('Set cdaudio door open wait',Nil,0,Application.Handle);
end;
procedure CloseCDROM;//关闭光驱
begin
mciSendString('Set cdaudio door closed wait',Nil,0,Application.Handle);
end;
procedure ExitWindows;//关闭windows
begin
ExitWindowsEx(EWX_SHUTDOWN,0);
end;
procedure ChangeDateTime;//启动WINDOWS控制面板改变日期时间设置
begin
try
winexec('rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,4',9);
except
end;
end;
procedure ChangeDesk;//启动WINDOWS控制面板改变桌面设置
begin
try
winexec('rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,4',9);
except
end;
end;
function GetUserName:AnsiString;//获取windows的用户名
var
lpName:PAnsiChar;
lpUserName:PAnsiChar;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -