Que tal, en mi caso como crear un prg donde si de una lista de equipos alguno no me da respuesta mediante un ping se me mande un aviso por correo, espero haberme explicado saludos.
1 Respuesta
Respuesta de davsoft
1
1
davsoft, Desarrollador con 10 años de experiencia en el area de Visual...
Te paso el siguiente código API para hacer ping a una pc desde FOX, guarda todo el código en un prg, llámale como quieras, por ejemplo ping. Prg. Luego antes de usarlo debes hacer SET PROCEDURE TO PING Con esto ya tienes todas las funciones a tu disposición, ¿cómo usarlo?, así: xObjeto = createobject("Ping") &&instancias el objeto, crear objeto xResultado = xObjeto.ping("192.168.0.1") El resultado es falso o verdadero según el caso. Con respecto a tu pregunta de enviar por correo hay muchas opciones en fox para enviar los correos, para este caso algo simple y rapido podes usar el jmail.dll que se baja de davphantom.net, es muy practico y viene con ejemplos. Un saludo Define Class Ping As Custom *------------------------------------------------------------------------* Procedure Init Declare Long GetRTTAndHopCount In iphlpapi.Dll ; Long lDestIPAddr ,; long @ lHopCount ,; long lMaxHops ,; long @ lRTT Declare Long inet_addr In wsock32.Dll ; string cp Declare Integer getservbyname In ws2_32; string Name,; string proto Declare Integer WSACleanup In ws2_32 Declare String inet_ntoa In ws2_32; integer in_addr Declare Integer gethostbyname In ws2_32; string Host Declare Integer WSAStartup In ws2_32; integer wVerRq,; string lpWSAData Declare RtlMoveMemory In kernel32 As CopyMemory; string @Dest,; integer Src,; integer nLength Endproc && init *--------------------------------------------------------------------------* *---> sIPadr : adresse IP ou name Function Ping(sIPadr As String) As Boolean lHopsCount = 0 lRTT = 0 lMaxHops = 4 lResult = 0 lIPadr = inet_addr(Iif(Occurs(".", sIPadr) = 4, sIPadr, This.GetIP(sIPadr))) Return GetRTTAndHopCount(lIPadr, @lHopsCount, lMaxHops, @lRTT) = 1 Endfunc && Ping *--------------------------------------------------------------------------* Function GetIP(cServer) Local nStruct, nSize, cBuffer, nAddr, cIP If WSAStartup(0x202, Repli(Chr(0),512)) = 0 Endif #Define HOSTENT_SIZE 16 nStruct = gethostbyname(cServer) If nStruct = 0 Return '0.0.0.0' Endif cBuffer = Repli(Chr(0), HOSTENT_SIZE) cIP = Repli(Chr(0), 4) = CopyMemory(@cBuffer, nStruct, HOSTENT_SIZE) = CopyMemory(@cIP, This.buf2dword(Subs(cBuffer,13,4)),4) = CopyMemory(@cIP, This.buf2dword(cIP),4) Return inet_ntoa(This.buf2dword(cIP)) Endfunc && GetIP *--------------------------------------------------------------------------* Function buf2dword(lcBuffer) Return Asc(Substr(lcBuffer, 1,1)) + ; Bitlshift(Asc(Subs(lcBuffer, 2,1)),8) +; Bitlshift(Asc(Subs(lcBuffer, 3,1)),16) +; Bitlshift(Asc(Subs(lcBuffer, 4,1)),24) Endfunc && buf2dword Enddef && Ping
o, k gracias empezare a revisarlo y si me atoro espero me ayudes gracias de nuevo