Foros del Web » Programación para mayores de 30 ;) » Programación General »

Como enviar pulsaciones de teclas con Sendmessage (VB)

Estas en el tema de Como enviar pulsaciones de teclas con Sendmessage (VB) en el foro de Programación General en Foros del Web. Hola que tal. Actualmente utilizo sendkey para realizar ciertas operaciones con una aplicacion de Java, pero la gran limitante de que solo se puede hacer ...
  #1 (permalink)  
Antiguo 28/04/2010, 09:52
 
Fecha de Ingreso: abril-2010
Mensajes: 2
Antigüedad: 14 años
Puntos: 0
Como enviar pulsaciones de teclas con Sendmessage (VB)

Hola que tal.

Actualmente utilizo sendkey para realizar ciertas operaciones con una aplicacion de Java, pero la gran limitante de que solo se puede hacer con la ventana activa me ha traido muchos problemas; encontre que esto se puede hacer con Sendmessage, no tengo mucho conocimiento de programacion, pero por mas que he leido e intentado, no he podido realizar esto....

Actualmente tengo...

AppActivate "Titulo de la aplicacion"

SendKeys "%(VRI)", True 'Enviar combinacion ALT + R + I
SendKeys "{TAB 3}", True 'TAB 3 veces
SendKeys "{DOWN 4}", True 'DOWN 4 veces
SendKeys "Print SR-24", True 'Enviar texto Print SR-24
SendKeys "{ENTER}", True ' Enter

si por alguna razon se desactiva la pantalla pues se siguen enviando las pulsaciones a la nueva ventana activa, y eso es lo quiero evitar.


con Sendmessage llevo:

Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Const WM_SETTEXT = &HC
Const WM_KEYDOWN = &H100

Sub AbrirReporte()

Dim hwnd As Long
hwnd = FindWindow("sunawtframe", vbNullString)

SendMessage(hwnd ... y hasta aqui

he visto algunos ejemplos con WM_Keydown, WM_Settext pero no he logrado hacer nada....

Asi que necesito hacer lo mismo que hace sendkeys con sendmessage... Si alguien puediera orientarme, se lo agradeceria.

Última edición por coadlr; 28/04/2010 a las 09:57
  #2 (permalink)  
Antiguo 04/05/2010, 11:06
Avatar de totigo  
Fecha de Ingreso: marzo-2007
Ubicación: America
Mensajes: 103
Antigüedad: 17 años, 1 mes
Puntos: 3
Sonrisa Respuesta: Como enviar pulsaciones de teclas con Sendmessage (VB)

Para ello debes hacer uso de la API SendMessageBynum .

La cual recibe el num ascii, en este ejemplo estoy enviando el mensaje "hola mundo" a un cuadro de texto y seguidamente envio la tecla ENTER (13) a ese cuadro de texto.

Analiza el ejemplo, cualquier duda estaré atento!

Código vb:
Ver original
  1. Private Declare Function SendMessage Lib "user32" Alias _
  2.         "SendMessageA" (ByVal hwnd As Long, ByVal wMsg _
  3.         As Long, ByVal wParam As Long, lParam As Any) As Long
  4.  
  5. Private Declare Function SendMessageBynum Lib "user32" Alias _
  6.         "SendMessageA" (ByVal hwnd As Long, ByVal wMsg _
  7.         As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  8.  
  9. Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" ( _
  10.     ByVal hWnd1 As Long, _
  11.     ByVal hWnd2 As Long, _
  12.     ByVal lpsz1 As String, _
  13.     ByVal lpsz2 As String) As Long
  14.  
  15. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
  16.     ByVal lpClassName As String, _
  17.     ByVal lpWindowName As String) As Long
  18.  
  19. ' La constante:
  20. Private Const WM_CHAR = &H102
  21. Private Const WM_SETTEXT = &HC
  22.  
  23. ' Hwnd de la ventana
  24. Dim ret As Long
  25. Dim retV  As Long
  26.  
  27.  
  28. Private Sub Command1_Click()
  29.     retV = FindWindow("nomVentana", vbNullString)
  30.     ret = FindWindowEx(retV, 0, "nomControlTextBox", vbNullString)
  31.     Call SendMessage(ret, WM_SETTEXT, 0, ByVal CStr("hola mundo..."))
  32.     Call SendMessageBynum(ret, WM_CHAR, 13, ByVal 0)
  33. End Sub

Última edición por totigo; 04/05/2010 a las 11:12
  #3 (permalink)  
Antiguo 17/05/2010, 12:02
 
Fecha de Ingreso: abril-2010
Mensajes: 2
Antigüedad: 14 años
Puntos: 0
Respuesta: Como enviar pulsaciones de teclas con Sendmessage (VB)

Muchisimas gracias!!!!!, justo lo que buscaba.

Etiquetas: enviar, sendmessage, teclas, vb
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




La zona horaria es GMT -6. Ahora son las 05:38.