![]() |
Ayuda con Excel y las APIs de Windows Parceros el escenario es el siguiente: Tego una hoja de excel en la cual he programado unas macros con el editor de VB, pero necesito que se ejecute un comando de guardar cuando la hoja o el Excel se encuentre minimizada y se maximice, me comentaron que puedo usar una API de windows llamada GetWindowPlacement, no se como deberia de programarla, alguno de ustedes ha usado APIS de window en el visual de EXCEL???? o saben alguna manera de hacer esto que quiero???, el VB de excel es limitado asi que no hay eventos como onminimize, windowsstate, ni nada que se le parezca. |
Respuesta: Ayuda con Excel y las APIs de Windows Yo he usado algo asi pero lo tengo en un programa en vb, detecto ciertas ventanas y su estado (min, max). |
Respuesta: Ayuda con Excel y las APIs de Windows dim hwnd_Ventana as long Private Declare Function GetForegroundWindow Lib "user32" () As Integer Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long if Titulo_Ventana="X" then ' llamo a esta funcion para obtener el nombre de la ventana y el hwnd _ventana end if hwnd_Ventana = GetForegroundWindow() If ESTADOVENTANA(hwnd_Ventana)<>3 THEN ' SI ES <> DE MAXIMIZADO End if Function Titulo_Ventana() As String 'Dim hwnd_Ventana As Long Dim Length As Long hwnd_Ventana = GetForegroundWindow() Phandle = hwnd_Ventana 'Crea un Buffer para el caption del title bar caption_ventana = Space$(1024) ' Retorna la cantidad de caracteres Length = GetWindowText(hwnd_Ventana, caption_ventana, Len(caption_ventana)) ' Obtiene solo el caption sin los espacios nulos de la cadena caption_ventana = Left$(caption_ventana, Length) Titulo_Ventana = caption_ventana If caption_ventana <> Ventanaanterior Then Ventanaanterior = caption_ventana End If End Function Private Function ESTADOVENTANA(hwn As Long) As Byte 'Variable para usar la estructura WINDOWPLACEMENT Dim T_WINDOWPLACEMENT As WINDOWPLACEMENT Dim Ret As Long 'Valor de retorno de la función 'Para este ejemplo solo necesitamos enviarle el tamaño de la estructura 'en la variable Lenght T_WINDOWPLACEMENT.Length = Len(T_WINDOWPLACEMENT) 'Llamamos a la función Ret = GetWindowPlacement(hwn, T_WINDOWPLACEMENT) ' Form1.Cls Select Case T_WINDOWPLACEMENT.showCmd Case 1 'MsgBox "Form2 en estado Normal " ESTADOVENTANA = 1 Case 2 ' MsgBox "Form2 Minimizado " ESTADOVENTANA = 2 Case 3 ' MsgBox "Form2 Maximizado " ESTADOVENTANA = 3 End Select 'Label3.Caption = T_WINDOWPLACEMENT.showCmd End Function espero te sirva |
| La franja horaria es GMT -5. Ahora son las 04:06:17. |
Desarrollado por: vBulletin® Versión 3.8.9
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.
DeNunCianDo.CoM ©