|
11
|
Programación / Programación Visual Basic / Re: Obtener el identificador de una segunda ventana hija
|
en: 12 Julio 2013, 04:27 am
|
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Sub Command1_Click()
Dim hWndMain As Long Dim hWndChild As Long Dim hWndAnalizar As Long
hWndMain = FindWindow("PiriformCCleaner", "Piriform CCleaner")
If hWndMain = 0 Then MsgBox "Ccleaner sin Ejecutar" Else hWndChild = FindWindowEx(hWndMain, 0, "#32770", vbNullString) hWndAnalizar = FindWindowEx(hWndChild, 0, "Button", "&Analizar")
If hWndAnalizar = 0 Then MsgBox "La Opcion Limpiador no está Seleccionada" Else MsgBox hWndAnalizar End If End If
End Sub
|
|
|
15
|
Programación / Programación Visual Basic / Re: Clic en imagebox externo sendmessage
|
en: 19 Octubre 2012, 03:09 am
|
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
|
|
|
17
|
Programación / Programación Visual Basic / Re: Clic en imagebox externo sendmessage
|
en: 18 Octubre 2012, 00:39 am
|
No sé si endndí bien tu pregunta, tr referías a esto ? Option Explicit
Private Const WM_LBUTTONDOWN = &H201 Private Const WM_LBUTTONUP = &H202 Private 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
Private Sub Form_Load() Caption = 0 Timer1.Interval = 15 End Sub
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = vbLeftButton Then Caption = Caption + 1 End Sub
Private Sub Timer1_Timer() Call SendMessage(Picture1.hwnd, WM_LBUTTONDOWN, 0, 0&) Call SendMessage(Picture1.hwnd, WM_LBUTTONUP, 0, 0&) End Sub
|
|
|
19
|
Programación / Programación Visual Basic / Re: Problema que no comprendo con la api GetPixel
|
en: 7 Septiembre 2012, 00:17 am
|
Tenia un conflicto en las clases.
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Dim window As Long Private Sub Form_Load()
If App.LogMode = 0 Then window = FindWindow("ThunderFormDC", vbNullString) ' IDE ElseIf App.LogMode = 1 Then window = FindWindow("ThunderRT6FormDC", vbNullString) ' EXE End If MsgBox window, , "LogMode " & App.LogMode
End Sub
|
|
|
|
|
|
|