Liste des fenêtres ouvertes pour communiquer entre elles (avec exemple de code)
Stagiaire WDF
Inscrit:
29/03/2004 16:43
De Canada
Post(s): 29
Bonjour à tous, j'ai fait une recherche sur le forum sans rien trouvé qui semblait être une réponse à ma question qui est la suivante :

Existe-t-il un moyen d'obtenir la liste de toutes les fenêtres ouvertes (titre) (WinDev et autres) à un moment X?

Si le sujet à déjà été traité merci de me rediriger.

Merci d'avance pour votre aide

il_a_ri

Contribution le : 08/12/2004 16:02
Créer un fichier PDF de la contribution Imprimer


Re: Liste des fenêtres ouvertes
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

Idée :

Si ces fenêtres ont été extraites alors elles doivent se trouver dans le répertoire Groupware, pour les autres je ne sais pas.

Ceci dit une petite procedure pourrait connaître les fenêtres en cours d'utilisation.

Contribution le : 08/12/2004 16:22
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Liste des fenêtres ouvertes
Stagiaire WDF
Inscrit:
29/03/2004 16:43
De Canada
Post(s): 29
Bon finalement j'ai trouvé comment obtenir la liste des titres de fenêtres ouvertes ainsi que leur handle.

Par contre le but inavoué de mon post était celui-ci :

Pouvoir à partir d'une application tierce charger dans le presse papier du texte et ensuite l'envoyer dans la fenêtre choisi à partir d'une liste.

En ce moment je suis en mesure de manuellement charger du texte dans le presse papier et de l'envoyer dans une fenêtre si cette dernière est un fenêtre notepad mais pas Office Word ou une fenêtre de code WinDev.

L'application que je voudrais mettre en place me servirais à gérer des modèles de fonctions diverses (ex: créer/écrire dans un fichier texte) et ainsi pouvoir en quelques cliques
importer du code que j'ai déjà utiliser...

Avis aux intéressés qui voudraient me donner un coup de main, voici mon code :

Une fenêtre, un bouton, un combo et un libellé

Dans l'initialisation du projet :
geIdTXT est un entier
geNbrTitreFen est un entier = 0


Dans l'initialisation de la fenêtre :
CONSTANT
	CF_TEXT = 1
	WM_SETTEXT = 12
FIN

hStrPtr est un entier sur 4 octets
lLength est un entier sur 4 octets
sBuffer est une chaîne

RetourFonction est un booléen
lpEnumFunc est un entier = &EnumWindowsProc
lParam est un entier

geIdTXT = fOuvre("C:\Handles.txt", foCréation)

RetourFonction=API("USER32","EnumWindows",lpEnumFunc,lParam)


Dans la fermeture de la fenêtre :
fFerme(geIdTXT)


Dans le clic du bouton :
leTmpHandle est un entier = Val(ExtraitChaîne(Combo1..ValeurAffichée,1))

hStrPtr = API("user32", "OpenClipboard", leTmpHandle)

hStrPtr = API("user32", "GetClipboardData", CF_TEXT)

SI hStrPtr <> 0 ALORS
	lLength = API("kernel32", "lstrlen", hStrPtr)
	SI lLength <> 0 ALORS
		sBuffer = Complète("", lLength)
		API("kernel32", "RtlMoveMemory", &sBuffer, hStrPtr, lLength)
	FIN
FIN

lNotepadHwnd est un entier sur 4 octets
lNotepadEdit est un entier sur 4 octets
lcNomFen est un chaîne = ExtraitChaîne(Combo1..ValeurAffichée,3)


API("user32", "CloseClipboard")
////info(lcNomFen)
leTest est un entier sur 4 octets = 0
lNotepadHwnd = API("user32", "FindWindowA", 0, lcNomFen)
lNotepadEdit = API("user32", "FindWindowExA", lNotepadHwnd, 0, "Edit", 0)

