Ayuda sobre captura de ventanas

Iniciado por Ismy, 15 Enero 2006, 17:53 PM

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

Ismy

Estoy programando un keylogger,

La parte de las teclas esta ventilada ya, estoy en la parte de capturar la ventana activa, pero tengo problemas, porque al poner que me envie la ventana:

Handle = GetForegroundWindow()
Longitud = GetWindowTextLength(Handle) + 1
Texto = Space(Longitud)
Retorno = GetWindowText(Handle, Texto, Longitud)
ventana = Left(Texto, Longitud - 1)
Text1.Text = Text1.Text & ventana & vbCrLf


Me la pone muchas veces, es decir, en el log me aparece:

Ventana activa
Ventana activa
Ventana activa
Ventana activa
Ventana activa
Ventana activa


Entonces hice que si la ventana era lo mismo que la que ya habia, no hiciera nada. Quedó asi:

ventana2 = "vacio"
If ventana <> ventana2 Then
Text1.Text = Text1.Text & ventana & vbCrLf
ventana2 = ventana


Como veis, primero le digo que la variable ventana2 es "vacio" ( por ejemplo )
Despues, si la ventana activa no es "vacio",  agrega al log la ventana, y hace que la variable ventana2 sea lo mismo que la ventana actual. Asi si la ventana sigue siendo la misma, esta no se pondrá en el Text.

Pero queda igual, en el text sigue saliendo

Ventana activa
Ventana activa
Ventana activa
Ventana activa
Ventana activa
Ventana activa


Creo que me he expresado con claridad jeje
A ver que hago mal, Gracias

Salu2

sch3m4

debes cojer el hwnd de la ventana activa, entonces después:

if Ventana_Activa = GetForegroundWindow() then
'notificas las teclas
else
'capturas teclas
end if
SafetyBits

"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..

Ismy

La verdad no lo entendí bien

Aclaro que la forma que estoy usando para capturar las teclas es la de las apis de windows, no la de hoooks. ( ya se que es mejor, pero eso es otra cosa)

sch3m4

lo sé. te digo, que para saber si la ventana ha cambiado, debes de hacer lo anterior. Si el hwnd de la ventana nueva es el mismo que el de la ventana activa, por eso te digo que compares el valor que tienes guardado de GetForegroundWindow, con el valor actual de GetForegroundWindow.

ventana = getforegroundwindow()
do while (1)
if ventana = getforegroundwindow() then 'si la ventana no ha cambiado
'sigues capturando teclas con getasynckeystate
else 'la ventana ha cambiado
'guardas las teclas, etc.
ventana = getforegroundwindow() 'muy importante esta linea
end if
loop
SafetyBits

"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..