!!!programa logeador de ventanas¡¡¡

Iniciado por zerofive, 17 Julio 2006, 18:21 PM

0 Miembros y 1 Visitante están viendo este tema.

zerofive

Estoy haciendo un logeador de ventanas que registra las ventanas activas... :D
ya lo hice pero tambien tengo un inconveniente... :-(
que tengo que dejar un cronometro  :ode cuanto estuvo abierta hasta cuando se cierra... :huh:
y el cronometro lo sé hacer en un label(etiqueta) :P
pero cuando es un textbox...
probe del mismo metodo y me salio ue por cada segundo pone una hora...

<0:0:1><0:0:2><0:03><0:0:4><0:0:5><0:0:6>...etc
creanme que busque:::
soy un delincuente. Mi delito es la curiosidad<<hacker's manifiest>>

elmaro

postea la parte del code que usas para el cronometro aver que es lo que esta fallando


El MaRo!

Hans el Topo

 

zerofive

perdon..
CitarPrivate Sub Timer2_Timer()
Label6.Caption = "0"

Label3.Caption = Val(Label3.Caption) + 1 'Aumenta 1 al Label3
If Val(Label3.Caption) < 10 Then
    Label3.Caption = "0" & Label3.Caption
End If


    If Val(Label3.Caption) > 59 Then 'Si el label3(Seg) es mayor a 59
        Label3.Caption = "00" 'Volver a cero
        Label2.Caption = Val(Label2.Caption) + 1 'El Label2(Min) suma uno
            If Val(Label2.Caption) < 10 Then
                Label2.Caption = "0" & Label2.Caption
            End If
        If Val(Label2.Caption) > 59 Then 'Si el label2(min) es mayor a 59
            Label2.Caption = "00" 'Vuelve cero
            Label1.Caption = Val(Label1.Caption) + 1 'idem pero con el label1(hs)
           
            If Val(Label1.Caption) < 10 Then
                Label1.Caption = "0" & Label1.Caption
            End If
        End If
    End If

End Sub
y en el Timer1
CitarPrivate Sub Timer1_Timer()
On Error Resume Next
Ventana 'Funcion del modulo Nombre_Ventana
Text1.Text = Text1.Text & "|<<" & Label1.Caption & Label4.Caption & Label2.Caption & Label5.Caption & Label3.Caption & ">>>|" 'Agrega al textbox el cronometro
End Sub
y el modulo
Citar
Option Explicit
Declare Function GetForegroundWindow Lib "user32" () As Long
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Public LastWindow As String
Public LastHandle As Long
Function Ventana()
Dim Handle As Long
Dim TextLen As Long
Dim WindowText As String
Dim sVar
Handle = GetForegroundWindow 'Obtiene la ventana activa
LastHandle = Handle
TextLen = GetWindowTextLength(Handle) + 1 'Longitud del titulo de la ventana
WindowText = Space(TextLen)
sVar = GetWindowText(Handle, WindowText, TextLen) 'Obtiene titulo de la ventana
WindowText = Left(WindowText, Len(WindowText) - 1)
If WindowText <> LastWindow Then
If Form1.Text1 <> "" Then Form1.Text1 = Form1.Text1 & vbCrLf & vbCrLf
Form1.Text1 = Form1.Text1 & "|<<<<<<<<<<<<<<<<" & Now & ">>>>>>>>>>>>>>>>|" & "***" & "|<<<<<<<<<<<<<<<<" & WindowText & ">>>>>>>>>>>>>>>>|" & vbCrLf 'Escribe en el textbox Fecha,hora y el titulo
LastWindow = WindowText
End If
End Function
soy un delincuente. Mi delito es la curiosidad<<hacker's manifiest>>

Hans el Topo

perdona mi pregunta pero... una de las primeras lecciones de cualquier programador... es aprender a PONER NOMBRES QUE LE GUIEN Y FACILITEN LAS TAREAS, es obvio que tu eso un poco olvidao...

label3=segundos
label2=minutos
label1=horas
label4= solo aparece una sola vez en todo tu código... ¿qué es?
label5= solo aparece una sola vez en todo tu código... ¿qué es?
label6= solo aparece una sola vez en todo tu código... ¿qué es?

en vez de poner todo el rato
If Val(Label3.Caption) < 10 Then
    Label3.Caption = "0" & Label3.Caption
End If

hazlo asi...

    Label3.Caption = format(val(label3.caption),"00")   'el val hasta lo pueds quitar


tu txt se supone que añade a
todo lo anteriormente en el mismo txt +
|<<horas(nuse)minutos(nuse)segundos>>>|

otra cosa no veo...
tampoco lo mire muy bien pero creo que esta bien al menos los 2 timers...
 

zerofive

los labels que sobran son signos ":"
label3=segundos
label2=minutos
label1=horas
label6 = sentecimas
soy un delincuente. Mi delito es la curiosidad<<hacker's manifiest>>

elmaro

#6
bueno man ,.aca tengo tu respuesta,.
espro que te sirva,. a mi me funciona muy bien y me has dado una idea:P,. asi que ponte contento :D

Codigo:
en el form

Private Sub Timer1_Timer()
On Error Resume Next
Ventana 'Funcion del modulo Nombre_Ventana
End Sub

Private Sub Timer2_Timer()
Label3.Caption = Val(Label3.Caption) + 1 'Aumenta 1 al Label3
If Val(Label3.Caption) < 10 Then
    Label3.Caption = "0" & Label3.Caption
End If
    If Val(Label3.Caption) > 59 Then 'Si el label3(Seg) es mayor a 59
        Label3.Caption = "00" 'Volver a cero
        Label2.Caption = Val(Label2.Caption) + 1 'El Label2(Min) suma uno
            If Val(Label2.Caption) < 10 Then
                Label2.Caption = "0" & Label2.Caption
            End If
        If Val(Label2.Caption) > 59 Then 'Si el label2(min) es mayor a 59
            Label2.Caption = "00" 'Vuelve cero
            Label1.Caption = Val(Label1.Caption) + 1 'idem pero con el label1(hs)
           
            If Val(Label1.Caption) < 10 Then
                Label1.Caption = "0" & Label1.Caption
            End If
        End If
    End If

End Sub


En el modulo:

Function Ventana()
Dim Handle As Long
Dim TextLen As Long
Dim WindowText As String
Dim sVar
Handle = GetForegroundWindow 'Obtiene la ventana activa
LastHandle = Handle
TextLen = GetWindowTextLength(Handle) + 1 'Longitud del titulo de la ventana
WindowText = Space(TextLen)
sVar = GetWindowText(Handle, WindowText, TextLen) 'Obtiene titulo de la ventana
WindowText = Left(WindowText, Len(WindowText) - 1)

If WindowText <> LastWindow Then
'Form1.Text1.Text = Form1.Text1.Text & "|<<" & Now & ">>|" & "***" & "|<<" & WindowText & ">>|" & vbCrLf 'usa esta linea si keres que te aparezca en un text (acuerdate de darle buen tamaño) y poder leer todo,.(con los dos scroolbars)

'Form1.List1.AddItem "|<<" & Now & ">>|" & "***" & "|<<" & WindowText & ">>|" 'y usa esta si lo kieres en un listbox,. si el titulo de la ventana es muy largo no lo leeras completo a no ser que agas el listbox muy amplo

LastWindow = WindowText

End If
End Function



al timer1 le pones 500 en interval para que te vea todas las ventanas,. o un nomero mas bajo
y al timer2,. le pones 1000 de interva,. para que cuente cada 1 segundo,. aunke no es necesario el timer2 xq la fecha y ahra la toma usando "Now"

bueno man espero te guste el code,. trate de no modificartelo tanto
suerte si te funciono me avisas :)





El MaRo!

zerofive

soy un delincuente. Mi delito es la curiosidad<<hacker's manifiest>>

zerofive

El code anda perfecto solo le hiciste una pequeña modificación
Buena idea ;)
Ahora solo utilizo el listbox...
ya se soy medio "!$·$"%%·&%$...
por no haberme dado cuenta de ese detalle...
pero bueno...
una cosa en vez del "now" que muestra fecha y hora...
hacer que enpieze desde 0...
cuente por si mismo...
y cuando lo cierres que debe de ser cuando el proceso se cierre...
para el cronometro y dice cuanto duro habierto...
yo les pongo el problema...
también buscaré por mi mismo...
soy un delincuente. Mi delito es la curiosidad<<hacker's manifiest>>

elmaro

de nada :D
cualkier otra duda pregunta nomas





El MaRo!