Chamando API do Windows
Enviado: 19 Abr 2013 08:42
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.
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