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」しか表示されず、「Windows Edition」を検出できないという問題がありました。そのため、「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
コンパイルされた exe ファイルを Windows Vista Enterprise SP2 で実行すると、同じ結果が生成され、以前のバージョンの Windows では同じ結果が得られません。次のように「TOSVersion」を呼び出すと
begin
TOSVersion.Platform of
pfWindows :
begin
.
.
.
.
end
else
beging
.
.
.
end
end;
「GetProductInfo」を呼び出すと、両方を同時に呼び出すことができないことを示す「エラー」が表示されます。最後に、「OSVERSIONINFO 構造体」で「サーバー」かどうかを識別し、「Windows XP Edition タイプ」の「GetVersionEx 関数」を試してみました。プログラミングを開始する方法が完全に混乱しています。このフォーラムには経験豊富なコーダーがたくさんいます。誰でも完全なプログラムを書き留めることができます。私はそれをグーグルで検索しましたが、利用可能なすべてのプログラムは「Windows 7」まで更新されていません。また、このフォーラムで利用できるのは、「Windows 7」までであり、更新されていません。「キーボードの前に座ってコードを入力することはできません」と言わないでください。私を助けてください。