Handle fenêtre windows précédente
Stagiaire WDF
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
Créer un fichier PDF de la contribution Imprimer


Re: Handle fenêtre windows précédente
Animateur WDF
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
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Handle fenêtre windows précédente
Stagiaire WDF
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
Créer un fichier PDF de la contribution Imprimer


Re: Handle fenêtre windows précédente
Animateur WDF
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
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Handle fenêtre windows précédente
Stagiaire WDF
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
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


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.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2