Ayuda con el parametro de esta API?

Iniciado por Sai-To, 18 Abril 2008, 23:52 PM

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

Sai-To

hola gente bueno esta es mi duda trabajo con la API FindWindow, pues esta tiene un parametro, que es:

lpClassName Nombre de la clase de la ventana a buscar

pero como hago para saber el IpClassName de las ventanas? osea como lo puedo obtener?

Grax!

seba123neo

Hola,lo voy a explicar de una vez asi queda para todos lo que no saben..es nombre de clase de una ventana lo podes sacara con el Spy++ de microsoft que te viene con el visual basic,hay otras formas tambien desde el mismo visual basic para sacar los nombres,pero es el mas comodo el Spy++ ya que esta cerca..aca te dejo como un tuto de como sacarle el nombre de clase y algunas cosas mas compara autoescribir en un programa sabiendo el nombre de clase y demas...

supongamos que yo quiero escribir automaticamente en el Bloc de Notas de windows sabiendo el nombre de clase del control que te permite escribir adentro,aca te hago una captura de como saque el nombre de la ventana para escribir con el Spy++:

este es el nombre de clase de la ventana padre llamada "Notepad",la que a vos te interesa pasarle a la api findwindow..



despues usamos findwindowsex para meternos en los controles de la ventana padre anterior,y le pasamos como parametro a esta api,el nombre del control al cual queremos acceder..

este es el nombre del control dentro de la ventana llamado "Edit":



para saber los datos de la ventana tenes que arrastrar el "iconito" sobre una ventana y te va diciendo las partes que la forman,en este caso fijate que esta seleccionado el area de escritura del bloc de notas y al lado en la ventana estan los datos...

el handle es el numero(Long) que le asigna windows a cada ventana ,es como si fuera el nuero que identifica esa ventana,sabiendo eso,podes hacer un monton de cosas,cerrarla,moverla,resizarla,cambiar valores,etc....

el Class es el nombre de clase del control,o sea cada control tiene su nombre...ese ese es que nos interesa ahora..

ahora fijate con este codigo como escribo en el bloc de notas..usando unas funciones api's...

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Integer, ByVal hWnd2 As Integer, ByVal lpsz1 As String, ByVal lpsz2 As String) As Integer
Private Declare Function SendMessageSTRING Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Integer
Private Declare Function SendMessageLONG Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Private Const WM_SETTEXT = &HC

Private Sub Form_Load()
Shell "notepad", vbNormalNoFocus
Dim a As Long
Dim b As Long
a = FindWindow("Notepad", vbNullString)
b = FindWindowEx(a, 0&, "Edit", vbNullString)
Call SendMessageSTRING(b, WM_SETTEXT, 256, "Holaaaaaaaaaaaa jejeje")
End Sub


saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Sai-To

Hombre! mil gracias!!! no sabia lo del Spy! se que esto como a mi, le va a servir a muchisimas personas! ;)