Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: The_Bug en 11 Noviembre 2009, 01:00 am



Título: requiero de buestra asistenciosa asistencia
Publicado por: The_Bug en 11 Noviembre 2009, 01:00 am
emmm
toy temiando un programa y quiero q siertas partes del codigo se ejecuten al pulsar una convinacion de telas

ctrl+a
ctrl+d
ctrl+q
ctrl+etc...

el problema es que no tengo el foco sobre el formulario donde van a ejecutarse los metodos asociados al evento

si no que el foco esta en otra ventana (la ventanita del mu q cubre toda la pantalla)
y como no se me apetese abrir el Mu-Minimiser siempre que tiro un server
me gustaria saber como hacer q para cuando toco una convinacion de teclas mientras tengo el focus en esa otra pantalla mi prollecto pueda leer las pulsaciones y responder selectivamente dependiendo de la tecla q haya pulsado

solo eso

saludos :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :(


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: agus0 en 11 Noviembre 2009, 01:28 am
Hola es facil con GetAsyncKeyState

ejemplo de Ctrl+a

En un Modulo (*.bas)

Código:
Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer
Global v(44)
Global tx1
Public Const VK_A = &H41
Public Const VK_Control = vbKeyControl

en un Form

Código:
Private Sub Timer1_Timer()
If GetAsyncKeyState(VK_Control) * GetAsyncKeyState(VK_A) <> 0 Then
MsgBox "Apretaste CTRL+A"
End If
End Sub


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: BlackZeroX en 11 Noviembre 2009, 02:08 am
lee un poco el foro hay informacion sobre esto, solo es un hook al teclado y con hotkeys (creoq eu asi se le llama)

Dulces lunas!¡.


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: h0oke en 11 Noviembre 2009, 02:50 am
Seba se cansó de citar : "RegisterHotKeys".

lee un poco el foro hay informacion sobre esto, solo es un hook al teclado y con hotkeys (creoq eu asi se le llama)

Coincido contigo.


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: The_Bug en 11 Noviembre 2009, 03:27 am
Hola es facil con GetAsyncKeyState

ejemplo de Ctrl+a

En un Modulo (*.bas)

Código:
Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer
Global v(44)
Global tx1
Public Const VK_A = &H41
Public Const VK_Control = vbKeyControl

en un Form

Código:
Private Sub Timer1_Timer()
If GetAsyncKeyState(VK_Control) * GetAsyncKeyState(VK_A) <> 0 Then
MsgBox "Apretaste CTRL+A"
End If
End Sub

entonces... lo que dise el segundo codigo es q dentro del loop se use la funcion  "GetAsyncKeyState" para leer las teclas precionadas

no me anda ese codigo...

y el primero ni me lo pudo interpretar el editor


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: cassiani en 11 Noviembre 2009, 03:35 am
The_Bug el primer trozo de code lo agregas a un módulo o le modificas y le dejas en el formulario y para el segundo debes agregar un timer y colocarle un intervalo.. si no, no te andara ..


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: The_Bug en 11 Noviembre 2009, 03:41 am
se...
entiendo lo del timer
pero cuando ablamos de modulos...
¿que son los modulos?
y si quiero dejarlo en el formulario al codigo que define las cosas...
¿que procedimiento sigo?


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: BlackZeroX en 11 Noviembre 2009, 06:00 am
ok casi se saca de quisio pero nada mas recuerdo que yo igual estaba asi asi que te digo que ( en mente... "!$#&%&(%&$%#$&"$#$"#$#"$% y tambien "%&$%/%&(/&"#$"!%Y!%&$%&  y de igual forma Censurado )

No te creas es solo broma lo anterios


ve as menu proyecto y dale a modulo, en este ingresa alo que te han dicho... no se explicarte lo que es un modulo pero comprendo su funcionalidad

Saludos y dulces Lunas!¡.


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: pungados en 11 Noviembre 2009, 10:24 am
Desde mi punto de vista, el módulo es un "formulario" sin la interfaz, que permite comunicar varios formularios. Al principio de la programación seguro lo uses para intercambiar variables entre formularios.
Yo lo usaba para eso, hasta que descubrí que desde el form1 (por ejemplo) se puede manipular el form2.
Ejemplo:
(formulario1)
form2.listadenombre.additem (lo que sea)

Saludos


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: h0oke en 11 Noviembre 2009, 13:25 pm
En programación estructurada, un módulo es un subprograma que resuelve un problema específico, aunque vb está basado en objetos no creo que pierda el sentido.

En cuanto a lo del timer, no es necesario, ya lo mencioné un poco más arriba : "RegisterHotKey"

http://msdn.microsoft.com/en-us/library/ms646309(VS.85).aspx

Un saludo!


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: The_Bug en 11 Noviembre 2009, 16:51 pm
aver dejenme ver si entendi..
 
lo q tamos haciendo es incluir una DLL, una API del SO a nuestro programa
y utilisamos una funcion de esa DLL para poder leer el teclado
¿me equivoco?


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: BlackZeroX en 11 Noviembre 2009, 19:04 pm
Desde mi punto de vista, el módulo es un "formulario" sin la interfaz, que permite comunicar varios formularios. Al principio de la programación seguro lo uses para intercambiar variables entre formularios.
Yo lo usaba para eso, hasta que descubrí que desde el form1 (por ejemplo) se puede manipular el form2.
Ejemplo:
(formulario1)
form2.listadenombre.additem (lo que sea)

Saludos


No coincido con tigo se muy bien como se crean los formularios pero no creo que de ellos probengan de un modulo, ya que estos e visto que se pueden crear cientos de instancias de uno mismo, es decir actuan como modulos clase por ello no te apoyo en lo que has dicho.


@The_Bug

en ocasiones las APIS no son solo del SO, inclusive puedes crear las tuyas y generar tus dll o sencillamente jalar las APIS de otros programas, en la definicion de API no se define que sean obligatoriamente de un X punto. Aun que si lo que has dicho es correcto.

En programación estructurada, un módulo es un subprograma que resuelve un problema específico, aunque vb está basado en objetos no creo que pierda el sentido.

En cuanto a lo del timer, no es necesario, ya lo mencioné un poco más arriba : "RegisterHotKey"

http://msdn.microsoft.com/en-us/library/ms646309(VS.85).aspx

Un saludo!

Estas equivocado me puse a leer un pequeño libro de 8 mil y pico paginas ( obviamente no todo ) y se espesifica que:

Un Modulo: Es solo un lugar de almacenamiento donde se agrupa un conjunto de subprogramas ( funciones procesos bla bla bla por ejemplo el Main() ) estructuras y declaraciones de datos.
Dulces lunas!¡.


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: el_c0c0 en 11 Noviembre 2009, 19:42 pm
desde mi punto de vista, en un modulo, agregar el api RegisterHotkey y el codigo para subclasificar. en el ejemplo del api-guide usan un do-loop lo cual te come el micro. pero de todas formas, busca el ejemplo de RegisterHotkey en el apiguide y tambien el ejemplo de subclasificar y los juntas a ambos.

saludos


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: The_Bug en 11 Noviembre 2009, 21:45 pm
asf
WYIRyDB4v9M


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: The_Bug en 11 Noviembre 2009, 22:58 pm
Código:
Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer
Global v(44)
Global tx1
Public Const VK_A = &H41
Public Const VK_Control = vbKeyControl


Public Function key()
If GetAsyncKeyState(&H41) * GetAsyncKeyState(vbKeyControl) <> 0 Then
MsgBox "apretaste A"
End If
End Function


hice esta "cosa" la funcion quey se repite en un lop dentro de un timer... aparentemente la chota esta anda pero... al precionar las teclas  "ctrl + a" me tira una ventana de error "Error 6 en tiempo de ejecucion: Desbordamiento"

agradecería q alguien me digera q significa y q causa el error

saludos


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: agus0 en 12 Noviembre 2009, 00:04 am
Código:
Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer
Global v(44)
Global tx1
Public Const VK_A = &H41
Public Const VK_Control = vbKeyControl


Public Function key()
If GetAsyncKeyState(&H41) * GetAsyncKeyState(vbKeyControl) <> 0 Then
MsgBox "apretaste A"
End If
End Function


hice esta "cosa" la funcion quey se repite en un lop dentro de un timer... aparentemente la chota esta anda pero... al precionar las teclas  "ctrl + a" me tira una ventana de error "Error 6 en tiempo de ejecucion: Desbordamiento"

agradecería q alguien me digera q significa y q causa el error

saludos

 :¬¬ :¬¬ :¬¬

Como "la chota esta..." es verdad que no he prestado mucha atencion para hacerlo nu mucha dedicacion pero me llevo mi tiempo y te aseguro 100% que anda... por que obviamente antes de postiarlo lo probe... y ni siquiera unas gracias de tu parte recivi...


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: The_Bug en 12 Noviembre 2009, 00:44 am
upss disculpa,no sabia que vos habias programado la api...

pero mas alla de eso... tu api falla por n "desbordamiento"

q nose que es todavia


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: The_Bug en 12 Noviembre 2009, 00:50 am
Citar
Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer
Global v(44)
Global tx1
Public Const VK_A = &H41
Public Const VK_Control = vbKeyControl


Public Function key()
If GetAsyncKeyState(&H41) Then
If GetAsyncKeyState(vbKeyControl) Then
MsgBox "apretaste ctrl+A"
End If
End If
End Function

listo ya  funciona gracias a todos por contestar
en especial a nuestro amigo agus0 de microsoft que programo la api q hizo ewsto posible


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: agus0 en 12 Noviembre 2009, 00:58 am
me estas jodiendo yo no programe la api te mostre cual y como usarla si no te pondria el codigo fuente de la api :laugh: :laugh: :laugh:

Me alegro de que te alla servido


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: agus0 en 12 Noviembre 2009, 01:05 am
Citar
Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer
Global v(44)
Global tx1
Public Const VK_A = &H41
Public Const VK_Control = vbKeyControl


Public Function key()
If GetAsyncKeyState(&H41) Then
If GetAsyncKeyState(vbKeyControl) Then
MsgBox "apretaste ctrl+A"
End If
End If
End Function

listo ya  funciona gracias a todos por contestar
en especial a nuestro amigo agus0 de microsoft que programo la api q hizo ewsto posible

P.D: Yo la parte del Condicional If.. lo haria asi

Código:
If GetAsyncKeyState(&H41) And GetAsyncKeyState(vbKeyControl) Then
MsgBox "apretaste ctrl+A"
End If
para escribir menos.

ademas borra las constantes total no las usas


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: seba123neo en 12 Noviembre 2009, 01:17 am
el unico que mas o menos contesto bien fue el_c0c0, usa las apis RegistrerHotKey y UnregitrerHotKey, que no necesitas Timers, pero si estas preguntando que es una api, que es un modulo, que es esto..que es lo otro, eso no es para preguntarlo aca, mejor te lees un manual, de visual basic , ya sean 1000 paginas, pero te va a hacer bien, y cuando vengas al foro a preguntar, ya vas a tener la base y vas a entender mas las respuestas que te damos, porque sino es preguntar, preguntar y nada de hacer.

saludos.


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: The_Bug en 13 Noviembre 2009, 03:27 am
me estas jodiendo yo no programe la api te mostre cual y como usarla si no te pondria el codigo fuente de la api :laugh: :laugh: :laugh:

Me alegro de que te alla servido

ya se pa , te toy tomando el pelo...  :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :silbar: :silbar: :laugh: :laugh: :xD :-[


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: The_Bug en 13 Noviembre 2009, 03:29 am
el unico que mas o menos contesto bien fue el_c0c0, usa las apis RegistrerHotKey y UnregitrerHotKey, que no necesitas Timers, pero si estas preguntando que es una api, que es un modulo, que es esto..que es lo otro, eso no es para preguntarlo aca, mejor te lees un manual, de visual basic , ya sean 1000 paginas, pero te va a hacer bien, y cuando vengas al foro a preguntar, ya vas a tener la base y vas a entender mas las respuestas que te damos, porque sino es preguntar, preguntar y nada de hacer.

saludos.

si... peroooooooooooo....
para q pregunto si me van a  manda  a leer un libro????
 ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-X :-X ;D ::) :D >:(


Título: Re: requiero de buestra asistenciosa asistencia
Publicado por: BlackZeroX en 15 Noviembre 2009, 12:14 pm
en otras palabras buscas un trabajo hecho?

¬¬"