|
Handle fenêtre windows précédente |
|
Stagiaire WDF ![](http://old.wdforge.org/uploads/rank3e84154a75422.gif)
Inscrit: 28/12/2004 04:02
De Nlle Calédonie
Post(s): 4
|
Bonjour,
Je cherche a rendre le focus a la fenêtre windows précédement active (dont je ne peux connaitre le nom)
C'est peut être tout simple, mais je commence à peine à découvrir le monde des API windows et j'ai surement pas les bonnes adresses. En fait, j ai fait plein d essais. Je n arrive desepérement pas a avoir le handle de la fenêtre précédente.
Pour l'instant mon code, qui évidement ne marche pas, ressemble à ça (vous moquez pas de moi).
Ouverture de la fenetre:
// Fenetre toujours dessus AppelDLL32("user32","SetWindowPos",handlefenetre,-1,0,0,0,0,0x3)
A chaque fois que je souhaite rendre le focus:
HandleFenetrePrécédente est un entier // Type C :HWND hWnd est un entier uCmd est un entier sans signe = 3// Type C :UINT (GW_HWNDPREV=3) Res est un entier
//Handle fenetre precedente HandleFenetrePrécédente=API("USER32","GetWindow",hWnd,uCmd) //restaure le programme Res=API("USER32","OpenIcon",HandleFenetrePrécédente) //active l application Res=API("USER32","SetForegroundWindow",HandleFenetrePrécédente)
L'objectif final est d'avoir une fenetre qui reste par dessus toute les autres et acceptant les clics (pas la saisie), tout en laissant la main aux applications derriere. Pour eviter que l'utilisateur n'ai a redonner le focus manuellement a son application a chaque fois qu'il clique sur ma fenetre. Si je peux rendre le focus a l'appli précédente apres chaque clic , c'est bon.
Merci par avance de toute réponse.
Contribution le : 28/12/2004 04:23
|
|
|
Re: Handle fenêtre windows précédente |
|
Animateur WDF ![](http://old.wdforge.org/uploads/rank3f7d78368d45f.gif)
Inscrit: 02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
|
Bonjour Garogo,
Idée
Pourquoi ne pas récupérer le handle de la fenêtre qui est en avant plan au demarrage de ton appli, avant qu'elle ne prenne le focus. Avec l'api GetForegroundWindow() te retourne le handle de ctte fenêtre.
De même tu peut utiliser un timer qui récupère le Handle qui a le focus et le comparer avec le handle de ta fenêtre pour savoir sur quelle fenêtre tu te trouve.
Contribution le : 28/12/2004 10:27
|
|
|
Re: Handle fenêtre windows précédente |
|
Stagiaire WDF ![](http://old.wdforge.org/uploads/rank3e84154a75422.gif)
Inscrit: 28/12/2004 04:02
De Nlle Calédonie
Post(s): 4
|
Merci, voici ce que j'ai fait si ca peut intéresser quelqu'un:
// Declaration globale collection de procedure
HandleFenêtreEnCours est un entier
HandleFenêtrePrécédente est un entier
HandleMaFenêtre est un entier
NuméroTimer est un entier
// GFFenetreDessusTout et GFFenetreSansFocusStartà lancer dans le traitement d'initialisation de la fenêtre:
PROCEDURE GFFenetreDessusTout()
// Le fenêtre restera au dessus des autres
AppelDLL32("user32","SetWindowPos",Handle(MaFenêtre..Nom),-1,0,0,0,0,0x3)
PROCEDURE GFFenetreSansFocusStart()
// Récupération handle fenetre en cours
HandleMaFenêtre = Handle(MaFenêtre..Nom)
// Lancement du timer qui rendra toujours la main a l'application tierce
NuméroTimer = TimerSys("TRendFocus",10)
//// Procedure du timer:
PROCEDURE TRendFocus()
//Handle fenetre active en cours
HandleFenêtreEnCours = SysFenActive()
SI HandleFenêtreEnCours = 0 ALORS RETOUR
SI HandleFenêtreEnCours = HandleMaFenêtre ALORS
// si la fenetre en cours est ma fenetre je rend le focus a la fenêtre windows précédente
SI HandleFenêtrePrécédente = 0 ALORS RETOUR
SysFenActive(HandleFenêtrePrécédente)
SINON
// Sinon je note quelle est la fenêtre en cours
HandleFenêtrePrécédente = HandleFenêtreEnCours
FIN
// procédure pour stopper arreter de rendre le focus si necessaire
PROCEDURE GFFenetreSansFocusStop()
FinTimerSys(NuméroTimer)
Ca marche bien, par contre ca se complique un peu pour gérer les clics apres , mais ca c'est une autre histoire :P Merci :)
Contribution le : 30/12/2004 02:18
|
|
|
Re: Handle fenêtre windows précédente |
|
Animateur WDF ![](http://old.wdforge.org/uploads/rank3f7d78368d45f.gif)
Inscrit: 02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
|
Bonjour, Bien content de voir que tu ai trouvé la voix Je vois qu'il y en a qui travail tard. Moi je suis en train de tester lemoteur Hyper File Client/Serveur sur un serveur accessible via internet sur table comportant 1 millions d'enregistrements. A suivre...
Contribution le : 30/12/2004 02:50
|
|
|
Re: Handle fenêtre windows précédente |
|
Stagiaire WDF ![](http://old.wdforge.org/uploads/rank3e84154a75422.gif)
Inscrit: 28/12/2004 04:02
De Nlle Calédonie
Post(s): 4
|
Je travaille pas si tard que ca :P
Je suis en nouvelle caledonie, il faut rajouter 10 heures pour connaitre mon heure par rapport a l'heure francaise.
Alors, ca donne quoi les test ?
Contribution le : 06/01/2005 06:47
|
|
Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.
|
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
|