我有一个项目使用 Delphi XE2 显示版本类型从“Windows 95”到“Windows 8”的 Windows 版本。首先,我尝试了“TOSVersion”功能。但问题是:
procedure TMainForm.BitBtn01Click(Sender: TObject);
var
VersionNameOfOperatingSystem : String;
begin
VersionNameOfOperatingSystem := TOSVersion.Name;
Edit01.Text := VersionNameOfOperatingSystem;
end
在 Windows 8 环境中仅显示“Windows”,另一个问题是 Ii 无法检测到“Windows 版”。然后我尝试了“GetProductInfo”功能。但这里还有另一个问题:
function GetProductInfo(dwOSMajorVersion, dwOSMinorVersion, dwSpMajorVersion,
dwSpMinorVersion: DWORD; pdwReturnedProductType: PDWORD): BOOL stdcall;
external kernel32;
procedure TMainForm.BitBtn01Click(Sender: TObject);
var
rpt: cardinal;
begin
if GetProductInfo(6, 0, 0, 0, @rpt) then Edit02.Text :=IntToStr(rpt);
end
和
function GetProductInfo(dwOSMajorVersion, dwOSMinorVersion, dwSpMajorVersion,
dwSpMinorVersion: DWORD; pdwReturnedProductType: PDWORD): BOOL stdcall;
external kernel32;
procedure TMainForm.BitBtn01Click(Sender: TObject);
var
rpt: cardinal;
begin
if GetProductInfo(6, 1, 0, 0, @rpt) then Edit02.Text :=IntToStr(rpt);
end
和
function GetProductInfo(dwOSMajorVersion, dwOSMinorVersion, dwSpMajorVersion,
dwSpMinorVersion: DWORD; pdwReturnedProductType: PDWORD): BOOL stdcall;
external kernel32;
procedure TMainForm.BitBtn01Click(Sender: TObject);
var
rpt: cardinal;
begin
if GetProductInfo(6, 2, 0, 0, @rpt) then Edit02.Text :=IntToStr(rpt);
end
和
function GetProductInfo(dwOSMajorVersion, dwOSMinorVersion, dwSpMajorVersion,
dwSpMinorVersion: DWORD; pdwReturnedProductType: PDWORD): BOOL stdcall;
external kernel32;
procedure TMainForm.BitBtn01Click(Sender: TObject);
var
rpt: cardinal;
begin
if GetProductInfo(6, 2, 2, 2, @rpt) then Edit02.Text :=IntToStr(rpt);
end
产生相同的结果如果我在 Windows Vista Enterprise SP2 中运行编译的 exe 文件,并且不能使用早期版本的 Windows。如果我如下调用“TOSVersion”
begin
TOSVersion.Platform of
pfWindows :
begin
.
.
.
.
end
else
beging
.
.
.
end
end;
然后调用“GetProductInfo”然后我得到“错误”,告诉两者不能同时调用。最后我尝试了“OSVERSIONINFO 结构”来识别它是否是“服务器”和“Windows XP 版本类型”的“GetVersionEx 函数”。我完全困惑如何开始我的编程。这个论坛有很多经验丰富的程序员。任何人都可以写下完整的程序。我用谷歌搜索了它,但所有可用的程序都没有更新到“Windows 7”。此论坛中的一个可用版本也是“Windows 7”且未更新。请不要告诉“我们不能坐在您的键盘前为您输入代码”。请帮我。