Bienvenido y disfruta el nuevo diseño del sitio web.... agradecería me envíes tus comentarios acerca de los cambios realizados

Para descargar cualquier archivo es necesario estar registrado y hacer click en el titulo del archivo a descargar

WNetConnectionDialog

Visual Fox Pro, Funciones API Comentarios ( 0 ) »

Muestra el cuadro de dialogo para conectar a una Unidad de Red, permitiendo una
conexión fácil con un dispositivo remoto. 


DECLARE INTEGER WNetConnectionDialog IN WIN32API ;

INTEGER hWnd, ;

INTEGER nResourceType



DECLARE INTEGER GetActiveWindow IN WIN32API



IF WNetConnectionDialog(GetActiveWindow(),1) = 0

    =messagebox("La conexión establecida")

ELSE

   =messagebox("Nno fue posible la conexión")

ENDIF

Por: David Amador T

Obtener Host - IP

Visual Fox Pro, Funciones API Comentarios ( 0 ) »

 

Obtiene el Host y la IP de un equipo a través del API



#
Define
WSADATA_SIZE 398

#
Define
WS_VERSION 514

#
Define
HOSTBUFFER_SIZE 256

#
Define
HOSTENT_STRUCT_SIZE 16



Do
DeclareAPIs



Local
lcBuffer, lnResult, lcHostname,
lcMessage, lcHostentStruct

lcBuffer  =
SPACE(WSADATA_SIZE)

lnResult  = WSAStartup(WS_VERSION, @lcBuffer)

lcMessage =
""




If
lnResult = 0

   
lcBuffer =
Replicate(CHR(0),HOSTBUFFER_SIZE)

   
lnResult = gethostname(@lcBuffer,HOSTBUFFER_SIZE)



   
If
lnResult = 0

       
lcHostname =
STRTRAN(lcBuffer,CHR(0),"")

       
lcMessage =
"HOST: "
+ lcHostname +
Chr(13)

       
lnResult = gethostbyname(lcHostname)



       
If
lnResult != 0

           
lcHostentStruct = MemoryBuffer(lnResult, HOSTENT_STRUCT_SIZE)

           
lnResult = buf2dword(
Substr(lcHostentStruct,
13,4))



           
If
lnResult != 0

               
lcMessage = lcMessage +

"LOCAL IP ADDRESS: "
+ IPPortion(lnResult)

       
    Endif

       
Endif

   
Endif



   
If Empty
(lcMessage)

       
lcMessage =
"Lo se
pudo obtener Host - IP"

   
EndIf


   
Messagebox
(lcMessage,64,"Local
Host & IP"
)

   
=WSACleanup()


Else

   
Messagebox
("Error
: "
+
Transform(lnResult))


ENDIF






**************************


PROCEDURE
DeclareAPIs


**************************

   
Declare Integer
WSAStartup
In
wsock32;

    
Integer
wVerRq,
String
@lpWSAData



   
Declare Integer
WSACleanup
In
wsock32



   
Declare Integer
gethostname
In
wsock32;

    
String
@Name,
Integer
namelen



   
Declare Integer
gethostbyname
In
wsock32;

    
String HostName



   
Declare
RtlMoveMemory
In
kernel32
As
Heap2Str;

    
String
@,
Integer,
Integer

Endproc





**************************


Function
IPPortion(nPointer)


**************************

   
Local
lnAddress, lcResult

   
lnAddress = buf2dword(MemoryBuffer(nPointer, 4))

   
Return Iif(lnAddress
<> 0, JustIP(MemoryBuffer(lnAddress, 4)),

"")


Endfunc






**************************


Function
JustIP(cBuffer)


**************************

   
Local
lcResult, lnCounter

   
lcResult =
""

   
For
lnCounter=1
To
4

       
lcResult = lcResult +

Ltrim(Str(Asc(Substr(cBuffer,
lnCounter)))) +
Iif(lnCounter=4,    
"",".")

    Endfor

   
Return
lcResult


Endfunc






**************************


Function
buf2word (cBuffer)


**************************

    Return Asc(Substr(cBuffer,
1,1)) +
Asc(Substr(cBuffer,
2,1)) * 256


Endfunc






**************************


Function
buf2dword(cBuffer)


**************************

    Return Asc(Substr(cBuffer,
1,1)) + ;

       
BitLShift(Asc(Substr(cBuffer,
2,1)), 8) +;

       
BitLShift(Asc(Substr(cBuffer,
3,1)), 16) +;

       
BitLShift(Asc(Substr(cBuffer,
4,1)), 24)


Endfunc






**************************


Function
MemoryBuffer(nAddress,
nBuffersize)


**************************

    Local
lcBuffer

   
lcBuffer =
SPACE(nBuffersize)

   
= Heap2Str (@lcBuffer, nAddress, nBuffersize)

   
Return
lcBuffer


Endfunc


Por: David Amador T

Enviar email con el programa de correo predeterminado

