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

📄 unitpublicfunction.pas

📁 手机批发商进销存管理
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -