To retrieve accurate information for an application running on WOW64, call the GetNativeSystemInfo function.ということでGetNativeSystemInfoを使用する必要があるようです。GetNativeSystemInfoはWindows XP/Server 2003以降でしか使えませんので、それ以前の環境ではGetSystemInfoを使用します。
uses Windows; const PROCESSOR_ARCHITECTURE_AMD64 = 9; // x64 (AMD or Intel) PROCESSOR_ARCHITECTURE_IA64 = 6; // Intel Itanium Processor Family (IPF) PROCESSOR_ARCHITECTURE_INTEL = 0; // x86 PROCESSOR_ARCHITECTURE_UNKNOWN = $FFFF; // Unknown architecture type TGetSystemInfoFunc = procedure (var lpSystemInfo: TSystemInfo); stdcall; function GetProcessorArchitecture: Word; var SI: TSystemInfo; GetSystemInfoFunc: TGetSystemInfoFunc; begin FillChar(SI,SizeOf(SI),0); { Call GetNativeSystemInfo or GetSystemInfo } @GetSystemInfoFunc := GetProcAddress(GetModuleHandle(kernel32), 'GetNativeSystemInfo'); if Assigned(GetSystemInfoFunc) = True then begin GetSystemInfoFunc(SI); end else begin GetSystemInfo(SI); end; Result := SI.wProcessorArchitecture; end;
2012/07/07追記: Delphi XE2以降であればSystem.SysUtilsユニットのTOSVersion.Architectureで実行環境のアーキテクチャを知ることができます。ねた元はZarko GajicさんのIs Your 32bit Delphi Applications Running On x86 (Win 32) OR x64 (Win 64)?。
0 件のコメント:
コメントを投稿