Visual Fox Pro, Trucos, Funciones API Comentarios ( 0 ) »
Este es un ejemplo de como utilizar
la función MAPISendDocuments para enviar emails.


 


Do
FindWindow


Local
lcPath, hWindow, lcDelimiter,
lcFiles, lcMsgSubj


lcPath = Sys(5)
+
Sys(2003)

cDelimi =
";"


lcFiles =

"C:\Archivo1.exe"
+
cDelimi +
"C:\tabla.dbf"


lcMsgSubj =

"Archivos adjuntos: Archivo1.exe, tabla.dbf"

nHwd = GetActiveWindow()



=MAPISendDocuments(nHwd, cDelimi, lcFiles, lcMsgSubj,0)



Set Default To
(lcPath)



Procedure
FindWindow

    Declare Integer
GetActiveWindow
In
user32

   
Declare Integer
MAPISendDocuments
In
mapi32;

       
INTEGER
ulUIParam,
String
lpszDelimChar,;

       
STRING
lpszFullPaths,
String
lpszFileNames,;

       
INTEGER
ulReserved


EndProc


Por: David Amador T

Apagar, reiniciar el Computador con API

Visual Fox Pro, Funciones API Comentarios ( 0 ) »

Esta es la función API que te permitirá Apagar, reiniciar el computador; además
de eso cambiar el usuario actual.



#
DEFINE
LOGOFF 0

#
DEFINE SHUTDOWN
1

#
DEFINE
REBOOT 2

#
DEFINE FORCE
4

#
DEFINE
POWEROFF 8



DECLARE SHORT
ExitWindowsEx
IN
Win32API;

    SHORT
uFlags,
INTEGER
dwReserved



=ExitWindowsEx(SHUTDOWN,
0)


Por: David Amador T

Bloquear teclado y Mouse

Visual Fox Pro, Funciones API Comentarios ( 0 ) »

Esta función API te permite bloquear y desbloquear el teclado y mouse.... lo
único que debes hacer es pasarle el parámetro .F. (desbloquear) o .T. (bloquear)




Declare integer BlockInput
in
user32.dll
Long



BlockInput(.T.) &&
Bloquea



BlockInput(.F.) &&
Desbloquea



Por: David Amador T

GlobalMemoryStatus

Visual Fox Pro, Funciones API Comentarios ( 0 ) »

Con esta función API podrás
conocer el estado actual de la memoria de tu PC.


Crea un PRG
y agrega el siguiente código:


Declare
GlobalMemoryStatus In kernel32 String @ lpBuffer



lpBuffer = Repli (Chr(0), 250)

= GlobalMemoryStatus (@lpBuffer)



= _display ("This buffer length, in bytes ..........:", 1)

= _display ("Memory in use, % ......................:", 5)

= _display ("Physical memory, in bytes .............:", 9)

= _display ("Physical memory available, in bytes ...:", 13)

= _display ("Committed memory limit, in bytes ......:", 17)

= _display ("Available memory to commit, in bytes ..:", 21)

= _display ("User mode portion..., in bytes ........:", 25)

= _display ("Unreserved/uncommitted memory .........:", 29)



Procedure _display (lcCaption, lnOffs)

       ? lcCaption +
Trans(buf2dword(Substr(lpBuffer,lnOffs,4)),;

           
"999,999,999,999,999,999")

Return



Function buf2dword (lcBuffer)

Return;

            
Asc(Substr(lcBuffer, 1,1)) + ;

             
Asc(Substr(lcBuffer, 2,1)) * 256 +;

             
Asc(Substr(lcBuffer, 3,1)) * 65536 +;

             
Asc(Substr(lcBuffer, 4,1)) * 16777216

Endfunc


 



Por: David Amador T

Convertir Hexadecimal a entero con API

Visual Fox Pro, Funciones API Comentarios ( 0 ) »

Otra forma de convertir de Hexadecimal a entero ..... esta vez a través del API.


#Define STIF_DEFAULT 0
#Define
STIF_SUPPORT_HEX 1>
 


Declare SHORT
StrToIntEx In
Shlwapi;

    STRING
pszString,;

    INTEGER
dwFlags,;

    INTEGER
@ pllRet
 
Local lcHex, lnRet
 
lcHex =
"0x800"

lnRet = 0


= StrToIntEx (lcHex, STIF_SUPPORT_HEX, @lnRet)

? lnRet

 


Por: David Amador T

Detectar cuando se presionan los botones del Mouse

Visual Fox Pro, Funciones API Comentarios ( 0 ) »

Con este ejemplo podrás determinar cuando se presionando los botones del Mouse y cual botón fue presionado.



Declare Integer
GetAsyncKeyStateIn user32 Integer
vKey
Declare Integer
GetKeyState In user32 Integer
vKey
Declare Integer
SetKeyboardStateIn user32 String
@lpKeyState

#
Define
vk_lbutton 1

#
Define vk_rbutton 2



