Lista delle finestre aperte

di il
2 risposte

Lista delle finestre aperte

Sto cercando su internet una routine per VB.NET per avere l'elenco delle finestre aperte in quel momento.
Il problema nasce dal fatto che l'utente, su di un browser, clicca su "invia file", si apre la finestra dove deve scegliere il file da inviare, ed io dovrei a quel punto capire che si è aperta quella finestra.
Ho trovato un sacco di codice orribile e non funzionante, qualcuno può indicarmi qualche cosa che funzioni ??

Grazie mille
Sergio

2 Risposte

  • Re: Lista delle finestre aperte

    Ci sono riuscito, riporto il codice se servisse a qualcuno
        Public Delegate Function CallBack(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean
        Public Declare Function EnumWindows Lib "user32" (ByVal Adress As CallBack, ByVal y As Integer) As Integer
        Public Declare Function IsWindowVisible Lib "user32.dll" (ByVal hwnd As IntPtr) As Boolean
        Private Declare Auto Function GetWindowText Lib "User32.dll" (ByVal Hwnd As IntPtr, ByVal Txt As Byte(), ByVal Lng As Integer) As Integer
        Private Declare Function GetWindowTextLengthA Lib "User32.dll" (ByVal hwnd As IntPtr) As Integer
        Dim LstWindowsText As New List(Of String)
    
        Private Function Enumerator(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean
    
            If IsWindowVisible(hwnd) Then
                Dim TheLength As Integer = GetWindowTextLengthA(hwnd)
                Dim TheReturn(TheLength * 2) As Byte '2x the size of the Max length
                GetWindowText(hwnd, TheReturn, TheLength + 1)
                Dim TheText As String = ""
                For x = 0 To (TheLength - 1) * 2
                    If TheReturn(x) <> 0 Then
                        TheText &= Chr(TheReturn(x))
                    End If
                Next
                If TheText <> "" Then
                    LstWindowsText.Add(TheText)
                End If
            End If
            Return True
        End Function
    
    Per chiamarlo basta fare un
    LstWindowsText.Clear()
    EnumWindows(AddressOf Enumerator, 0)
    e poi su LstWindowsText vi trovate la lista della proprietà Text della finestra
  • Re: Lista delle finestre aperte

    Grazie della condivisione, molto utile
Devi accedere o registrarti per scrivere nel forum
2 risposte