Fórum Descobrir se o executável foi compilado para 32 ou 64 bits #482804
16/06/2014
0
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
Curtir tópico
+ 0
Responder
Posts
11/07/2014
Bhawan Junior
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;
Responder
Gostei + 0
11/07/2014
Bhawan Junior
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.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)