Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Elemental Code en 7 Enero 2011, 16:49 pm



Título: [Source] Obtener hWnd, Caption y Class de cualquier cosa :D!
Publicado por: Elemental Code en 7 Enero 2011, 16:49 pm
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
  1. Option Explicit
  2. 'Constantes para pasarle a la función Api SetWindowPos  
  3. Const SWP_NOMOVE = 2  
  4. Const SWP_NOSIZE = 1  
  5. Const HWND_TOPMOST = -1  
  6. Const HWND_NOTOPMOST = -2 '  
  7.  
  8. ' Función Api SetWindowPos  
  9. Private Declare Function SetWindowPos _  
  10.    Lib "user32" ( _  
  11.        ByVal hWnd As Long, _  
  12.        ByVal hWndInsertAfter As Long, _  
  13.        ByVal X As Long, ByVal Y As Long, _  
  14.        ByVal cX As Long, _  
  15.        ByVal cY As Long, _  
  16.        ByVal wFlags As Long) As Long  
  17.  
  18. Private Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Long
  19. Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
  20. Private Declare Function WindowFromPoint Lib "user32.dll" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
  21. Private Declare Function GetClassName Lib "user32.dll" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
  22.  
  23. Private Type POINTAPI
  24.   X As Long
  25.   Y As Long
  26. End Type
  27.  
  28. Dim Coor As POINTAPI
  29. Dim Buff As String * 255
  30. Dim Hwn As Long
  31. Dim Class As String * 255
  32.  
  33. Private Sub Form_Load()
  34.    Timer1.Interval = 1
  35.    Timer1.Enabled = True
  36.    SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, _  
  37.                            SWP_NOMOVE Or SWP_NOSIZE
  38. End Sub
  39.  
  40. Private Sub Timer1_Timer()
  41. 'Obtenemos las coordenadas del cursor
  42.   GetCursorPos Coor
  43. 'Obtenemos el handler de la ventana sobre la cual esta el cursor
  44.   Hwn = WindowFromPoint(Coor.X, Coor.Y)
  45. 'Obtenemos el caption de la ventana
  46.   Call GetWindowText(Hwn, Buff, 255)
  47. 'Obtenemos la clase de la ventana
  48.   Call GetClassName(Hwn, Class, 255)
  49.  
  50.   lblcoor.Caption = "Coordenadas: X: " & Coor.X & " Y: " & Coor.Y
  51.   lblcaption.Caption = "Texto: " & Trim$(Buff)
  52.   lblclass.Caption = "Clase: " & Trim$(Class)
  53.   lblhwnd.Caption = "hWnd: " & Hwn
  54. End Sub

Disfruten :D


Título: Re: [Source] Obtener hWnd, Caption y Class de cualquier cosa :D!
Publicado por: raul338 en 7 Enero 2011, 18:28 pm
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


Título: Re: [Source] Obtener hWnd, Caption y Class de cualquier cosa :D!
Publicado por: Psyke1 en 7 Enero 2011, 19:52 pm
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


Título: Re: [Source] Obtener hWnd, Caption y Class de cualquier cosa :D!
Publicado por: raul338 en 7 Enero 2011, 20:30 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!