Autor
|
Tema: Clic en imagebox externo sendmessage (Leído 6,848 veces)
|
Cromatico
Desconectado
Mensajes: 110
|
MCKSys Argentina: Si con sendinput manda el click, pero implica que se mueva el mouse por lo que estuve probando... Sin mover el mouse creo que no hay forma o si? raul338: Ahora veo si puedo usar el spy++, la verdad nunca lo use, gracias! EDIT: Acabo de probar el spy++, bastante facil de usar parece, filtre donde dice MOUSE, me pare sobre el picture, clicke sin mover el mouse y aparecieron dos eventos: http://s7.postimage.org/hfnf3vfop/Dibujo.pngAsi tuve que declarar para tener los datos exactamente iguales: (Use postmessage esta ves) Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const WM_LBUTTONUP As Long = &H202 Private Const WM_LBUTTONDOWN As Long = &H201 Private Const MK_LBUTTON As Long = &H1
'PUSE LA POSICION QUE APARECIA EN EL SPY PARA CLICKEAR LAS MISMAS COORDENADAS PostMessage HWNDx, WM_LBUTTONDOWN, MK_LBUTTON, ByVal &H540023 Pausita 200 'milisegundos PostMessage HWNDx, WM_LBUTTONUP, 0, ByVal &H540023 DENTRO DE LOS ULTIMOS 4 EVENTOS:Los dos primeros eventos los genere con el mouse, y los ultimos dos desde postmessage Con el mouse envia el click y salta el msgbox, con el postmessage desde mi otro proyecto, aparece en el spy++, pero no hace ninguna accion... Cosa rara...
|
|
« Última modificación: 18 Octubre 2012, 15:35 pm por Cromatico »
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
mmm.... fijate de mostrar todos los mensajes (excepto los de pintado, son horribles y ensucian todo el log) y de ahí verás, para mi que cuando haces click con el mouse se envia otro mensaje
|
|
|
En línea
|
|
|
|
Cromatico
Desconectado
Mensajes: 110
|
mmm.... fijate de mostrar todos los mensajes (excepto los de pintado, son horribles y ensucian todo el log) y de ahí verás, para mi que cuando haces click con el mouse se envia otro mensaje Posiciono el mouse sobre el picture, lo dejo fijo, apreto el mouse y suelto... Sale el mensaje y NO lo acepto aun, esto es lo que sale en el spy++: Intente copiando el MOUSEACTIVATED declarandolo como dice ahi en el spy++, pero tampoco, cuando envio yo esos datos, me los envia una columna mas a la derecha (imaginen mas para la derecha en la foto que esta arriba), no se si tendra algo que ver... La verdad ya no se me ocurre que puede ser... No entiendo por que en otro tipo de controles si funciona y en un picture no... La idea era mandar un click sin mover el mouse pero ya no se me ocurre nada... Gracias!
|
|
|
En línea
|
|
|
|
Dessa
Desconectado
Mensajes: 624
|
Probá este codigo pasando el mouse sobre el picture externo para saber la coordena del control (no la de pantalla ) a la que queres enviar click y luego mandale el click a esa coordenada con SendMessage y Make_lParam La aplicación externa es tuya o es "ajena" ? FORM Option Explicit Private Sub Form_Load() Call SetWindowPos(Me.hwnd, &HFFFF, &H0, &H0, &H0, &H0, &H2 Or &H1) 'on top (opcional) Call StartHook End Sub Private Sub Form_Unload(Cancel As Integer) StopHook End Sub
MODULO
Option Explicit
Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Private Declare Function SetWindowsHookEx Lib "user32.dll" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long Private Declare Function UnhookWindowsHookEx Lib "user32.dll" (ByVal hHook As Long) As Long Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Type POINTAPI: x As Long: y As Long: End Type Private Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long Dim hHook As Long Function Make_lParam(ByVal x As Integer, ByVal y As Integer) As Long Make_lParam = x Or (y * &H10000) End Function Public Sub StartHook() hHook = SetWindowsHookEx(&HE, AddressOf MouseProc, App.hInstance, &H0) End Sub Public Sub StopHook() Call UnhookWindowsHookEx(hHook) hHook = 0 End Sub Private Function MouseProc(ByVal ncode As Long, ByVal wParam As Long, lParam As POINTAPI) As Long Dim hwndl As Long hwndl = WindowFromPoint(lParam.x, lParam.y) '....................................................................... Dim PT As POINTAPI Call ClientToScreen(hwndl, PT) Form1.Cls Form1.Print "Coordenada Screen X " & lParam.x Form1.Print "Coordenada Screen Y " & lParam.y Form1.Print Form1.Print "Coordenada Control X " & lParam.x - PT.x Form1.Print "Coordenada Control Y " & lParam.y - PT.y Form1.Print Form1.Print "hwndl del Control " & hwndl '....................................................................... MouseProc = CallNextHookEx(hHook, ncode, wParam, lParam) End Function
|
|
« Última modificación: 19 Octubre 2012, 04:04 am por Dessa »
|
En línea
|
Adrian Desanti
|
|
|
Cromatico
Desconectado
Mensajes: 110
|
http://foro.elhacker.net/programacion_visual_basic/clic_en_imagebox_externo_sendmessage-t373391.0.html;msg1793065#msg1793065Dessa fijate que yo le mande tal cual las coordenadas que aparecieron en el spy++, es decir las coordenadas del control y tampoco me lo toma, en realidad lo queria hacer para otra aplicacion, pero me parecio extraño al no poder hacerlo en un picture, entonces me cree un proyecto en blanco solo con el picture, y vi que tampoco va hacia el evento Picture1_click cuando le mando sendmessage.... No importa voy a tener que usar sendinput o mouse_event, no queda otra que mover el mouse me parece, gracias de todos modos!
|
|
|
En línea
|
|
|
|
Cromatico
Desconectado
Mensajes: 110
|
Alguien se le ocurre alguna otra idea? Disculpen por el UP.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con sendmessage
Programación Visual Basic
|
Sai-To
|
7
|
2,511
|
17 Abril 2008, 06:11 am
por cassiani
|
|
|
copiar datos de listview externo con sendmessage ?
Programación Visual Basic
|
Tengu
|
1
|
3,000
|
10 Febrero 2010, 16:24 pm
por Dessa
|
|
|
SendMessage
Programación C/C++
|
calk9
|
5
|
3,662
|
14 Septiembre 2011, 19:52 pm
por Eternal Idol
|
|
|
SendMessage
Programación Visual Basic
|
calk9
|
6
|
2,890
|
20 Septiembre 2011, 00:53 am
por calk9
|
|
|
[C] Clic (con SendMessage) en una ventana externa
.NET (C#, VB.NET, ASP)
|
GonzaFz
|
3
|
3,654
|
23 Mayo 2012, 01:37 am
por GonzaFz
|
|