Chamando API do Windows

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Chamando API do Windows

Mensagem por JoséQuintas »

Fiz deste jeito pra chamar APIs do Windows e funcionou.
Mas funcionar não significa que é um jeito seguro de fazer.
Alguma coisa contra fazer deste jeito?

Obs. Em GetComputerName() e GetUserName(), o último parâmetro tem que ser com @, já no color não. As duas primeiras recebem o "pointer" da variável.

Código: Selecionar todos

#include "hbdyn.ch"

PROCEDURE Main
   LOCAL nCont
   
   ? GetComputerName()
   ? GetUserName()
   FOR nCont = 0 TO 18
      ? GetSysColor( nCont )
   NEXT
   RETURN


FUNCTION CallWindowsAPI( cFunctionName, cLib, ... )
   LOCAL hHandleDll := 0, nVar

   hHandleDll := hb_LibLoad( cLib )
   nVar := hb_DynCall( { cFunctionName, hHandleDll, HB_DYN_CALLCONV_STDCALL }, ... )
   hb_LibFree( hHandleDll )
   RETURN nVar

FUNCTION GetComputerName()
   LOCAL cComputerName := Space(255), nSize := 250

   CallWindowsAPI( "GetComputerNameA", "kernel32.dll", @cComputerName, @nSize )
   cComputerName := StrTran( cComputerName, Chr(0), "" )
   RETURN AllTrim( cComputerName )

FUNCTION GetUserName()
   LOCAL cUserName := Space(255), nSize := 250

   CallWindowsAPI( "GetUserNameA", "advapi32.dll", @cUserName, @nSize )
   cUserName := StrTran( cUserName, Chr(0), "" )
   RETURN AllTrim( cUserName )

FUNCTION GetSysColor( pGetSysColor )
   LOCAL nColor := 0
   
   nColor := CallWindowsAPI( "GetSysColor", "user32.dll", pGetSysColor )
   RETURN nColor
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Chamando API do Windows

Mensagem por sygecom »

Eu não vejo problema algum, para novas API que o xHarbour não tiver suporte pode vir somente a ajudar.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Chamando API do Windows

Mensagem por asimoes »

Amigos,

Tem como enviar um comando via harbour para bloquear a estação? tipo um ctrl+alt+del e bloquear.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder