?? 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 + -