Descobrir se o executável foi compilado para 32 ou 64 bits
Olá
Gostaria de saber como faço para retornar se minha aplicação em Delphi foi compilada para
win32 ou win64 (Arquitetura do executável, não do windows)
No caso o codigo fonte é o mesmo para as duas compilações,
mas vou tomar decisões diferentes(Para cada plataforma, vou buscar as dlls da respectiva plataforma)
Estou trabalhando com Delphi XE5
Gostaria de saber como faço para retornar se minha aplicação em Delphi foi compilada para
win32 ou win64 (Arquitetura do executável, não do windows)
No caso o codigo fonte é o mesmo para as duas compilações,
mas vou tomar decisões diferentes(Para cada plataforma, vou buscar as dlls da respectiva plataforma)
Estou trabalhando com Delphi XE5
Gabriel Kissel
Curtidas 0
Respostas
Bhawan Junior
16/06/2014
Não sei se você já encontrou a solução, encontrei neste link e modifiquei para a minha necessidade {https://www.devmedia.com.br/forum/funcao-para-descobrir-se-e-windows-32-ou-64bits/426921} abaixo segue o código. Espero que seja útil.
class function TRegras_iCloud.Windows_Plataforma: String;
type
TIsWow64Process = function(AHandle:THandle; var AIsWow64: BOOL): BOOL; stdcall;
var
vKernel32Handle: DWORD;
vIsWow64Process: TIsWow64Process;
vIsWow64: BOOL;
begin
Result := 'Sistema operacional Windows 64 Bits';
vKernel32Handle := LoadLibrary('kernel32.dll');
if(vKernel32Handle = 0)then
Exit;
try
@vIsWow64Process := GetProcAddress(vKernel32Handle, 'IsWow64Process');
if not Assigned(vIsWow64Process) then
Exit;
vIsWow64Process(GetCurrentProcess, vIsWow64);
if vIsWow64 then
Result := 'Sistema operacional Windows 64 Bits'
else
Result := 'Sistema operacional Windows 32 Bits';
finally
FreeLibrary(vKernel32Handle);
end;
end;
class function TRegras_iCloud.Windows_Plataforma: String;
type
TIsWow64Process = function(AHandle:THandle; var AIsWow64: BOOL): BOOL; stdcall;
var
vKernel32Handle: DWORD;
vIsWow64Process: TIsWow64Process;
vIsWow64: BOOL;
begin
Result := 'Sistema operacional Windows 64 Bits';
vKernel32Handle := LoadLibrary('kernel32.dll');
if(vKernel32Handle = 0)then
Exit;
try
@vIsWow64Process := GetProcAddress(vKernel32Handle, 'IsWow64Process');
if not Assigned(vIsWow64Process) then
Exit;
vIsWow64Process(GetCurrentProcess, vIsWow64);
if vIsWow64 then
Result := 'Sistema operacional Windows 64 Bits'
else
Result := 'Sistema operacional Windows 32 Bits';
finally
FreeLibrary(vKernel32Handle);
end;
end;
GOSTEI 0
Bhawan Junior
16/06/2014
Colei o código errado, me perdoe, segue o correto, link e alteração para a minha necessidade!
{http://www.activedelphi.com.br/forum/viewtopic.php?t=76245&sid=a2a86b182152a6d9af469ee504ef3b42}
class function TRegras_iCloud.MOL_Plataforma: String;
begin
Result:='Software '+{$IFDEF WIN32} '32'{$ELSE} '64' {$ENDIF} + ' Bits'
end;
Me perdoe!!! Espero que ajude.
{http://www.activedelphi.com.br/forum/viewtopic.php?t=76245&sid=a2a86b182152a6d9af469ee504ef3b42}
class function TRegras_iCloud.MOL_Plataforma: String;
begin
Result:='Software '+{$IFDEF WIN32} '32'{$ELSE} '64' {$ENDIF} + ' Bits'
end;
Me perdoe!!! Espero que ajude.
GOSTEI 0