[VBA] récuper le handles d'une fenetre active

Résolu
Bonjour,
J'aimerais en savoir pus sur l'utilisation , en Visual Basic .NET , de la facon de faire pour recupere le Handles d'une fenetre.
J'ai beaucoup cherché sur le net : la seul piste est FindWindow ... Mais comment l'utiliser ?

Ex : ma fenetre s'appelle mprog : je veux faire de l'opcity dessus : comment?

Depuis 5 jours je cherche ... Aidez - moi svp ... :)

Merci d'avance.
--
//Dual - Boot Ubuntu Intrepid Ibex 8.10 / Windobe XP
//Seul un geek sait pourquoi la Peugeot 404 n'existe pas.
Configuration: Linux
Firefox 3.0.8
Microsoft Visual Basic 2008
256 MB
65 GB
1 copine

11 réponses

  1. Bonjour,

    Exemple type VB2008:

    Imports System.Diagnostics.Process
    Imports System.Text
    
    ''' <summary>
    ''' Exemple de capture du Handle
    ''' du process actif
    ''' </summary>
    ''' <remarks></remarks>
    Public Class Form1
    
        Sub CaptureProcessActif()
            Dim Message As New StringBuilder
            Dim Proc As Process
    
            Proc = System.Diagnostics.Process.GetCurrentProcess
            Message.AppendLine("Nom du process : " & Proc.ProcessName)
            Message.AppendLine("Numéro du PID : " & Proc.Id)
            Message.AppendLine("Handle du process : " & Proc.Handle.ToString)
    
            MessageBox.Show(Message.ToString)
    
            Debug.Print(Proc.ProcessName)
            Debug.Print(Proc.Id)
            Debug.Print(Proc.Handle)
        End Sub
    
    End Class
    '
    


    Notez qu'il est possible de parcourrir tous les process en action !

        Sub CreerListeProcess()
    
            Dim ProcessList As System.Diagnostics.Process()
            Dim Proc As System.Diagnostics.Process
            Dim LaListe As New ArrayList
    
            ProcessList = System.Diagnostics.Process.GetProcesses()
            For Each Proc In ProcessList
                LaListe.Add(Proc.ProcessName)
            Next
    
        End Sub
    


    Lupin
    3
    1. re:

      Non, l'extension n'est pas requise à moins de cas spéciaux qui me serait
      inconnu à ce jour.

      Pour être certain du nom, utilise ce code pour faire afficher tous les noms :

          Sub CreerListeNomProcess()
      
              Dim ProcessList As System.Diagnostics.Process()
              Dim Proc As System.Diagnostics.Process
              Dim Message As New StringBuilder
      
              ProcessList = System.Diagnostics.Process.GetProcesses()
              For Each Proc In ProcessList
                  Message.AppendLine(Proc.ProcessName)
              Next
      
              MessageBox.Show(Message.ToString)
      
          End Sub
      


      Lupin
      3
      1. Merci beaucoup !
        MESSAGE A LUPIN.A
        Merci !
        J'ai tout de meme quelques questions :
        - comment je fais pour recuper le Handles de mon processus ?? Tu n'as pas repondu a ma question .. :)

        Merci d'avance
        2
        1. re:

          En fait, j'avais bien compris que c' était ton objectif :-)

          Le paramètre [ Size ] est effectivement en général un paramètre en lecture/écriture.

          Le paramètre [ Opacité ] est un paramètre qui m'est inconnu tant par son
          type que ses méthodes et attributs.

          N'ayant pas encore utilisé ces paramètres, je ne puis te guider davantage.

          Google devrait combler ce manque à finir !

          Tout le code déposé ici à été trouvé à l'aide de la toile, j'ai bien sur renommer
          les objets pour bien comprendre ce que je codais car il y a souvent des erreurs à
          corriger. J'y ai trouvé comment utilisé un crayon, une brosse pour dessiner
          des formes.

          J'ai pu te répondre car je travaille moi-même sur une version d'un gestionnaire
          de tâches personnalisé, mais c'est ma deuxième application maison VB2008.

          Lupin
          2
          1. re:

                Sub CreerListeHandle()
            
                    Dim ProcessList As System.Diagnostics.Process()
                    Dim Proc As System.Diagnostics.Process
                    Dim LaListe As New ArrayList
                    Dim MonHandle As System.IntPtr
            
                    ProcessList = System.Diagnostics.Process.GetProcesses()
                    For Each Proc In ProcessList
                        If (Proc.ProcessName.ToUpper = "EXCEL") Then
                            Debug.Print(Proc.ProcessName)
                            MonHandle = Proc.Handle
                            LaListe.Add(MonHandle)
                        End If
                    Next
            
                End Sub
            


            Lupin
            1
            1. Merci !
              Juste une derniere question : comment puis-je recuper le nom du processus de mon programme ?
              Dois-je mettre le .exe avec ?
              1
              1. Merci !
                Tu es mon sauveur !
                Je mets +1 a chaque message + resolu : Je suis super-mega-top-content ce soir quant tu te coucheras tu pourras etre fier de toi ... Tu as fait 1 heureux ....
                for i = 0 to 1000
                print("MERCI")

                @+
                1
                1. Juste un dernier truc :
                  Maintenant que je suis sur du nom de mon processus , comment je fasi pour lui attribuer de l'opacité , du Size ?
                  C'etait mon premier but et j'espere que metre de l'opcaité / size est possible en VB..

                  Merci d'avance .
                  1
                  1. OK , merci tout de meme !
                    Dommage que tu ne saches pas comment mettre le Size / Opacity .... Ce serait SU-PER !

                    Mais bon ... J'ai deja beaucoup appris alors merci encore !

                    @+
                    1