Ouverture et affichage de fenetres

cracos30 Messages postés 81 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 12 avril 2013 - 8 mai 2010 à 07:34
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 - 9 mai 2010 à 20:02
Bonjour,
Jutilise :

ret2 = SetWindowPos(hparent, HWND_TOPMOST, 0, 0, 0, 0, SW_SHOWMAXIMIZED)

pour afficher une fenetre. Quand je lance le prog une fois sur deux la fenetre s'ouvre reduite dans la barre des taches. Je n'ai pas trouvé de solution. Merci de votre aide

5 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
8 mai 2010 à 13:49
Que veux-tu faire exactement ? Seulement mettre la fenêtre au premier plan ?
---
VB.NET is good ... VB6 is better
0
cracos30 Messages postés 81 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 12 avril 2013
8 mai 2010 à 16:16
Merci de répondre
En fait c'est un prog qui se lance de deux façons différentes
Une "manuelle" une autre par un lancement "auto" par le planificateur des taches
Pour le lancement manuel j'utilise un exe pour avoir une image en attente du chargement du prog en vba(pour celui du planificateur aussi):

Option Explicit
'Private hwnd As Long
Private AuSommet As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
                                    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Const SWP_NOMOVE = 2
Private Const SWP_NOSIZE = 1
Private Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Private Const HWND_TOPMOST = -1
Private Const SW_HIDE = 0
Private Const SW_MAXIMIZE = 3
Private Const SW_MINIMIZE = 6
Private Const SW_RESTORE = 9
Private Const SW_SHOW = 5
Private Const SW_SHOWDEFAULT = 10
Private Const SW_SHOWMAXIMIZED = 3
Private Const SW_SHOWMINIMIZED = 2
Private Const SW_SHOWMINNOACTIVE = 7
Private Const SW_SHOWNA = 8
Private Const SW_SHOWNOACTIVATE = 4
Private Const SW_SHOWNORMAL = 1


Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal Y As Long) As Long

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
                                                    ByVal x As Long, ByVal Y As Long, ByVal cx As Long, _
                                                    ByVal cy As Long, ByVal wFlags As Long) As Long



Private Sub Form_Load()



    Dim mRet As Long
    Dim mPID As Long
    Dim bRet As Boolean


    mRet = FindWindow(vbNullString, "Ariane Application")

    If mRet <> 0 Then
        MsgBox "Programme déja ouvert !", vbCritical, "ATTENTION !"    ' info à l'utilsteur qu'il manque des cdes secteurs
        GoTo cgt
    End If


    Me.Show
Me.BorderStyle = 0
Me.WindowState = 2
    AuSommet = SetForegroundWindow(Me.hwnd)
SetCursorPos 700, 250
Image1.Picture = LoadPicture("C:\Users\Administrateur\Pictures\BOURSE\2009_05_18\argent billets.jpg")
Image1.Top = 0
Image1.Left = 0
Image1.Width = Me.ScaleWidth
Image1.Height = Me.ScaleHeight
    mPID = Shell("C:\Program Files\Microsoft Office\Office12\excel.exe F:\BOURSE\PROGRAMES\ARIANE22.xlsm", SW_MINIMIZE)
 AuSommet = SetForegroundWindow(Me.hwnd)
    Do
        mRet = FindWindow(vbNullString, "Ariane Application")        'FENETRE PARENT
        If mRet <> 0 Then Exit Do
    Loop
   
cgt:
    Unload Me

End Sub



"Ariane application" est le nom que prend l'application vba une fois prête pour signaler à l'exe qu'il peut se fermer. C'est la que se trouve le problème

Ensuite j'en ai un autre avec le planificateur des taches(qui est le le petit frère du 1er). Là je ne vois rien s'ouvrir, pourtant si j'essaie de relancer manuellement le prog , excel me signale qu'il est déjà ouvert, et je suis obligé de redemarrer ma machine.(mais chaque problème à son tour)

Prog Vba:


Public Sub DEMAR()
'Stop
    Sheets("Feuil1").Select
    Application.DisplayFullScreen = True

    Ct = DateAdd("S", 20, Now)
    Do While Ct > Now
        hparent = FindWindow(vbNullString, "Microsoft Excel - ARIANE22.xlsm")        'FENETRE PARENT
        If hparent <> 0 Then Exit Do
    Loop
    DoEvents
    ret = FindWindow(vbNullString, "Gardien")
    DoEvents

    SetCursorPos 700, 250
    ret1 = hparent
    'Stop
    SetWindowText hparent, "Ariane Application"
    'ret2 = SetWindowPos(hparent, HWND_TOPMOST, 0, 0, 0, 0, SW_SHOWMAXIMIZED)
    'ret2 = BringWindowToTop(hparent)
    'ret2 = SetForegroundWindow(hparent)
    If ret <> 0 Then FORMATAGE

End Sub


("Gardien" est le nom de l'exe pour le planificateur des taches)


Suis je explicite?
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
9 mai 2010 à 11:17
Dans DEMAR(), ret prend quelle valeur ?
---
VB.NET is good ... VB6 is better
0
cracos30 Messages postés 81 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 12 avril 2013
9 mai 2010 à 12:51
Si je lance le prog "manuellement": zero
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
9 mai 2010 à 20:02
Cela signifie que l'API n'a pas trouvé de fenêtre portant le nom que tu recherches ...
---
VB.NET is good ... VB6 is better
0
Rejoignez-nous