Faire un aperçu des applis / fichiers ouverts dans une form avec l'api printwindow

Description

Histoire de m'occuper, j'ai fait ce bout de code qui liste les fichiers et les applis ouverts dans une ListBox, et lors du choix de l'item, une autre Form s'ouvre avec l'aperçu dedans, grâce à l'API PrintWindow.

En fait je me baladais sur DelphiFR.com et j'ai vu ce titre, alors je l'ai fait en VB ;)

Source / Exemple :


Public Sub AddWindowsName(oForm As Form, oControl As String)
    Dim Handle      As Long
    Dim NewHandle   As Long
    Dim i           As Long
    Dim sNameWindow As String
    
' Handle de la Form qui appelle la méthode
    Handle = oForm.hWnd
    
' Handle de la Form qui appelle la méthode en propriété
    HandleForm = oForm.hWnd
    
' Passage de la valeur du Handle
    NewHandle = Handle
    
    On Local Error Resume Next
' Recherche des handle + affichage de la liste dans le contrôle mis en paramètre
    For i = 2 To 3
        Do
            Handle = NewHandle
            ' And IsIconic(Handle)
            If IsWindow(Handle) = 1 And (IsWindowVisible(Handle)) Then
                If Not Not (IsIconic(Handle)) Then
                    sNameWindow = String(100, Chr$(0))
                    GetWindowText Handle, sNameWindow, 100
                    sNameWindow = Left$(sNameWindow, InStr(sNameWindow, Chr$(0)) - 1)
                    
                    If sNameWindow <> vbNullString Then
                        oForm.Controls(oControl).AddItem sNameWindow
                        Debug.Print "~" & CStr(Handle) & "~" & sNameWindow & "~"
                        mcolWindows.Add CStr(Handle), sNameWindow
                    End If
                End If
            End If
            NewHandle = GetNextWindow(Handle, i)
        Loop Until Handle = NewHandle
    Next i
End Sub

Public Sub GenerateWindow(ByVal sName As String, ByVal oFormPrint As Form)
    
    ' obligé d'afficher la fenêtre voulue sinon elle n'apparait pas dans la form :$
    Load oFormPrint
    ShowWindow CLng(mcolWindows.Item(sName)), SW_SHOWNORMAL
    oFormPrint.Caption = sName
    oFormPrint.AutoRedraw = True
    PrintWindow mcolWindows.Item(sName), oFormPrint.hDC, 0
    ShowWindow CLng(mcolWindows.Item(sName)), SW_SHOWMINIMIZED
    oFormPrint.Show

End Sub

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.