GARANTIR DESCONTO

Fórum FUNÇÃO PARA DESCOBRIR SE É Windows 32 OU 64BITS #426921

23/10/2012

0

Pessoal, achei em um fórum na net uma função que promete indentificar se um sistema é 32 ou 64Bits, entretanto o Avast tá pegando como vírus.

Gostaria de saber se alguém já usou esta função, e que pudesse me informar se é confiável ou não?

Segue o link para a mesma >>

http://scriptbrasil.com.br/forum/index.php?showtopic=158389

Em caso de a função referida acima não servir, queria saber se existe algum outro código que possibilite saber de quantos bits é o Windows, pois até então só achei função que me informa apenas o Sistema Operacional e sua Versão.

Brigadão!!
Luiz Eduardo

Luiz Eduardo

Responder

Post mais votado

23/10/2012

var
  Form1: TForm1;

implementation

{$R *.dfm}
 function IsWindows64: Boolean;
type
  TIsWow64Process = function(AHandle:THandle; var AIsWow64: BOOL): BOOL; stdcall;
var
  vKernel32Handle: DWORD;
  vIsWow64Process: TIsWow64Process;
  vIsWow64: BOOL;
begin

  Result := False;

  vKernel32Handle := LoadLibrary('kernel32.dll');
  if (vKernel32Handle = 0) then Exit;

  try

  @vIsWow64Process := GetProcAddress(vKernel32Handle, 'IsWow64Process');
  if not Assigned(vIsWow64Process) then Exit;

  vIsWow64 := False;
  if (vIsWow64Process(GetCurrentProcess, vIsWow64)) then
    Result := vIsWow64;

  finally
    FreeLibrary(vKernel32Handle);
  end;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
 if IsWindows64 = true then
      showmessage('O sistema windows é 64 Bits')
   else
      showmessage('O sistema windows é 32 Bits')

end;


agora é só vc adaptar ao seu uso.

at+


Gilvanio Gonçalves

Gilvanio Gonçalves
Responder

Gostei + 2

Mais Posts

24/10/2012

Alisson Santos

Amigo ele vai entender como virus pois dependendo a area que vai acessar os o arquivo que vai ser acessado ou o jeito que vai ser manipulado está sendo igual a ação de um malware.
Responder

Gostei + 0

24/10/2012

Luiz Eduardo

VALEU PESSOAL!!
Responder

Gostei + 0

25/10/2012

Gilvanio Gonçalves

amigo ao contrário de que o Allison diz, no meu codigo não será visto como virus, o script pode até ser, mas não é, o codigo que te passei é para uso no delphi uma função ok.
abs.
Responder

Gostei + 0

25/10/2012

Alisson Santos

amigo ao contrário de que o Allison diz, no meu codigo não será visto como virus, o script pode até ser, mas não é, o codigo que te passei é para uso no delphi uma função ok.
abs.


Giovane me desculpa se passou essa impressão eu estava explicando para ele o porque ocorreu de falar que era virus o que ele tinha.

Gostaria de saber de consegui fazer funcionar??
Responder

Gostei + 0

26/10/2012

Luiz Eduardo

Agradeço a ajuda dos 2.

Mas Gilvanio aqui eu to querendo botar num IdMessage.Body.Add(IsWindows64);

mas tá dando esse erro >>

[Error] Unit1.pas(411): Incompatible types: 'String' and 'Boolean'

HÁ SOLUÇÃO PARA ISSO?

Valeu!!
Responder

Gostei + 0

26/10/2012

Claudia Nogueira

Você só vai conseguir fazer dessa forma se o retorno da função for do tipo String.
Exemplo:

function IsWindows64: String;
type
TIsWow64Process = function(AHandle:THandle; var AIsWow64: BOOL): BOOL; stdcall;
var
vKernel32Handle: DWORD;
vIsWow64Process: TIsWow64Process;
vIsWow64: BOOL;
begin

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 := 'O sistema windows é 64 Bits'
else
  Result := 'O sistema windows é 32 Bits';

finally
FreeLibrary(vKernel32Handle);
end;
end;


Agradeço a ajuda dos 2.

Mas Gilvanio aqui eu to querendo botar num IdMessage.Body.Add(IsWindows64);

mas tá dando esse erro >>

[Error] Unit1.pas(411): Incompatible types: 'String' and 'Boolean'

HÁ SOLUÇÃO PARA ISSO?

Valeu!!
Responder

Gostei + 0

26/10/2012

Luiz Eduardo

Você só vai conseguir fazer dessa forma se o retorno da função for do tipo String.
Exemplo:

function IsWindows64: String;
type
TIsWow64Process = function(AHandle:THandle; var AIsWow64: BOOL): BOOL; stdcall;
var
vKernel32Handle: DWORD;
vIsWow64Process: TIsWow64Process;
vIsWow64: BOOL;
begin

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 := 'O sistema windows é 64 Bits'
else
  Result := 'O sistema windows é 32 Bits';

finally
FreeLibrary(vKernel32Handle);
end;
end;


Agradeço a ajuda dos 2.

Mas Gilvanio aqui eu to querendo botar num IdMessage.Body.Add(IsWindows64);

mas tá dando esse erro >>

[Error] Unit1.pas(411): Incompatible types: 'String' and 'Boolean'

HÁ SOLUÇÃO PARA ISSO?

Valeu!!





MUITÍSSIMO OBRIGADO CLAUDIA! DEU CERTO.
Responder

Gostei + 0

26/10/2012

Gilvanio Gonçalves

Você só vai conseguir fazer dessa forma se o retorno da função for do tipo String.
Exemplo:

function IsWindows64: String;
type
TIsWow64Process = function(AHandle:THandle; var AIsWow64: BOOL): BOOL; stdcall;
var
vKernel32Handle: DWORD;
vIsWow64Process: TIsWow64Process;
vIsWow64: BOOL;
begin

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 := 'O sistema windows é 64 Bits'
else
  Result := 'O sistema windows é 32 Bits';

finally
FreeLibrary(vKernel32Handle);
end;
end;


Agradeço a ajuda dos 2.

Mas Gilvanio aqui eu to querendo botar num IdMessage.Body.Add(IsWindows64);

mas tá dando esse erro >>

[Error] Unit1.pas(411): Incompatible types: 'String' and 'Boolean'

HÁ SOLUÇÃO PARA ISSO?

Valeu!!





MUITÍSSIMO OBRIGADO CLAUDIA! DEU CERTO.





Desculpe, Não te responder antes, estive fora, mas lhe foi respondido na integra pela Claudia, e a vc Allison tudo bém, mas cuidado ao responder algo que possa ser interpretado como duplo sentido.
Responder

Gostei + 0

31/01/2017

Josimar

if IsWindows64 then IdMessage.Body.Add('O sistema windows é 64 Bits')

else IdMessage.Body.Add('O sistema windows é 32 Bits');
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar