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 :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :(
Hola es facil con GetAsyncKeyState
ejemplo de Ctrl+a
En un Modulo (*.bas)
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
Private Sub Timer1_Timer()
If GetAsyncKeyState(VK_Control) * GetAsyncKeyState(VK_A) <> 0 Then
MsgBox "Apretaste CTRL+A"
End If
End Sub
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!¡.
Seba se cansó de citar : "RegisterHotKeys".
Cita de: ░▒▓BlackZeroҖ▓▒░ 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)
Coincido contigo.
Cita de: agus0 en 11 Noviembre 2009, 01:28 AM
Hola es facil con GetAsyncKeyState
ejemplo de Ctrl+a
En un Modulo (*.bas)
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
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
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 ..
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?
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!¡.
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
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!
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?
Cita de: 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
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.
Cita de: determx 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!
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!¡.
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
asf
[youtube=425,350]http://www.youtube.com/watch?v=WYIRyDB4v9M[/youtube]
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
Cita de: The_Bug en 11 Noviembre 2009, 22:58 PM
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...
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
CitarDeclare 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
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
Cita de: The_Bug en 12 Noviembre 2009, 00:50 AM
CitarDeclare 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
If GetAsyncKeyState(&H41) And GetAsyncKeyState(vbKeyControl) Then
MsgBox "apretaste ctrl+A"
End If
para escribir menos.
ademas borra las constantes total no las usas
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.
Cita de: 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
ya se pa , te toy tomando el pelo... :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :¬¬ :silbar: :silbar: :laugh: :laugh: :xD :-[
Cita de: 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.
si... peroooooooooooo....
para q pregunto si me van a manda a leer un libro????
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-X :-X ;D ::) :D >:(
en otras palabras buscas un trabajo hecho?
¬¬"