[Source] Obtener hWnd, Caption y Class de cualquier cosa :D!

Iniciado por Elemental Code, 7 Enero 2011, 16:49 PM

0 Miembros y 1 Visitante están viendo este tema.

Elemental Code

hola :D!

En un nuevo proyecto pongan un timer que se llame Timer1
y cuatro etiquetas
lblCoor
lblCaption
lblClass
lblhWnd

y metanle este codigo que no se de donde lo saque pero no andaba :P
(ahora si anda)
Código (vb) [Seleccionar]
Option Explicit
'Constantes para pasarle a la función Api SetWindowPos 
Const SWP_NOMOVE = 2 
Const SWP_NOSIZE = 1 
Const HWND_TOPMOST = -1 
Const HWND_NOTOPMOST = -2 ' 
 
' Función Api SetWindowPos 
Private 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 GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Long
Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function WindowFromPoint Lib "user32.dll" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetClassName Lib "user32.dll" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long

Private Type POINTAPI
   X As Long
   Y As Long
End Type

Dim Coor As POINTAPI
Dim Buff As String * 255
Dim Hwn As Long
Dim Class As String * 255

Private Sub Form_Load()
    Timer1.Interval = 1
    Timer1.Enabled = True
    SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, _ 
                            SWP_NOMOVE Or SWP_NOSIZE
End Sub

Private Sub Timer1_Timer()
'Obtenemos las coordenadas del cursor
   GetCursorPos Coor
'Obtenemos el handler de la ventana sobre la cual esta el cursor
   Hwn = WindowFromPoint(Coor.X, Coor.Y)
'Obtenemos el caption de la ventana
   Call GetWindowText(Hwn, Buff, 255)
'Obtenemos la clase de la ventana
   Call GetClassName(Hwn, Class, 255)
   
   lblcoor.Caption = "Coordenadas: X: " & Coor.X & " Y: " & Coor.Y
   lblcaption.Caption = "Texto: " & Trim$(Buff)
   lblclass.Caption = "Clase: " & Trim$(Class)
   lblhwnd.Caption = "hWnd: " & Hwn
End Sub


Disfruten :D

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

raul338

Podrias hacer un hook al mouse tambien :P

Lo malo de esto es que para aplicaciones personalisadas (MFC, Qt, etc) las propiedades de windows mucho no sirven :xD

Psyke1

Exacto con un hook estaría mejor...
A parte que todo eso y muuuuchas más cosas ya te las hace el Spy++ que te viene con el vb... :silbar:

DoEvents! :P

raul338

#3
Cita de: Mr. Frog © en  7 Enero 2011, 19:52 PM
A parte que todo eso y muuuuchas más cosas ya te las hace el Spy++ que te viene con el vb... :silbar:

A mi con mi vb solito no me vino, me vino con el Visual Studio 6, 2005 y 2008 :xD

Lo que si estaria bueno, es hacer un clon de Spy++, pero que puedas mandar mensajes :P (una GUI para SendMessage en otras palabras :xD)

EDITO:

De todas formas esta muy bueno, algo que no puede hacer el Spy++ es seguir el mouse sobretodo para ventanas Flotantes que cuando pirden el foco desparecen! :)

Bien hecho!