Alternative AppActivate

Signaler
Messages postés
140
Date d'inscription
jeudi 24 août 2006
Statut
Membre
Dernière intervention
28 août 2014
-
 Royalcraft -
Bonjour,

Comme a l'habitude =) , je suis sur un projet et je cherche a donner le focus sur une page deja ouverte avec son titre .. par compte quand j'utilise AppActivate la page s'ouvre mais ne garde pas le focus. J'aimerais savoir si quelqu'un a donc une alternative a AppActivate. Merci =)
A voir également:

2 réponses

Messages postés
15818
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 avril 2021
532
Dans ton dernier message, le pivert t'a orienté sur les handle. As tu regardé?
Messages postés
140
Date d'inscription
jeudi 24 août 2006
Statut
Membre
Dernière intervention
28 août 2014

Merci , je modifie ca a linstant =)
Messages postés
140
Date d'inscription
jeudi 24 août 2006
Statut
Membre
Dernière intervention
28 août 2014

Sinon pour avoir et gardé le focus dune page... un idee =) ?
Messages postés
15818
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 avril 2021
532
C'est pas ce qui Le Pivert t'as indiqué.
Une fois que tu as le Handle d'une fenêtre tu peux lui faire faire un peu ce que tu veux
http://www.vbforums.com/showthread.php?671719-RESOLVED-SetForeGroundWindow
Messages postés
15818
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 avril 2021
532
Tu peux récupérer ce handle par ta méthode.
Dim hnd As IntPtr = proc.Handle
.
Messages postés
140
Date d'inscription
jeudi 24 août 2006
Statut
Membre
Dernière intervention
28 août 2014

                Dim hnd As IntPtr = FindWindow(Nothing, "Nouveau-Requête")

                Do Until hnd <> IntPtr.Zero
                        SetForegroundWindow(hnd)
                        SetFocus(hnd)
                        SendKeys.SendWait("^v")
                Loop


sans success =(
Bon je sais que l'on est en 2021 et que y a peux de chance que quelqu'un regarde mais bon voici la soluton au problème:

Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
    Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Integer) As IntPtr
    Private Declare Function SetFocus Lib "user32.dll" (ByVal hwnd As Int32) As Int32

    Private Sub btnfind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnfind.Click
        Dim calculatorHandle As IntPtr = FindWindow(Nothing, "Calculatrice")
        If calculatorHandle = IntPtr.Zero Then
            MsgBox("Calculator is not running.")
            Return
        End If
        SetForegroundWindow(calculatorHandle)
        SendKeys.SendWait("111")
        SendKeys.SendWait("*")
        SendKeys.SendWait("11")
        SendKeys.SendWait("=")
End Sub


Il fallait changé le "ByVal hwnd As Long" en "ByVal hwnd As Integer"

Voici plus d'informations à propos de ce problème si vous parlez anglais : https://stackoverflow.com/questions/53075123/error-lib-kernel32-dll-pinvokestackimbalance-vb-net