Clipper On Line • Ver Tópico - Informar OS e Arquitetura 32 ou 64 bits

Informar OS e Arquitetura 32 ou 64 bits

Discussão sobre ferramentas de apoio à programação (Clipper/[x]Harbour)

Moderador: Moderadores

 

Informar OS e Arquitetura 32 ou 64 bits

Mensagempor Jairo Maia » 30 Set 2021 09:55

Olá Pessoal,

Como vocês fazem para dar essas informações diretamente pelo sistema de vocês? Da forma que uso funciona, mas gostaria de saber:
Function Main()
Local cArchiBit, cOsInfo

If MyRun( "wmic os get osarchitecture > osarchitecture.txt", .T. )
  cArqBit := Hb_MemoRead( "osarchitecture.txt" )
  cArqBit := Upper( StrTran( cArqBit, Chr( 0 ) ) )
  cArqBit := If( "32-BIT" $ Upper( cArqBit ), " - 32-Bit", " - 64-Bit" )
Else
  cArqBit := ""
EndIf

cOsInfo := "Seu Sistema Operacional:;;"
cOsInfo += OS() + cArchiBit

Hb_Alert( cOsInfo )

Return Nil

Function MyRun( cComando, lWait )         // executa programa externo
Local oShell, lRet
lWait := If( Empty( lWait ), .F., .T. )  // Se .T. aguarda o programa fechar, se .F. não aguarda...
oShell := CreateObject( "WScript.Shell" )
lRet := oShell:Run( "%comspec% /c " + cComando, 0, lWait )
oShell := Nil
Return If( lRet = 0, .T., .F. )
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Informar OS e Arquitetura 32 ou 64 bits

Mensagempor JoséQuintas » 30 Set 2021 11:43

Veja se tem mais coisa que interessa.

#include "hbgtinfo.ch"
#include "hbmemory.ch"

FUNCTION pInfoJPA()

   LOCAL cText := "", cExeName, nThreads := 0

   cExeName := Upper( hb_FNameName( hb_ProgName() ) ) + ".EXE"
   cText += cExeName + ": " + AppVersaoExe() + hb_eol()
   cText += "Base de Dados: " + Transform( Str( AppVersaoSQL() * 100, 10 ), "@R 9999.99.99.99" ) + hb_eol()
   cText += "Hardware: " + DriveSerial() + hb_eol()
   cText += Version() + hb_eol()
   cText += HB_Compiler() + hb_eol()
   cText += "Available Memory: " + LTrim( Transform( Memory(0) / 1000, "999,999" ) ) + " MB" + hb_eol()
   cText += "Window Size (Row/Col): " + LTrim( Str( MaxRow() + 1 ) ) + " x " + LTrim( Str( MaxCol() + 1 ) ) + hb_eol()
   cText += "Window Size (Pixels): " + Ltrim( Str( hb_gtInfo( HB_GTI_SCREENWIDTH ) ) ) + " x " + ;
            Ltrim( Str( hb_gtInfo( HB_GTI_SCREENHEIGHT ) ) ) + hb_Eol()
   IF HB_GtInfo( HB_GTI_FONTNAME ) != NIL
      cText += "Font Name: " + HB_GTINFO( HB_GTI_FONTNAME ) + hb_eol()
      cText += "Font Size: " + LTrim(Str( HB_GTINFO( HB_GTI_FONTSIZE ) ) ) + " x " + LTrim( Str( HB_GTINFO( HB_GTI_FONTWIDTH ) ) ) + " x " + LTrim( Str( HB_GTINFO( HB_GTI_FONTWEIGHT ) ) ) + hb_eol()
   ENDIF
   cText += "Temp Path: " + AppTempPath() + hb_eol()
   cText += "Terminal Server Client: " + iif( win_OsIsTsClient(), "Yes", "No" ) + hb_eol()
   __vmCountThreads( @nThreads, 0 )
   cText += "Threads running " + Ltrim( Str( nThreads, 10 ) ) + hb_Eol()
   cText += "GT: " + hb_gtInfo( HB_GTI_VERSION ) + hb_Eol()
   cText += "OS: " + iif( hb_osIs64bit(), "64", "32" ) + " bits" + hb_Eol()
   MsgExclamation( cText )

   RETURN NIL


sobre.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18157
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Informar OS e Arquitetura 32 ou 64 bits

Mensagempor Jairo Maia » 30 Set 2021 13:10

JoséQuintas escreveu:Veja se tem mais coisa que interessa.
Olá José, Obrigado por responder.

Eu já havia visto essa função sua aqui no fórum, mas veja que para o que eu preciso, é apenas informar qual Windows e qual Arquitetura. A rigor, como postei acima, para pegar a Arquitetura acho que estou meio na idade da pedra fazendo daquela forma. A ideia era saber se tem algo mais direto no Harbour.

Completando: hb_osIs64bit() é tudo que eu precisava, e não tinha reparado antes na sua postagem anterior. Valeu.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Informar OS e Arquitetura 32 ou 64 bits

Mensagempor sygecom » 30 Set 2021 17:41

Outra opção para pegar se o SISTEMA.EXE está em 32 ou 64

FUNCTION WIN32_64BITS
   if ISWOW64()
      ShowMsg( "Windows 64 bits" )
   else
      ShowMsg( "Windows 32 bits" )
   endif
return nil

#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>

typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);

LPFN_ISWOW64PROCESS fnIsWow64Process;

HB_FUNC( ISWOW64 )
{
    BOOL bIsWow64 = FALSE;

    fnIsWow64Process = ( LPFN_ISWOW64PROCESS )
                       GetProcAddress( GetModuleHandle( TEXT( "kernel32" ) ), "IsWow64Process" );

    if( fnIsWow64Process )
        bIsWow64 = ! fnIsWow64Process( GetCurrentProcess(), &bIsWow64 );

    hb_retl( bIsWow64 );
}

#pragma ENDDUMP
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7020
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 133 vezes

Informar OS e Arquitetura 32 ou 64 bits

Mensagempor JoséQuintas » 30 Set 2021 19:00

Pode ser uma pergunta idiota, mas....

Aí está usando uma função do Kernel do Windows "IsWow64Process".
O Kernel 32 bits tem essa função?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18157
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Informar OS e Arquitetura 32 ou 64 bits

Mensagempor sygecom » 30 Set 2021 19:17

Sim, inclusive já to usando aqui.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7020
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 133 vezes




Retornar para Ferramentas de Apoio

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 8 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro