Autor
|
Tema: Simular Click (Leído 9,867 veces)
|
ignorantev1.1
Desconectado
Mensajes: 617
/\ Así acabo cuando quiero programar...
|
Hola @raul338, estuve investigando la manera, pasé por WM_HOTKEY, pero no me dí tinta, es que la verdad no sé como usarlo , ¿me ayudarías con un ejemplo, por favor? Saludos y gracias!
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Dale una probada a ucHotKey en la parte de SetRules o similar
|
|
|
En línea
|
|
|
|
ignorantev1.1
Desconectado
Mensajes: 617
/\ Así acabo cuando quiero programar...
|
No puedo! Private Const WM_HOTKEY = &H312 Private Const MOD_ALT = 1 Private Const MOD_CONTROL = 2 Private Const MOD_SHIFT = 4 Private Const MOD_WIN = 8 Private Type HotKey lKey As Integer hKey As Integer End Type
Ret es una aplicación Externa. Dim CtrlA As HotKey Dim Abrir As Integer Abrir = GlobalAddAtom("programaAbrir") CtrlA.lKey = vbKeyA CtrlA.hKey = &H11
call RegisterHotKey(ret,Abrir, MOD_CONTROL, vbKeyA) Call SendMessage(ret, WM_HOTKEY, ByVal VarPtr(CtrlA), Abrir) Call UnregisterHotKey(ret, Abrir) Call GlobalDeleteAtom(Abrir)
Usé GetLastError y: "Invalid window; it belongs to other thread.", justo después de registrar el hotkey. Pensé que sería así de sencillo Saludos! Jajajaja , Saludos!
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
no, porque usas un Tipo de estructura? cuando deben estar los 2 en un long? x'D 4 bytes (long) = 2 bytes (Integer) KeyCode + 2 bytes (Integer) Modificadores (Control / ALt / Shift) Por eso te recomende el uso de MakeDWord Tenes que hacer lHotKey = MakeDWord(VK_A, MOD_CONTROL) Call SendMessage(hwnd, WM_HOTKEY, 0, ByVal lHotKey)
|
|
|
En línea
|
|
|
|
ignorantev1.1
Desconectado
Mensajes: 617
/\ Así acabo cuando quiero programar...
|
no, porque usas un Tipo de estructura? cuando deben estar los 2 en un long? x'D 4 bytes (long) = 2 bytes (Integer) KeyCode + 2 bytes (Integer) Modificadores (Control / ALt / Shift) , Según yo esa estructura de 2 integers, será reconocida como 1 long, compruebalo: CtrlL.hKey = vbKeyA '&H4C CtrlL.lKey = MOD_CONTROL '&H2 Call CopyMemory(tHotK2, ByVal VarPtr(CtrlL), 8)
Ahora, de todas formas no me funciona... xD Talvez sea por que es necesario registrar el HotKey, pero no sé como registralo en una ventana externa... Saludos y gracias!
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
, Según yo esa estructura de 2 integers, será reconocida como 1 long, compruebalo: Si pero nunca supe cual iria primero y cual ultimo (ejem, importa la diferencia entre el hiWord y el loWord aca ) Mm... el ultimo recurso, enviar WM_NOTIFY con notificaciones estilo HotKey
|
|
|
En línea
|
|
|
|
seba123neo
|
proba usar PostMessage(), aca tenes un ejemplo que le manda ALT + F4 a la calculadora y la cierra. Option Explicit Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long Private Const WM_SYSKEYUP = &H105 Private Const WM_SYSKEYDOWN = &H104 Private Const VK_F4 As Long = &H73 Private Sub Command1_Click() Dim vHWND As Long vHWND = FindWindow("CalcFrame", vbNullString) Call BringWindowToTop(vHWND) Call PostMessage(vHWND, WM_SYSKEYDOWN, VK_F4, &H3E0001 Or &H20000000) Call PostMessage(vHWND, WM_SYSKEYUP, VK_F4, &H3E0001 Or &H20000000) End Sub
"CalcFrame" es el nombre de clase de la ventana de la calculadora en windows 7, en windows XP es "SciCalc". saludos.
|
|
|
En línea
|
|
|
|
ignorantev1.1
Desconectado
Mensajes: 617
/\ Así acabo cuando quiero programar...
|
Hola @seba123neo, no logro descifrar "lParam"... Call BringWindowToTop(vHWND) Emmm, es necesario? Saludos y gracias!
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
No es nesesario usar: BringWindowToTop() ya que el mensaje aun asi llegara sin problemas, esto se debe a que se simula con MENSAJES en el callback de la ventana de manera directa, mas no se simula el click de alguna manera con el mouse fisico o similar.
Dulces Lunas!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Simular click de raton
.NET (C#, VB.NET, ASP)
|
Gorky
|
7
|
12,261
|
11 Septiembre 2009, 05:01 am
por Zzombi
|
|
|
[Duda | Solucionado] Capturar evento global y simular click
.NET (C#, VB.NET, ASP)
|
Shout
|
3
|
4,078
|
13 Julio 2013, 05:22 am
por Shout
|
|
|
[Ayuda] Simular un click del mause con sendkeys vbKeyLButton
Scripting
|
Flamer
|
3
|
5,347
|
9 Marzo 2015, 20:52 pm
por Eleкtro
|
|
|
[Ayuda] Simular un click del mause
Programación Visual Basic
|
Flamer
|
3
|
2,900
|
11 Marzo 2015, 05:49 am
por Flamer
|
|
|
C# - Simular Click en otra aplicacion
.NET (C#, VB.NET, ASP)
|
NOIS
|
1
|
4,512
|
10 Mayo 2016, 21:10 pm
por Eleкtro
|
|