Hola a todos,
Estoy creando una rutina que me genere un archivo LOG en el disco con todos los procesos que se est谩n ejecutando en la PC mientras corre el sistema.
Funciona a medias, ya que en algunas oportunidades la funcion GetTasks() me regresa un array vacio.
Estoy probando varias cosas, pero me doy cuenta que no funciona aleatoriamente cuando llamo la funci贸n de grabacion del archivo con el timer, a veces graba todo bien y a veces no graba los procesos. El timer ejecuta la funci贸n cada 20 segundos.
La verdad es un comportamniento rar铆simo.
Les dejo el fuente de lo que estoy probando para que vean.
Dejo tambi茅n el exe ya compilado para que vean. Link ac谩.
La verdad no se que es lo que pasa que a veces GetTasks() me regresa un array vac铆o.
Nota: El programa intenta crear y grabar el archivo LOG en el directorio "C:\AUDI\ "
Alguna sugerencia ser谩 bienvenida.
Estoy creando una rutina que me genere un archivo LOG en el disco con todos los procesos que se est谩n ejecutando en la PC mientras corre el sistema.
Funciona a medias, ya que en algunas oportunidades la funcion GetTasks() me regresa un array vacio.
Estoy probando varias cosas, pero me doy cuenta que no funciona aleatoriamente cuando llamo la funci贸n de grabacion del archivo con el timer, a veces graba todo bien y a veces no graba los procesos. El timer ejecuta la funci贸n cada 20 segundos.
La verdad es un comportamniento rar铆simo.
Les dejo el fuente de lo que estoy probando para que vean.
#include "FiveWin.ch"
// DEMO TASK AUDITOR //
Function Main()
Local oWnd
Local oTimer
DEFINE WINDOW oWnd;
聽 聽FROM 3,6 TO 20,70;
聽 聽COLOR "BG+/BG+";
聽 聽TITLE "Demo TaskAuditor ";
聽 聽oTimer:=TTimer():new( 1000 * 1 * 20,{ || TaskAuditor(2) }, oWnd ) ; oTimer:Activate()
聽 聽SET MESSAGE OF oWnd TO "Demo TaskAuditor" TIME DATE KEYBOARD
ACTIVATE WINDOW oWnd;
聽 聽 ON INIT TaskAuditor(0);
聽 聽 VALID TaskAuditor(1)
Return nil
//
// OBTENER LA IP DE LA PC //
Function GetIpAddress()
Local cName :=NetName(.F.)
Local aHosts:={}
Local cIp 聽 := ""
INetInit()
aHosts:=INetGetHosts (cName)
IF aHosts == NIL
聽 聽aHosts:=INetGetAlias (cName)
ENDIF
IF Len (aHosts) > 0
聽 cIp:=aHosts[1]
ENDIF
INetCleanUp()
Return cIp
//
// GRABO EL ARCHIVO DE LOG //
Function TaskAuditor(Par)
Local Q,Arch1,aTasks,cUser:="IT"
Local ArchLog,cBuffer
aTasks :=GetTasks()
ArchLog:='C:\AUDI\ ' + cUser+DTOS(DATE()) + ".Log"
cBuffer:=CHR(13)+" "
cBuffer:=cBuffer+CHR(13)+REPLI("*",80)
cBuffer:=cBuffer+CHR(13)+" "
IF Par=0
聽 聽cBuffer:=cBuffer+CHR(13)+"INGRESO AL SISTEMA"
聽 聽cBuffer:=cBuffer+CHR(13)+"=================="
ENDIF
IF Par=1
聽 聽cBuffer:=cBuffer+CHR(13)+"SALIDA DEL SISTEMA"
聽 聽cBuffer:=cBuffer+CHR(13)+"=================="
ENDIF
IF Par=2
聽 聽cBuffer:=cBuffer+CHR(13)+"ACTUALIZACION DE PROCESOS"
聽 聽cBuffer:=cBuffer+CHR(13)+"========================="
ENDIF
cBuffer:=cBuffer+CHR(13)+" "
cBuffer:=cBuffer+CHR(13)+"USUARIO: "+cUser
cBuffer:=cBuffer+CHR(13)+"FECHA 聽: "+DTOC(DATE())
cBuffer:=cBuffer+CHR(13)+"HORA 聽 : "+TIME()
cBuffer:=cBuffer+CHR(13)+" "
cBuffer:=cBuffer+CHR(13)+" "
cBuffer:=cBuffer+CHR(13)+"DETALLE DEL EQUIPO"
cBuffer:=cBuffer+CHR(13)+"=================="
cBuffer:=cBuffer+CHR(13)+" "
cBuffer:=cBuffer+CHR(13)+"NOMBRE DE EQUIPO 聽: "+GetEnv("COMPUTERNAME")
cBuffer:=cBuffer+CHR(13)+"USUARIO DE WINDOWS: "+GetEnv("USERNAME")
cBuffer:=cBuffer+CHR(13)+"DIRECCION IP 聽 聽 聽: "+GetIpAddress()
cBuffer:=cBuffer+CHR(13)+" "
cBuffer:=cBuffer+CHR(13)+" "
cBuffer:=cBuffer+CHR(13)+"PROCESOS EN USO"
cBuffer:=cBuffer+CHR(13)+"==============="
cBuffer:=cBuffer+CHR(13)+" "
FOR Q=1 TO LEN(aTasks)
聽 聽cBuffer:=cBuffer+CHR(13)+" 聽"+STRZERO(Q,6)+" - "+aTasks[Q]
NEXT
cBuffer:=cBuffer+CHR(13)+" "
cBuffer:=cBuffer+CHR(13)+REPLI("*",80)
cBuffer:=cBuffer+CHR(13)+" "
IF !FILE(ArchLog)
聽 聽Arch1:=FCREATE(ArchLog)
聽 聽FCLOSE(Arch1)
ENDIF
Arch1:=FOPEN(ArchLog,2)
FSEEK(Arch1,0,2)
FWRITE(Arch1, cBuffer )
FCLOSE(Arch1)
Return .t.
//Dejo tambi茅n el exe ya compilado para que vean. Link ac谩.
La verdad no se que es lo que pasa que a veces GetTasks() me regresa un array vac铆o.
Nota: El programa intenta crear y grabar el archivo LOG en el directorio "C:\AUDI\ "
Alguna sugerencia ser谩 bienvenida.
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda