几个获取Windows系统信息的Delphi程序

本文所有的窗体界面略去,读者可根据程序自行添加各窗口组件。

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;  
 
end.

其中,笔者通过更改数列的值:发现其中的128可更改为人以不小于16的的数值,若小于或等于16均出现异常(笔者的操作系统为Windows2000)。读者朋友不妨试试。

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;  
 
end.

注意:在程序编译之前,必须在USES语句下添加registry单元。

6、关闭Widows

可以通过Windows API函数ExitWindowsEx来关闭Widows。

procedure TForm1.Button1Click(Sender: TObject);  
begin  
if RadioButton1.Checked=true then  
ExitWindowsEx(EWX_LOGOFF,0) //以其他用户身份登录  
else if RadioButton2.Checked=true then  
ExitWindowsEx(EWX_SHUTDOWN,1) //安全关机  
else if RadioButton3.Checked=true then  
ExitWindowsEx(EWX_REBOOT,2) //重新启动计算机  
else if RadioButton4.Checked=true then  
ExitWindowsEx(EWX_FORCE,4) //强行关机  
else if RadioButton5.Checked=true then  
ExitWindowsEx(EWX_POWEROFF,8); //关闭系统并关闭电源  
 
end;  
 
end.

本文转载自:http://tech.ccidnet.com/art/1079/20060407/500873_1.html

http://blog.csdn.net/akof1314/article/details/6191051

时间: 2024-10-20 04:11:18

几个获取Windows系统信息的Delphi程序的相关文章

让delphi程序不受WINDOWS日期格式的影响(使用SetLocaleInfo函数和Application.UpdateFormatSettings)

如果WINDOWS系统的短日期格式为“yyyy/m/d”,执行下面的代码会报错:2013-01-29 00:00:00不是合法的日期procedure TFrmQuerySale.FormShow(Sender: TObject);varsDate: string;begininherited;// 默认查当天的销售数据sDate := FormatDateTime('yyyy-mm-dd', Now);DateTimePicker1.DateTime := StrToDateTime(sDat

远程控制篇:在DELPHI程序中拨号上网

用MODEM拨号上网,仍是大多数个人网民选择上网的方式.如果能在我们的应用程序中启动拨号连接(如IE浏览器程序中的自动拨号功能),无疑将会方便我们的软件用户(不用再切换应用程序,运行拨号网络),提高我们的软件的友好性从而提高软件的竞争力. 在WIN9X下,如果安装了拨号网络,则在WINDOWS系统的系统目录System下将有两个拨号网络管理程序库RasApi32.DLL和RasApi16.DLL,我们可利用其中的函数来创建.修改拨号连接,并利用指定的拨号连接进行拨号上网. 一.新建拨号连接 当W

SharePoint 创建列表并使用Windows Presentation Foundation应用程序管理列表

SharePoint创建列表并使用程序管理列表 列表是SharePoint开发人员输入数据的方式之一.使用Web界面创建一个列表并添加一些数据,步骤如下: 1. 打开站点. 2. 点击所有网站内容. 3. 点击创建. 4. 选择自定义列表,命名Customers,并输入描述.选中在快速启动导航显示,点击创建. 这将创建一个自定义列表.接下来我们添加三个栏:Region/Size/Sales. 1. 点击功能区创建栏按钮,命名Region,选择"选项"类型.增加四个选项:East/Wes

[C语言](二)01 获取Windows图形构件大小信息

SYSMETS.c #include <windows.h> #include "SYSMETS.H"//自定义的单元,所以用"",不是用<> //消息循环处理函数,Windows回调函数 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //Windows程序的入口函数 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevIn

【转】delphi程序只允许运行一个实例的三种方法:

一.        创建互斥对象 在工程project1.dpr中创建互斥对象 Program project1 Uses Windows,Form, FrmMain in 'FrmMain.pas' {MainForm}; {$R *.res} var hAppMutex: THandle; //声明互斥变量 begin hAppMutex := CreateMutex(nil, false,’projectname’); //创建互斥对象projectname工程名称 if ( (hAppM

如何实现在Windows上运行Linux程序,附示例代码

如何实现在Windows上运行Linux程序,附示例代码 微软在去年发布了Bash On Windows, 这项技术允许在Windows上运行Linux程序, 我相信已经有很多文章解释过Bash On Windows的原理,而今天的这篇文章将会讲解如何自己实现一个简单的原生Linux程序运行器, 这个运行器在用户层实现, 原理和Bash On Windows不完全一样,比较接近Linux上的Wine. 示例程序完整的代码在github上, 地址是 https://github.com/30324

Windows下,通过程序设置全屏抗锯齿(多重采样)的方法

这里说的全屏抗锯齿,不是基于着色器的FXAA之类的方式,而是兼容性更好的,基于固定管线的多重采样方式. 先来说一下开发环境,我用的是VC2013+GLEW1.11. 要通过程序设置多重采样,首先需要进入控制面板,确定抗锯齿的设置是“根据应用程序而定” ,当然,这个设置的具体名称,不同的显卡厂商有不同的叫法. 接下来,就是重点了. Windows下要通过程序设置多重采样,必须使用wglChoosePixelFormatARB这个函数.目前网上基本都是自己去获取这个函数的接口地址,其实根本不用这么麻

这段百度问答,对我相关有对啊!!!----如何获取Windows系统登陆用户名

如何获取Windows系统登陆用户名 http://zhidao.baidu.com/link?url=Hva9PkVwYZv8KSEWftSqTWe8fqM1dhoq59BurnfADmcOvFjFgJUONb2kQ4KrJUF5KjOTXjCf5SQKYNLhcU_dBMzGGBxFxJCRfxCmamIjUji ======================= 一般用 GetUserName(或 GetUserNameEx )函数可得到当前登陆登陆用户名(但不总会得到,下面会分析),此系统函

delphi 程序实现主屏与扩展屏的切换

delphi 程序实现双屏显示主屏与扩展屏的切换: InitDevice: 初始化显示屏列表,成功返回显示屏数量: ActiveScreen:设置主显示屏,AIndex为显示屏索引,Align为扩展屏相对于主屏的位置(1:左 2:右 3:上 4:下): 使用到的winAPI:EnumDisplayDevicesA.EnumDisplaySettingsA.ChangeDisplaySettingsExA. 常量列表: CCHDEVICENAME = 32: DISPLAY_DEVICE_ATTA