|
Manipuler des fenêtres Windows |
Iniciado por Lomion, 16,jul. 2019 09:56 - 5 respuestas |
| |
| | | |
|
| |
Miembro registrado 48 mensajes Popularité : +1 (1 vote) |
|
Publicado el 16,julio 2019 - 09:56 |
Bonjour,
Je cherche à manipuler les fenêtres de n'importe quelle application Windows en WLangage. Je voudrais notamment pouvoir les déplacer d'un écran à l'autre, les iconiser ou les agrandir, etc. Je parle bien des fenêtres de n'importe quelle appli, pas des fenêtres d'un projet WINDEV Je suppose qu'il faudra probablement passer par l'utilisation de DLL/fonctions Windows, mais lesquelles ? A moins qu'il n'existe des fonctions WLangage pour ça ? Mais je n'en ai pas trouvé dans l'aide...
Une idée ? Lomion |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 946 mensajes Popularité : +102 (110 votes) |
|
Publicado el 16,julio 2019 - 17:38 |
bonjour Pour cela il va falloir envoyer un "message" au "handle" de la fenêtre que vos désirez manipuler exemple: API(user32_dll, "SendMessageA", <handle>, <num message>, Null, Null)
-- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai. Quand un utilisateur vous a aidé, n'oubliez pas de le remercier... |
| |
| |
| | | |
|
| | |
| |
Publicado el 16,julio 2019 - 21:26 |
Le 16/07/2019 à 07:56, Lomion a écrit :
Bonjour, Je cherche à manipuler les fenêtres de n'importe quelle application Windows en WLangage. Je voudrais notamment pouvoir les déplacer d'un écran à l'autre, les iconiser ou les agrandir, etc. Je parle bien des fenêtres de n'importe quelle appli, pas des fenêtres d'un projet WINDEV Je suppose qu'il faudra probablement passer par l'utilisation de DLL/fonctions Windows, mais lesquelles ? A moins qu'il n'existe des fonctions WLangage pour ça ? Mais je n'en ai pas trouvé dans l'aide... Une idée ? Lomion
Bonjour,
Il y a bien longtemps on regardait sur des sites de ce genre http://centrewd.free.fr
PYT |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 48 mensajes Popularité : +1 (1 vote) |
|
Publicado el 17,julio 2019 - 09:02 |
Bonjour, Merci pour la réponse. C'est à peu près ce que je pensais, mais je voulais confirmation qu"il n'y avait pas une fonction WLangage toute faite qui ferait déjà le travail |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 355 mensajes Popularité : +37 (39 votes) |
|
Publicado el 17,julio 2019 - 10:37 |
Bonjour Lomion,
Regarde les fonctions du WLangage "SysFenHandle" pour connaitre le handle de la fenêtre non-Windev concernée puis "SendMessage" ou "PostMessage" pour envoyer des messages à la fenêtre.
Une liste des messages Windows est disponible dans le fichier "C:\Windev 24\Personnel\Externe\Winconst.wl"
Les fonctions et paramètres de chaque message peuvent être trouvés sur le site de Microsoft : https://docs.microsoft.com/fr-fr/windows/win32/winmsg/windowing
Tiens nous au courant de tes résultats. A+
-- Francis MOREL http://www.SoftProtect.fr |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 48 mensajes Popularité : +1 (1 vote) |
|
Publicado el 31,julio 2019 - 17:54 |
Pour ceux que ça intéresse, voici un petit bout de code qui liste les "fenêtres" ouvertes et que j'ai écris à partir de vos indications. J'ai mis "fenêtres" entre guillemets parce qu'il y a pas mal de noms dans le résultat dont je ne sais pas d'où ils viennent. Mais l'essentiel est là !
nLongueurTitre est un entier hWnd est un entier sfTitreFenêtre est une chaîne fixe sur 255
tabTableauFenêtres est un tableau de chaînes
hWnd = AppelDLL32("User32", "GetWindow", Handle(), 2)
TANTQUE hWnd <> Handle() Multitâche() nLongueurTitre = AppelDLL32("User32", "GetWindowTextLengthA", hWnd)
SI AppelDLL32("User32", "GetWindowTextA", hWnd, &sfTitreFenêtre, nLongueurTitre + 1) ALORS
tabTableauFenêtres.Ajoute(sfTitreFenêtre)
FIN hWnd = AppelDLL32("User32", "GetWindow", hWnd, 2) SI hWnd = 0 ALORS SORTIR FIN
TableauSupprimeDoublon(tabTableauFenêtres, tccSansPonctuationNiEspace) TableauTrie(tabTableauFenêtres, ttCroissant)
POUR TOUT sUnTitre de tabTableauFenêtres LISTE_SansNom1.Ajoute(sUnTitre) FIN |
| |
| |
| | | |
|
| | | | |
| | |
|