现在的位置: 首页 > 综合 > 正文

获得系统语种等信息

2013年09月06日 ⁄ 综合 ⁄ 共 8354字 ⁄ 字号 评论关闭
function   TForm1.GetLocaleInformation(Flag:   Integer):   String;  
  var  
      pcLCA:   Array[0..20]   of   Char;  
  begin  
      if(   GetLocaleInfo(LOCALE_SYSTEM_DEFAULT,Flag,pcLCA,19)   <=   0   )   then   begin  
      pcLCA[0]   :=   #0;  
      end;  
      Result   :=   pcLCA;  
  end;  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  begin  
      ShowMessage(GetLocaleInformation(LOCALE_SENGLANGUAGE));  
  end;  
   
  参数"Flag"可以取下列值:  
   
      LOCALE_NOUSEROVERRIDE   {   do   not   use   user   overrides   }  
      LOCALE_USE_CP_ACP   {   use   the   system   ACP   }  
      LOCALE_ILANGUAGE   {   语言代号   }  
      LOCALE_SLANGUAGE   {   本地语言名称   }  
      LOCALE_SENGLANGUAGE   {   语言的英语名   }  
      LOCALE_SABBREVLANGNAME   {   语言名称缩写   }  
      LOCALE_SNATIVELANGNAME   {   本地语言名称   }  
      LOCALE_ICOUNTRY   {   国家代号   }  
      LOCALE_SCOUNTRY   {   国家名   }  
      LOCALE_SENGCOUNTRY   {   国家的英语名称   }  
      LOCALE_SABBREVCTRYNAME   {   国家名缩写   }  
      LOCALE_SNATIVECTRYNAME   {   国家名   }  
      LOCALE_IDEFAULTLANGUAGE   {   缺省语言代号   }  
      LOCALE_IDEFAULTCOUNTRY   {   缺省国家代码   }  
      LOCALE_IDEFAULTCODEPAGE   {   缺省oem代码页   }  
      LOCALE_IDEFAULTANSICODEPAGE   {   缺省ansi代码页   }  
      LOCALE_IDEFAULTMACCODEPAGE   {   缺省mac页   }  
      LOCALE_SLIST   {   列表项分割符   }  
      LOCALE_IMEASURE   {   测量单位0   =   米制,   1   =   英制   }  
      LOCALE_SDECIMAL   {   小数点符号   }  
      LOCALE_STHOUSAND   {   千位分割符   }  
      LOCALE_SGROUPING   {   digit   grouping   }  
      LOCALE_IDIGITS   {   number   of   fractional   digits   }  
      LOCALE_ILZERO   {   leading   zeros   for   decimal   }  
      LOCALE_INEGNUMBER   {   负数模式   }  
      LOCALE_SNATIVEDIGITS   {   native   ascii   0-9   }  
      LOCALE_SCURRENCY   {   本地货币符号   }  
      LOCALE_SINTLSYMBOL   {   国际货币符号   }  
      LOCALE_SMONDECIMALSEP   {   货币小数点分割符   }  
      LOCALE_SMONTHOUSANDSEP   {   货币千位分割符   }  
      LOCALE_SMONGROUPING   {   monetary   grouping   }  
      LOCALE_ICURRDIGITS   {   #   local   monetary   digits   }  
      LOCALE_IINTLCURRDIGITS   {   #   intl   monetary   digits   }  
      LOCALE_ICURRENCY   {   positive   currency   mode   }  
      LOCALE_INEGCURR   {   negative   currency   mode   }  
      LOCALE_SDATE   {   日期分割符   }  
      LOCALE_STIME   {   时间分割符   }  
      LOCALE_SSHORTDATE   {   短日期字符串   }  
      LOCALE_SLONGDATE   {   长日期字符串   }  
      LOCALE_STIMEFORMAT   {   time   format   string   }  
      LOCALE_IDATE   {   short   date   format   ordering   }  
      LOCALE_ILDATE   {   long   date   format   ordering   }  
      LOCALE_ITIME   {   time   format   specifier   }  
      LOCALE_ITIMEMARKPOSN   {   time   marker   position   }  
      LOCALE_ICENTURY   {   century   format   specifier   (short   date)   }  
      LOCALE_ITLZERO   {   leading   zeros   in   time   field   }  
      LOCALE_IDAYLZERO   {   leading   zeros   in   day   field   (short   date)   }  
      LOCALE_IMONLZERO   {   leading   zeros   in   month   field   (short   date)   }  
      LOCALE_S1159   {   AM   designator   }  
      LOCALE_S2359   {   PM   designator   }  
      LOCALE_ICALENDARTYPE   {   type   of   calendar   specifier   }  
      LOCALE_IOPTIONALCALENDAR   {   additional   calendar   types   specifier   }  
      LOCALE_IFIRSTDAYOFWEEK   {   first   day   of   week   specifier   }  
      LOCALE_IFIRSTWEEKOFYEAR   {   first   week   of   year   specifier   }  
      LOCALE_SDAYNAME1   {   long   name   for   Monday   }  
      LOCALE_SDAYNAME2   {   long   name   for   Tuesday   }  
      LOCALE_SDAYNAME3   {   long   name   for   Wednesday   }  
      LOCALE_SDAYNAME4   {   long   name   for   Thursday   }  
      LOCALE_SDAYNAME5   {   long   name   for   Friday   }  
      LOCALE_SDAYNAME6   {   long   name   for   Saturday   }  
      LOCALE_SDAYNAME7   {   long   name   for   Sunday   }  
      LOCALE_SABBREVDAYNAME1   {   星期一的缩写   }  
      LOCALE_SABBREVDAYNAME2   {   星期二的缩写   }  
      LOCALE_SABBREVDAYNAME3   {   星期三的缩写   }  
      LOCALE_SABBREVDAYNAME4   {   星期四的缩写   }  
      LOCALE_SABBREVDAYNAME5   {   星期五的缩写   }  
      LOCALE_SABBREVDAYNAME6   {   星期六的缩写   }  
      LOCALE_SABBREVDAYNAME7   {   星期天的缩写   }  
      LOCALE_SMONTHNAME1   {   long   name   for   January   }  
      LOCALE_SMONTHNAME2   {   long   name   for   February   }  
      LOCALE_SMONTHNAME3   {   long   name   for   March   }  
      LOCALE_SMONTHNAME4   {   long   name   for   April   }  
      LOCALE_SMONTHNAME5   {   long   name   for   May   }  
      LOCALE_SMONTHNAME6   {   long   name   for   June   }  
      LOCALE_SMONTHNAME7   {   long   name   for   July   }  
      LOCALE_SMONTHNAME8   {   long   name   for   August   }  
      LOCALE_SMONTHNAME9   {   long   name   for   September   }  
      LOCALE_SMONTHNAME10   {   long   name   for   October   }  
      LOCALE_SMONTHNAME11   {   long   name   for   November   }  
      LOCALE_SMONTHNAME12   {   long   name   for   December   }  
      LOCALE_SMONTHNAME13   {   long   name   for   13th   month   (if   exists)   }  
      LOCALE_SABBREVMONTHNAME1   {   一月的缩写   }  
      LOCALE_SABBREVMONTHNAME2   {   二月的缩写   }  
      LOCALE_SABBREVMONTHNAME3   {   三月的缩写   }  
      LOCALE_SABBREVMONTHNAME4   {   四月的缩写   }  
      LOCALE_SABBREVMONTHNAME5   {   五月的缩写   }  
      LOCALE_SABBREVMONTHNAME6   {   六月的缩写   }  
      LOCALE_SABBREVMONTHNAME7   {   七月的缩写   }  
      LOCALE_SABBREVMONTHNAME8   {   八月的缩写   }  
      LOCALE_SABBREVMONTHNAME9   {   九月的缩写   }  
      LOCALE_SABBREVMONTHNAME10   {   十月的缩写   }  
      LOCALE_SABBREVMONTHNAME11   {   十一月的缩写   }  
      LOCALE_SABBREVMONTHNAME12   {   十二月的缩写   }  
      LOCALE_SABBREVMONTHNAME13   {   十三月的缩写(如果有的话)   }  
      LOCALE_SPOSITIVESIGN   {   正号   }  
      LOCALE_SNEGATIVESIGN   {   负号   }  
      LOCALE_IPOSSIGNPOSN   {   正号位置   }  
      LOCALE_INEGSIGNPOSN   {   负号位置   }  
      LOCALE_IPOSSYMPRECEDES   {   mon   sym   precedes   pos   amt   }  
      LOCALE_IPOSSEPBYSPACE   {   mon   sym   sep   by   space   from   pos   amt   }  
      LOCALE_INEGSYMPRECEDES   {   mon   sym   precedes   neg   amt   }  
      LOCALE_INEGSEPBYSPACE   {   mon   sym   sep   by   space   from   neg   amt   }  
      LOCALE_FONTSIGNATURE   {   font   signature   }  
      LOCALE_SISO639LANGNAME   {   ISO   缩写语言名称   }  
      LOCALE_SISO3166CTRYNAME   {   ISO   缩写国家名称   }   

  1、获取windows版本信息    
  可以通过Windows   API函数GetVersionEx来获得。    
  具体程序如下:  
  Procedure   Tform1.Button1Click(sender:TObject);    
                  Var()  
  OSVI:OSVERSIONINFO;    
                  begin()  
  OSVI.dwOSversioninfoSize:=Sizeof(OSVERSIONINFO);    
  GetVersionEx(OSVI);    
  label1.Caption:=IntToStr(OSVI.dwMinorVersion)+','    
  +IntToStr(OSVI.dwMinorVersion)+','    
  +IntToStr(OSVI.dwBuildNumber)+','    
  +IntToStr(OSVI.dwPlatformId)+','    
  +OSVI.szCSDVersion;    
  end;    
   
  end.    
   
  2、获取CPU信息    
  可以通过Windows   API函数GetSystemInfo来获得有关信息。    
  具体程序如下:  
  procedure   TForm1.Button1Click(Sender:   TObject);    
                  Var()  
  SysInfo:SYSTEM_INFO;    
                  begin()  
  GetSystemInfo(Sysinfo);    
  Edit1.Text:='系统中有'+IntToStr(Sysinfo.dwNumberOfProcessors)+'个CPU'    
  +',类型为'+IntToStr(Sysinfo.dwProcessorType);      
  end;    
   
  end.    
   
  3、获取内存信息    
  可以通过Windows   API函数GlobalMemoryStatus来获得内存信息。    
  具体程序如下:  
  procedure   TForm1.Button1Click(Sender:   TObject);    
                  Var()  
  MemInfo:MEMORYSTATUS;    
                  begin()  
  MemInfo.dwLength:=sizeof(MEMORYSTATUS);    
  GlobalMemoryStatus(MemInfo);    
  memo1.Lines.Add(IntToStr(MemInfo.dwMemoryLoad)+'%的内存正在使用')   ;    
  memo1.Lines.Add('物理内存共有'+IntToStr(MemInfo.dwTotalPhys)+'字节');    
  memo1.Lines.Add('可使用的物理内存有'+IntToStr(MemInfo.dwAvailPhys)+'字节');    
  memo1.Lines.Add('交换文件总大小为'+IntToStr(MemInfo.dwTotalPageFile)+'字节')   ;    
  memo1.Lines.Add('尚可交换文件大小为'+IntToStr(MemInfo.dwAvailPageFile)+'字节');    
  memo1.Lines.Add('总虚拟内存有'+IntToStr(MemInfo.dwTotalVirtual)+'字节');    
  memo1.Lines.Add('未用虚拟内存有'+IntToStr(MemInfo.dwAvailVirtual)+'字节');    
  end;    
   
  end.    
   
  或用以下代码:  
  memo1.Text:=IntToStr(MemInfo.dwMemoryLoad)+'%的内存正在使用'+#13#10    
  +'可使用的物理内存有'+IntToStr(MemInfo.dwAvailPhys)+'字节'+#13#10    
  +'交换文件总大小为'+IntToStr(MemInfo.dwTotalPageFile)+'字节'+#13#10    
  +'尚可交换文件大小为'+IntToStr(MemInfo.dwAvailPageFile)+'字节'+#13#10    
  +'总虚拟内存有'+IntToStr(MemInfo.dwTotalVirtual)+'字节'+#13#10    
  +'未用虚拟内存有'+IntToStr(MemInfo.dwAvailVirtual)+'字节';    
  来替代memo1.line.add(…)部分。    
   
  4、获取Windows和系统路径    
                  可以通过Windows(API函数来获得)  
  具体程序如下:  
  procedure   TForm1.Button1Click(Sender:   TObject);    
                  Var()  
  SysDir:array[0..128]   of   char;    
                  begin()  
  GetWindowsDirectory(SysDir,128);    
  Edit1.Text:='Windows   路径:'+SysDir;    
  GetSystemDirectory(SysDir,128);    
  Edit1.Text:=Edit1.Text+';   系统路径:'+SysDir;    
  end;    
   
  5、获取用户注册信息    
  我们都知道,一般在软件安装过程中,它都会提示用户,要求输入系列号或产品号和用户的一些注册信息(用户  
   
  的公司名称、用户名等)以及安装的目录和路径等。    
  通过以下代码可查看用户注册信息:  
  procedure   TForm1.Button1Click(Sender:   TObject);    
                  Var()  
  Reg:TRegistry;    
                  begin()  
  Reg:=TRegistry.Create;    
  Reg.RootKey:=HKEY_LOCAL_MACHINE;    
  Reg.OpenKey('Software/Microsoft/Windows   NT/CurrentVersion',False);    
  Edit1.Text:='当前路径:'+Reg.CurrentPath;    
  Edit2.Text:='产品系列号:'+Reg.ReadString('ProductId');    
  Edit3.Text:='产品名:'+Reg.ReadString('ProductName');    
  Edit4.Text:='注册公司名称:'+Reg.ReadString('RegisteredOrganization');    
  Edit5.Text:='用户名:'+Reg.ReadString('RegisteredOwner');    
  Edit6.Text:='软件类型:'+Reg.ReadString('SoftwareType');    
  Reg.CloseKey;    
  Reg.Free;    
  end;    
   
   
  注意:在程序编译之前,必须在USES语句下添加registry单元。    
   
  6、关闭Widows    
  可以通过Windows   API函数ExitWindowsEx来关闭Widows。    
  procedure   TForm1.Button1Click(Sender:   TObject);    
                  begin()  
                  If   RadioButton1.Checked   =   True   Then  
  ExitWindowsEx(EWX_LOGOFF,0)   //以其他用户身份登录    
                  ElseIf   RadioButton2.Checked   =   True   Then  
  ExitWindowsEx(EWX_SHUTDOWN,1)   //安全关机    
                  ElseIf   RadioButton3.Checked   =   True   Then  
  ExitWindowsEx(EWX_REBOOT,2)   //重新启动计算机    
                  ElseIf   RadioButton4.Checked   =   True   Then  
  ExitWindowsEx(EWX_FORCE,4)   //强行关机    
                  ElseIf   RadioButton5.Checked   =   True   Then  
  ExitWindowsEx(EWX_POWEROFF,8);   //关闭系统并关闭电源    
   
  end;

抱歉!评论已关闭.