Local
cbuffer, nindex, lstop
lstop = .F.
cbuffer =
Replicate(Chr(0),
256)

= SetKeyboardState(@cbuffer)



DoEvents

Do While
Not lstop
    If
GetKeyState(vk_lbutton) <> 0

        ?
"Botón izquierda
presionado"
       
Exit

    Endif
   
    If
GetKeyState(vk_rbutton) <> 0

    ?
"Botón derecho
presionado"
   
Exit
    Endif

Enddo

Por: David Amador T

Variables de entorno de Windows

Visual Fox Pro, Funciones API Comentarios ( 0 ) »

Otra forma de convertir de entero a Hexadecimal esta vez utilizando el API.


Puedes obtener las variables de entorno de Windows utilizando a función GETENV pero también puedes hacerlo con el API.

En este caso queremos conocer el valor que tiene la variable de Windows "PATH" ... pero también podemos con "TEMP", "WINDIR", "COMPUTERNAME", "SYSTEMROOT" ... entre otros.



Declare Integer

GetEnvironmentVariable

In
kernel32 ;
  
String
@lpName,
String
@lpBuffer,;

  
Integer
nSize

cRut = Space(8192)

=GetEnvironmentVariable(
"path",
@cRut,
Len(Space(8192)))
=
Messagebox(cRut)

 


Por: David Amador T

Convertir entero a Hexadecimal con API

Visual Fox Pro, Funciones API Comentarios ( 0 ) »

? int2hex(132)



Function int2hex (num)



  Declare
Integer
wnsprintf
In
Shlwapi;

    
STRING
@lpOut,
Integer
cchLimitIn,;

    
STRING
pszFmt,
Integer

   

  Local lnresult, lcresult


  lcresult =
Space(20)

  lnresult = wnsprintf(@lcresult, 20,
"%x",
num)

  Return
Left
(lcresult, lnresult)



Endfunc





Por: David Amador T

Número de caracteres con API

Visual Fox Pro, Funciones API Comentarios ( 0 ) »

Función API parecida a la función LEN( ) de VFP.


Declare Integer lstrlen IN kernel32 String lpString


? lstrlen("La Web
de Davphantom"
)



Por: David Amador T

Convertir milisegundos al formato horas - minutos - segundos

Visual Fox Pro, Funciones API Comentarios ( 0 ) »

Excelente y fácil forma de convertir
milisegundos o segundos al formato horas - minutos - segundos



Declare Integer
StrFromTimeInterval
In Shlwapi;
   
STRING
@ pszOut,;

    INTEGER cchMax,;
   
INTEGER
dwTimeMS,;

    INTEGER digits
 

* Función API para calcular el número de milisegundos

* que lleva encendido el PC


Declare Integer GetTickCount In kernel32

nIni = GetTickCount()


cSalida = Space(50)


=StrFromTimeInterval (@cSalida,
Len(cSalida), nIni, 10)

?cSalida


 

 


Por: David Amador T

Determinar si los themas de WinXP esta activos

Visual Fox Pro, Funciones API Comentarios ( 0 ) »
Me agrada esta funcón de API... Con ella podemos saber si WinXP tiene habilitadas los Themas.

Declare Integer IsThemeActive in "UxTheme.dll" () As Long
nRet = IsThemeActive()


?
"Themes: " + Iif(nRet = 0, "No activos","Activos")
 


Por: David Amador T

Determinar si un PC o servidor esta ON LINE

Visual Fox Pro, Funciones API Comentarios ( 0 ) »
Con esta función API podemos determinar si un PC o servidor esta ON LINE.

Declare Integer GetRTTAndHopCountIn Iphlpapi;
    INTEGER DestIpAddress, Long @HopCount,;
   
INTEGER MaxHops, Long
@RTT

Declare Integer inet_addr In ws2_32 String cp

Local nDst, nHop, nRTT
Store 0 To nHop, nRTT

nDst = inet_addr("192.168.0.5")


If GetRTTAndHopCount(nDst, @nHop, 50, @nRTT) <> 0
   ?
"# de intentos de contactar el destino:", nHop
   ?
"Tiempo de respuesta, en millisegundos:", nRTT
Else
   
? "Error
Destino no se encuentra"
EndIf
 


Por: David Amador T

Obtener la IP de otro PC dentro de la Red

Visual Fox Pro, Trucos, Funciones API Comentarios ( 0 ) »
Esta es una pregunta muy frecuente, aquí está
una posible solución para conocer la IP de un PC dentro de nuestra red.



Utilizamos el comando PING de MS-DOS (MSDOS) y enviamos el resultado a un
archivo de texto y luego de allí extractamos la IP del PC.



RUN
ping
"NOMBRE_PC"
> c:\PingIp.TXT

cTxt =
FILETOSTR([c:\PingIp.TXT])

cTxt =
SUBSTR(cTxt,AT("[",cTxt)+1)

?
LEFT(cTxt,AT("]",cTxt)
-1)


 



Por: David Amador T