SendMessage(lNotepadEdit, WM_SETTEXT, 1024, &sBuffer)


Dans les procédures globales :
PROCEDURE EnumWindowsProc(hwnd est un entier sur 4 octets, lParam est un entier sur 4 octets)
sSave est une chaîne
Ret est un entier sur 4 octets

Ret = API("USER32", "GetWindowTextLengthA", hwnd)

SI Ret <> 0 ALORS
	geNbrTitreFen += 1
	Fenêtre1.Libellé1 = "Nombre de titres de fenêtres non vide : " + geNbrTitreFen
	////info("ret = " + ret)
	sSave = Complète("", Ret, " ")
	API("USER32", "GetWindowTextA", hwnd, sSave, Ret + 1)
	SI sSave <> 0 ET sSave <> "" ALORS
		////fEcritLigne(geIdTXT, "Handle : " + hwnd + tab + "WindowText : " + sSave)
		fEcritLigne(geIdTXT, hwnd + TAB + TAB + sSave)	
		ListeAjoute(Fenêtre1.Combo1, hwnd + TAB + TAB + sSave)
	FIN
FIN

RENVOYER Vrai


C'est pas super propre mais c'est un début... alors merci d'avance pour les conseils et les suggestions

il_a_ri

Contribution le : 08/12/2004 20:03
Créer un fichier PDF de la contribution Imprimer


Re: Liste des fenêtres ouvertes
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Bien, juste pour mes deux sous... pourquoi ne pas produite alors un HF avec un mémo texte contenant des Procédure externalisées ?

Ou enfin, pourquoi ne pas travailer sur une collection de ces fonctions dans une classe, un composant, etc. ?

Pour l'énumération des fenêtre non WinDev... penser à la fonction WLangage ResHandleFen = SysFenHandle("WinDev") qui simplifiera le code pré-cité.

Contribution le : 09/12/2004 08:28
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: Liste des fenêtres ouvertes
Stagiaire WDF
Inscrit:
29/03/2004 16:43
De Canada
Post(s): 29
Merci pour les suggestions mais voici mes explications :

Citation :

R&B a écrit :
Bien, juste pour mes deux sous... pourquoi ne pas produite alors un HF avec un mémo texte contenant des Procédure externalisées ?

Ou enfin, pourquoi ne pas travailer sur une collection de ces fonctions dans une classe, un composant, etc. ?


Et bien pour le fichier HF pas de problème, seulement ce n'est pas nécessairement du code fixe donc la compilation à la volé ne me semble pas appropriée pour le moment.

Pour ce qui est d'un classe ou d'un composant, c'est pour la même raison que mentionnée plus haut. C'est juste un modèle de "mon code" que je voudrais pouvoir transporté entre mon petit programme de gestion (qui pourrais également me servir de base de connaissances) et le code du projet dans lequel je veux avoir ce code.

Citation :

R&B a écrit :
Pour l'énumération des fenêtre non WinDev... penser à la fonction WLangage ResHandleFen = SysFenHandle("WinDev") qui simplifiera le code pré-cité.


Lorsqu'on connait le nom exact de la fenêtre (Comme indiqué dans l'aide)ca va mais si pour une raison ou une autre de désire l'envoyer dans un fenêtre Word ou autre... ainsi de cette façon je peux choisr la fenêtre dont j'ai besoin à partir d'une liste... par contre je dois admettre que je n'avais pas vu cette fonction dans l'aide...

Merci pour vos commentaires R&B

il_a_ri

Contribution le : 09/12/2004 16:09
Créer un fichier PDF de la contribution Imprimer


Re: Liste des fenêtres ouvertes
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
seulement ce n'est pas nécessairement du code fixe

Précisément, si le code est généré par programmation, la compilation "à la volée" est utile... Mais si vous avez trouvé votre bonheur...

Contribution le : 09/12/2004 16:17
_________________
R&B
Contact, CV.
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