Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Psyke1 en 10 Junio 2010, 11:47 am



Título: Problema con SendMessage [AYUDA]
Publicado por: Psyke1 en 10 Junio 2010, 11:47 am
Hola, a ver si me podeis ayudar, porque sinceramente no se lo que puede pasar... :-(
Tengo esto:
Código
  1. Option Explicit
  2.  
  3. Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Any, ByVal lParam As Long) As Long
  4.  
  5. Private Sub Form_Load()
  6.    Timer1.Interval = 1500: Text1 = "HOla amigosssss"
  7. End Sub
  8.  
  9. Private Sub Timer1_Timer()
  10.    Call SendMessage(Text1.hwnd, &H102, vbKeyLeft, 0&)
  11. End Sub
Entonces se supone que cada 1500 ms la posicion del texto deberia moverse un sitio a la izquierda, ¿no? Pero en el text box me va añadiendo el caracter %...  :o
Y si pongo vbKeySpace funciona bien, me va añadiendo espacios, pero porque falla con vbKeyLeft??? :huh:

Gracias! :-*


Título: Re: Problema con SendMessage [AYUDA]
Publicado por: raul338 en 10 Junio 2010, 17:00 pm
Si lo que quieres hacer es cambiar el cursor de posicion (presionar flechitas) estas enviando el mensaje equivocado

El mensaje WM_CHAR (&H102) es para agregar un caracter, y el valor de la flechita en ascii es "%" (creo)

Asi que tienes que enviar un mensaje que presione teclas: WM_KEYDOWN

el code quedaria asi:

Código
  1. Option Explicit
  2.  
  3. Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Any, ByVal lParam As Long) As Long
  4. Private Const WM_KEYDOWN As Long = &H100
  5.  
  6. Private Sub Form_Load()
  7.    Timer1.Interval = 1500: Text1 = "HOla amigosssss"
  8. End Sub
  9.  
  10. Private Sub Timer1_Timer()
  11.    Call SendMessage(Text1.hwnd, WM_KEYDOWN, vbKeyRight, 0&)
  12. End Sub
  13.  

:) espero que te sirva!!


Título: Re: Problema con SendMessage [AYUDA]
Publicado por: Psyke1 en 10 Junio 2010, 18:09 pm
SII!
Funciona!
Gracias tio! ;-)

Salu2!