Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Interseptar pulsado de F4

Estas en el tema de Interseptar pulsado de F4 en el foro de Visual Basic clásico en Foros del Web. Hola solo necesito una cosa mas para terminar este programa xd es solo una duda... y es la siguiente... Tengo q hacer q al apretar ...
  #1 (permalink)  
Antiguo 24/05/2008, 16:42
 
Fecha de Ingreso: enero-2008
Mensajes: 23
Antigüedad: 16 años, 3 meses
Puntos: 0
Interseptar pulsado de F4

Hola solo necesito una cosa mas para terminar este programa xd es solo una duda...

y es la siguiente...

Tengo q hacer q al apretar la tecla F4 haga tal cosa... ejemplo
Cita:
Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
If e.KeyValue = Keys.F4 Then
FuncKeysModule(e.KeyValue)
e.Handled = True
End If
End Sub

Public Sub FuncKeysModule(ByVal value As Keys)

Select Case value
Case Keys.F4

"lo que quiero"

End Select
End Sub
este codigo me funciona muy bien, mientras este el form primero, pero si esta minimizado o en este caso q necesito en modo oculto "HIDE" el programa no intersepta cuando pulso f4 -.-

De ante mano muchas gracias

Salu2!

Última edición por leandro_ortega; 24/05/2008 a las 17:43
  #2 (permalink)  
Antiguo 24/05/2008, 19:23
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Interseptar pulsado de F4

Para eso debes de usar ganchos

Ahorita no tengo un ejemplo a la mano pero voy a buscarlo en mi casa apenas lo consiga te lo paso.
o sino puedes ir aceriguando sobre SetWindowsHookEx es una API que se encarga de hacer esos ganchos.
En tucaso seria hacerle un gancho al teclado
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #3 (permalink)  
Antiguo 25/05/2008, 06:36
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Interseptar pulsado de F4

Hola,pues no te detecta el F4 porque cuando el form esta oculto,no tiene el foco para detectar la pulsacion,para eso tenes que usar la api GetAsyncKeyState,esta api se maneja con un timer que va comprobando si la tecla fue pulsada,si no te gusta usar timers,podes usar las apis RegisterHotKey ,UnregisterHotKey para crear un hook al sistema y asi interceptar el presionado de esta tecla sin timers...

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #4 (permalink)  
Antiguo 25/05/2008, 08:27
 
Fecha de Ingreso: enero-2008
Mensajes: 23
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Interseptar pulsado de F4

gracias a los 2 buscare mas info de lo q me dijeron...

PDD: la mayoria de mis programas estan echos con temporisadores xd

Salu2!
  #5 (permalink)  
Antiguo 25/05/2008, 09:09
 
Fecha de Ingreso: enero-2008
Mensajes: 23
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Interseptar pulsado de F4

encontre algo:...

Cita:

Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer


SHORT GetAsyncKeyState(
Int(vKey)
);



VK_CONTROL (0x11)
CTRL(key)
ahora... como los junto estos dos comandos...?

Salu2!
  #6 (permalink)  
Antiguo 25/05/2008, 10:38
 
Fecha de Ingreso: enero-2008
Mensajes: 23
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Interseptar pulsado de F4

es un dolor de cabeza -.-"
  #7 (permalink)  
Antiguo 25/05/2008, 11:07
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Interseptar pulsado de F4

Pues bienvenido a la programacion.

Aqui hay un hilo que te puede ayudar.
http://www.elguille.info/vb/API/deshabilitarAltTab.asp

O si queres ir directo al codigo:

En un Form
Código:
OptionExplicit
PrivateSub cmdCerrar_Click() 
Unload Me
EndSub
PrivateSub cmdHook_Click() 
HookKeyB App.hInstance 
EndSub
PrivateSub cmdUnHook_Click() 
UnHookKeyB 
EndSubPrivateSub Form_QueryUnload(Cancel AsInteger, UnloadMode AsInteger)
UnHookKeyB 
EndSub 
En un Module
Código:
OptionExplicit
Private mHook AsLong
PrivateConst WH_KEYBOARD_LL AsLong = 13& 
PrivateType tagKBDLLHOOKSTRUCT 
vkCode As Long 
scanCode As Long 
flags As Long 
time As Long 
dwExtraInfo As Long 
EndType
 
PrivateConst VK_TAB AsLong = &H9 
PrivateConst VK_CONTROL AsLong = &H11 
PrivateConst VK_ESCAPE AsLong = &H1B 
Const LLKHF_ALTDOWN AsLong = &H20& 
PrivateConst HC_ACTION AsLong = 0& 
PrivateDeclareFunction SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook AsLong, ByVal lpfn AsLong, ByVal hMod AsLong, ByVal dwThreadId AsLong) AsLong
PrivateDeclareFunction UnhookWindowsHookEx Lib "user32" (ByVal hHook AsLong) AsLong
PrivateDeclareFunction CallNextHookEx Lib "user32" (ByVal hHook AsLong, ByVal nCode AsLong, ByVal wParam AsLong, ByVal lParam AsLong) AsLong
PrivateDeclareFunction GetAsyncKeyState Lib "user32" (ByVal vKey AsLong) AsInteger
PrivateDeclareSub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination AsAny, Source AsAny, ByVal Length AsLong) 
PublicFunction LLKeyBoardProc(ByVal nCode AsLong, ByVal wParam AsLong, ByVal lParam AsLong ) AsLong
Dim pkbhs As tagKBDLLHOOKSTRUCT 
Dim ret As Long 
ret = 0 
CopyMemory pkbhs, ByVal lParam, Len(pkbhs) 
If nCode = HC_ACTION Then
If pkbhs.vkCode = VK_ESCAPE Then 
MsgBox "Esc"
End If ' 
EndIf'
ret = CallNextHookEx(mHook, nCode, wParam, lParam) 
LLKeyBoardProc = ret '
EndFunction
PublicSub HookKeyB(ByVal hMod AsLong) 
mHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LLKeyBoardProc, hMod, 0&) 
EndSub
PublicSub UnHookKeyB() 
If mHook <> 0 Then
UnhookWindowsHookEx mHook 
EndIf
EndSub
 
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #8 (permalink)  
Antiguo 25/05/2008, 12:34
 
Fecha de Ingreso: enero-2008
Mensajes: 23
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Interseptar pulsado de F4

mmm lo siento pero modificando y tratando de adaptarlo descubri q termina siendo = q el codigo q puse primero... -.-" funciona pero si esta el foco sobre el form...

Salu2!
  #9 (permalink)  
Antiguo 25/05/2008, 12:43
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 2 meses
Puntos: 88
Respuesta: Interseptar pulsado de F4

te serviria este LINK leandro?
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #10 (permalink)  
Antiguo 25/05/2008, 13:21
 
Fecha de Ingreso: enero-2008
Mensajes: 23
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Interseptar pulsado de F4

hola muchas gracias pero no... ahora voy a hablar con un amigo vicioso en esta lengua creo q me comento de un keyloguer q habia echo...

si tengo la solucion la posteo por si alguien la necesecita

Salu2!
  #11 (permalink)  
Antiguo 26/05/2008, 15:20
 
Fecha de Ingreso: enero-2008
Mensajes: 23
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Interseptar pulsado de F4

al final le termine agregando un boton xd y empese a usar el programa xd

Salu2!

PDD: tal ves mas adelante me de mas entusiasmo y lo termine como se debe xd


Muchas Gracias a los q me ayudaron...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:28.