Mettre au premier plan avec SetForegroundWindow, SetFocus, et ShowWindow
Wlad69
Messages postés6Date d'inscriptionlundi 9 septembre 2002StatutMembreDernière intervention 5 mai 2021
-
5 juin 2008 à 18:34
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
6 juin 2008 à 18:39
Bonjour,
Je veux qu'à intervalle régulier Access vienne s'afficher au premier plan (au dessus de tous les autres application).
En VBA (Access 2000), sur le timer d'un formulaire, j'ai mis
Private Sub Form_Timer()
call PremierPlan
End Sub
et dans un module, j'ai mis
Private Declare Function SetFocus _
Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SetForegroundWindow _
Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ShowWindow _
Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const SW_MAXIMIZE = 3
Suivant les applications qui ont le focus et qui sont affichés, parfois çà fonctionne... et malheureusement parfois çà marche pas. Je ne sais pas pourquoi.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 6 juin 2008 à 12:46
Salut
Ta méthode semble bonne.
Reste à savoir si la fenêtre que tu veux mettre en premier plan est le logiciel Access ou un des états ou autre.
Pour t'aider dans tes essais, vérifie que le handle (hwnd) est le bon avec cet outil : <winId> qui te fournira le handle de la fenêtre que tu es en train de survoler avec la souris, tu poiurras ainsi la comparer.
La valeur affichée par ce logiciel est en hexadécimal.
Pour afficher la valeur que tu obtiens, convertis-la en hexa :
MsgBox Hex(hwnd)
Fait attention à ne pas mettre ton Timer trop rapide, ça pourrait charger inutilement la machine.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Wlad69
Messages postés6Date d'inscriptionlundi 9 septembre 2002StatutMembreDernière intervention 5 mai 2021 6 juin 2008 à 15:51
J'ai fait des essais avec WinID, et je n'ai rien remarqué de particulier.
J'ai essayé de travailler avec le handle du formulaire et avec le handle de la fenêtre Access.
=>çà fonctionne mieux avec le handle d'Access.
En fait dans certains cas, Access apparait bien en plein écran au premier plan(fonctionnement souhiaté), mais dans d'autres cas Access est restauré en plein écran, mais pas au premier plan.
J'ai un doute sur l'ordre dans lequel je dois faire mes appels d'API.