Excel - api captura ventana error???

 
Vista:

api captura ventana error???

Publicado por felo (8 intervenciones) el 16/04/2010 14:16:10
hola a todos, tengo este error y me pregunto si me pudieran dar una ayuda

Option Explicit
Private Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hWnd As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wFlag As Long) As Long
Private Const GW_HWNDFIRST = 0&
Private Const GW_HWNDNEXT = 2&
Private Const GW_CHILD = 5&

Private Sub CommandButton1_Click()
Dim buf As Long, handle As Long, titulo As String, lenT As Long, ret As Long
handle = GetWindow(hWnd, GW_HWNDFIRST)
lenT = GetWindowTextLength(handle)
titulo = String$(lenT, 0)
ret = GetWindowText(handle, titulo, lenT + 1)
titulo$ = Left$(titulo, ret)
Application.Dialogs(xlDialogSendMail).Show
AppActivate titulo$
SendKeys "NOMBRE"
End Sub

resumiendo lo que intento hacer es capturar el nombre de la ventana que en ese momento tiene el foco, o esta activa, asi como esta el codigo, cuando lo ejecuto me dice que la variable hWnd no esta declarada, sera que tengo que activar alguna referencia, me pueden ayudar, en access si me funciona pero no en excell, muchas gracias y saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JuanC

RE:api captura ventana error???

Publicado por JuanC (1237 intervenciones) el 16/04/2010 14:53:54
la variable hWnd no está declarada
debería ser Dim hWnd As Long
y luego iniciarla con el valor del handle de la ventana en cuestión,
para eso podés usar la API FindWindow/FindWindowEx

(en Access debe ser una variable global o algo así que referencia a la ventana
'padre', en Excel la cosa es más complicada)

Private Declare Function apiFindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

hWnd = apiFindWindow(vbNullString, UserForm1.Caption)

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:api captura ventana error???

Publicado por felo (8 intervenciones) el 17/04/2010 15:18:48
gracias JuanC, pero en el ejemplo que me mandas, en la api debo pasarle el parametro del nombre de la ventana, y yo quiero capturar en una variable el nombre de la ventana que en ese momento esta activa, me diras que esta claro, con mirarla ya lo tienes, pero sabes como es la informatica, en una cadena de caracteres puede haber alguno que no veamos o que le sistema lo interprete de otra manera, y si puedo almacenar el nombre que el sistema me le esta dando a esa ventana en una variable, pues ya puedo despues hacer las gestiones que quiera, en access me funciona bien, porque incluso, en un cuadro de texto, voy reflejando el nombre de todas las ventanas que hay abiertas, hasta la ultima y me pregunto porque en excell no es posible, o al menos como yo lo estoy intentando, si sabes algun otro modo, por ejemplo de poner el nombre de las ventanas abiertas en ese momento por el sistema en un cuadro de lista con solo apretar un boton desde una hoja de excell, te agradeceria, sino es posible, te agradezco nuevamente, tu atencion y respuesta, saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

RE:api captura ventana error???

Publicado por JuanC (1237 intervenciones) el 17/04/2010 22:35:16
para obtener la ventana activa usa la API GetActiveWindow
además hay muchas funciones de la API que seguro te alcanzan y sobran!

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha aumentado su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

RE:api captura ventana error???

Publicado por Audad (64 intervenciones) el 30/04/2010 07:11:51
Un saludo desde Peru...
Me dio curiosidad la aplicacion y el dialogo...
vi que efectivamente la variable...hWnd no esta declarada... pero esta como ...byval... por lo que lo declare en forma global poniendolo al princiio

Dim hWnd as long

lo corri... y en la linea...

*** Application.Dialogs(xlDialogSendMail).Show

sale ...

"Se ha producido el error '1004' en tiempo de ejecucion
Error en el sistema de correo. Compruebe la instalacion...

Curiosidad.... que hace esta macro...
Gracias por ilustrarme y motivar

PD. Utilizo... Excel 2007
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar