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: 20420
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 7135
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