On Tue, Mar 15, 2011 at 1:40 PM, Marcos Douglas <m...@delfire.net> wrote: > On Tue, Mar 15, 2011 at 1:33 PM, Henry Vermaak <henry.verm...@gmail.com> > wrote: >> On 15 March 2011 15:46, Marcos Douglas <m...@delfire.net> wrote: >>> >>> Thanks Jeff, this also works and seems to be standard function to know >>> if is a 32 or 64bits >> >> No, this won't work if your application is compiled for win64 (since >> it won't run under the emulator), as Jeff mentioned. > > You're right. > Look the parameter Wow64Process [out]: > "(...)If the process is a 64-bit application running under 64-bit > Windows, the value is also set to FALSE". > > http://msdn.microsoft.com/en-us/library/ms684139%28v=vs.85%29.aspx
My final test: program iswin64; {$mode objfpc}{$H+} uses Classes, dynlibs, Windows; const PROCESSOR_ARCHITECTURE_AMD64 = 9; PROCESSOR_ARCHITECTURE_IA64 = 6; type TGetNativeSystemInfo = procedure (var lpSystemInfo: TSystemInfo); stdcall; function Is64bits: Boolean; var h: TLibHandle; si: TSystemInfo; getinfo: TGetNativeSystemInfo; begin Result := False; H := GetModuleHandle('kernel32.dll'); try ZeroMemory(@SI, SizeOf(SI)); getinfo := TGetNativeSystemInfo(GetProcAddress(h, 'GetNativeSystemInfo')); if not Assigned(@getinfo) then Exit; getinfo(SI); if SI.wProcessorArchitecture in [PROCESSOR_ARCHITECTURE_AMD64, PROCESSOR_ARCHITECTURE_IA64] then Result := True; finally UnloadLibrary(H); end; end; begin writeln('WIN 64 ', Is64bits); readln; end. Marcos Douglas _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal