Grâce à un code de Francis MOREL sur le forum pcsoft.fr le 02 mai 2006 à
12:36, je peux identifier facilement la résolution des écrans connectés à
l'ordinateur.
Malheureusement, je ne sais pas comment les identifier (écran central, plus
éventuellement écrans droite et gauche).
Quelqu'un saurait-il m'aider dans ce domaine, les fonctions windev (sys...)
ne m'apportant rien d'utile (un sysListeEcran me renvoyant la liste suivante
: \\.\DISPLAY1\Monitor0 Écran Plug-and-Play ; \\.\DISPLAY1\Monitor1 Écran
Plug-and-Play ; \\.\DISPLAY2\Monitor0 Écran Plug-and-Play ;
\\.\DISPLAY2\Monitor01 Écran Plug-and-Play, sur mon poste comportant 1 carte
graphique et 2 écrans.)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Romain PETIT
David Berthemet avait prétendu :
Bonjour,
Grâce à un code de Francis MOREL sur le forum pcsoft.fr le 02 mai 2006 à 12:36, je peux identifier facilement la résolution des écrans connectés à l'ordinateur.
- Tu peux avoir le flag 'écran principal' (attention, pas forcément l'écran central...) - tu peux avoir dans la structure RECT, les coordonnées et tailles de chaque écran. A toi ensuite de programmer pour avoir les positions relatives entre chaque écran.
A+
-- Romain PETIT contact : http://cerbermail.com/?O16kfXOFcq +-+ posté sur Usenet avec MesNews et non depuis un forum web +-+ news:fr.comp.developpement.agl.windev http://www.mesnews.net/ http://fr.wikipedia.org/wiki/Newsgroup
David Berthemet avait prétendu :
Bonjour,
Grâce à un code de Francis MOREL sur le forum pcsoft.fr le 02 mai 2006 à
12:36, je peux identifier facilement la résolution des écrans connectés à
l'ordinateur.
- Tu peux avoir le flag 'écran principal' (attention, pas forcément
l'écran central...)
- tu peux avoir dans la structure RECT, les coordonnées et tailles de
chaque écran.
A toi ensuite de programmer pour avoir les positions relatives entre
chaque écran.
A+
--
Romain PETIT
contact : http://cerbermail.com/?O16kfXOFcq
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Grâce à un code de Francis MOREL sur le forum pcsoft.fr le 02 mai 2006 à 12:36, je peux identifier facilement la résolution des écrans connectés à l'ordinateur.
- Tu peux avoir le flag 'écran principal' (attention, pas forcément l'écran central...) - tu peux avoir dans la structure RECT, les coordonnées et tailles de chaque écran. A toi ensuite de programmer pour avoir les positions relatives entre chaque écran.
A+
-- Romain PETIT contact : http://cerbermail.com/?O16kfXOFcq +-+ posté sur Usenet avec MesNews et non depuis un forum web +-+ news:fr.comp.developpement.agl.windev http://www.mesnews.net/ http://fr.wikipedia.org/wiki/Newsgroup
- Tu peux avoir le flag 'écran principal' (attention, pas forcément l'écran central...) - tu peux avoir dans la structure RECT, les coordonnées et tailles de chaque écran. A toi ensuite de programmer pour avoir les positions relatives entre chaque écran.
Merci pour votre réponse.
J'avais déjà vu cette page et j'ai trouvé quelques codes en vb utilisant cette fonction "GetMonitorInfo", mais j'ai quelques difficulté à comprendre comment transcrire celà en Windev, les API restant pour moi un grand mystère ! Je fait des tests et je mettrais mon code si j'y arrive.
Cordialement,
David Berthemet
"Romain PETIT" <VoirM@Signature.fin> a écrit dans le message de news:
mn.5b0c7d9589a1293b.2248@Signature.fin...
- Tu peux avoir le flag 'écran principal' (attention, pas forcément
l'écran central...)
- tu peux avoir dans la structure RECT, les coordonnées et tailles de
chaque écran.
A toi ensuite de programmer pour avoir les positions relatives entre
chaque écran.
Merci pour votre réponse.
J'avais déjà vu cette page et j'ai trouvé quelques codes en vb utilisant
cette fonction "GetMonitorInfo", mais j'ai quelques difficulté à comprendre
comment transcrire celà en Windev, les API restant pour moi un grand mystère
!
Je fait des tests et je mettrais mon code si j'y arrive.
- Tu peux avoir le flag 'écran principal' (attention, pas forcément l'écran central...) - tu peux avoir dans la structure RECT, les coordonnées et tailles de chaque écran. A toi ensuite de programmer pour avoir les positions relatives entre chaque écran.
Merci pour votre réponse.
J'avais déjà vu cette page et j'ai trouvé quelques codes en vb utilisant cette fonction "GetMonitorInfo", mais j'ai quelques difficulté à comprendre comment transcrire celà en Windev, les API restant pour moi un grand mystère ! Je fait des tests et je mettrais mon code si j'y arrive.
J'avais d�j� vu cette page et j'ai trouv� quelque s codes en vb utilisant cette fonction "GetMonitorInfo", mais j'ai quelques difficult� � comprendre comment transcrire cel� en Windev, les API restant pour moi un gr and myst�re ! Je fait des tests et je mettrais mon code si j'y arrive.
J'avais d�j� vu cette page et j'ai trouv� quelque s codes en vb utilisant
cette fonction "GetMonitorInfo", mais j'ai quelques difficult� � comprendre
comment transcrire cel� en Windev, les API restant pour moi un gr and myst�re
!
Je fait des tests et je mettrais mon code si j'y arrive.
J'avais d�j� vu cette page et j'ai trouv� quelque s codes en vb utilisant cette fonction "GetMonitorInfo", mais j'ai quelques difficult� � comprendre comment transcrire cel� en Windev, les API restant pour moi un gr and myst�re ! Je fait des tests et je mettrais mon code si j'y arrive.
Ayant réussi à trouver une solution à mon problème, je donne ici le code pour ceux que celà pourrait intérresser. J'identifie la résolution des écrans, leur place (grâce aux coordonnées) et la zone utilie de la fenêtre (càd sans la barre de tâche pour l'écran principal).
J'ai créé une procédure récupérant les infos et qui est passée en paramètre lors de l'appel à l'API "EnumDisplayMonitors" dans le code d'initialisation de mon projet (cet api me permet de récupérer le handle de l'écran à passer à l'API "GetMonitorInfoA" qui est contenu dans la procédure. Nota : J'ai mis dans une fenêtre TRACE les infos récupérées pour cet exemple alors que mon code original enregistre ces données dans ma table de configuration.
//Dans le code d'initialisation du projet API("User32.dll","EnumDisplayMonitors",Null,Null,&MonitorEnumProc,Null)
//La procédure callback pour "EnumDisplayMonitors" PROCEDURE MonitorEnumProc(hMonitor est un entier,hdcMonitor,lprcMonitor,LpdwData)
RECT est une structure RectLeft est un entier RectTop est un entier RectRight est un entier RectBottom est un entier FIN
MONITORINFO est une structure cbSize est un entier rcMonitor est un RECT rcWork est un RECT dwFlags est un entier FIN
Tmi est un MONITORINFO Tmi:cbSize = Dimension(Tmi) API("User32.dll","GetMonitorInfoA",hMonitor, &Tmi) SI Tmi:dwFlags = 1 ALORS Trace("Écran principal : ",Tmi:rcMonitor:RectLeft,Tmi:rcMonitor:RectTop,Tmi:rcMonitor:RectRight,Tmi:rcMonitor:RectBottom) Trace("Zone utilisable de l'écran : ",Tmi:rcWork:RectLeft,Tmi:rcWork:RectTop,Tmi:rcWork:RectRight,Tmi:rcWork:RectBottom) SINON Trace("Écran ''secondaire'' : ",Tmi:rcMonitor:RectLeft,Tmi:rcMonitor:RectTop,Tmi:rcMonitor:RectRight,Tmi:rcMonitor:RectBottom) Trace("Zone utilisable de l'écran : ",Tmi:rcWork:RectLeft,Tmi:rcWork:RectTop,Tmi:rcWork:RectRight,Tmi:rcWork:RectBottom) FIN
Je ne sais pas si c'est la meilleure ou la plus simple des solutions, mais mes premiers tests semble dire que tout fonctionne correctement.
Cordialement,
David Berthemet
Bonjour,
Ayant réussi à trouver une solution à mon problème, je donne ici le code
pour ceux que celà pourrait intérresser. J'identifie la résolution des
écrans, leur place (grâce aux coordonnées) et la zone utilie de la fenêtre
(càd sans la barre de tâche pour l'écran principal).
J'ai créé une procédure récupérant les infos et qui est passée en paramètre
lors de l'appel à l'API "EnumDisplayMonitors" dans le code d'initialisation
de mon projet (cet api me permet de récupérer le handle de l'écran à passer
à l'API "GetMonitorInfoA" qui est contenu dans la procédure.
Nota : J'ai mis dans une fenêtre TRACE les infos récupérées pour cet exemple
alors que mon code original enregistre ces données dans ma table de
configuration.
//Dans le code d'initialisation du projet
API("User32.dll","EnumDisplayMonitors",Null,Null,&MonitorEnumProc,Null)
//La procédure callback pour "EnumDisplayMonitors"
PROCEDURE MonitorEnumProc(hMonitor est un
entier,hdcMonitor,lprcMonitor,LpdwData)
RECT est une structure
RectLeft est un entier
RectTop est un entier
RectRight est un entier
RectBottom est un entier
FIN
MONITORINFO est une structure
cbSize est un entier
rcMonitor est un RECT
rcWork est un RECT
dwFlags est un entier
FIN
Tmi est un MONITORINFO
Tmi:cbSize = Dimension(Tmi)
API("User32.dll","GetMonitorInfoA",hMonitor, &Tmi)
SI Tmi:dwFlags = 1 ALORS
Trace("Écran principal :
",Tmi:rcMonitor:RectLeft,Tmi:rcMonitor:RectTop,Tmi:rcMonitor:RectRight,Tmi:rcMonitor:RectBottom)
Trace("Zone utilisable de l'écran :
",Tmi:rcWork:RectLeft,Tmi:rcWork:RectTop,Tmi:rcWork:RectRight,Tmi:rcWork:RectBottom)
SINON
Trace("Écran ''secondaire'' :
",Tmi:rcMonitor:RectLeft,Tmi:rcMonitor:RectTop,Tmi:rcMonitor:RectRight,Tmi:rcMonitor:RectBottom)
Trace("Zone utilisable de l'écran :
",Tmi:rcWork:RectLeft,Tmi:rcWork:RectTop,Tmi:rcWork:RectRight,Tmi:rcWork:RectBottom)
FIN
Je ne sais pas si c'est la meilleure ou la plus simple des solutions, mais
mes premiers tests semble dire que tout fonctionne correctement.
Ayant réussi à trouver une solution à mon problème, je donne ici le code pour ceux que celà pourrait intérresser. J'identifie la résolution des écrans, leur place (grâce aux coordonnées) et la zone utilie de la fenêtre (càd sans la barre de tâche pour l'écran principal).
J'ai créé une procédure récupérant les infos et qui est passée en paramètre lors de l'appel à l'API "EnumDisplayMonitors" dans le code d'initialisation de mon projet (cet api me permet de récupérer le handle de l'écran à passer à l'API "GetMonitorInfoA" qui est contenu dans la procédure. Nota : J'ai mis dans une fenêtre TRACE les infos récupérées pour cet exemple alors que mon code original enregistre ces données dans ma table de configuration.
//Dans le code d'initialisation du projet API("User32.dll","EnumDisplayMonitors",Null,Null,&MonitorEnumProc,Null)
//La procédure callback pour "EnumDisplayMonitors" PROCEDURE MonitorEnumProc(hMonitor est un entier,hdcMonitor,lprcMonitor,LpdwData)
RECT est une structure RectLeft est un entier RectTop est un entier RectRight est un entier RectBottom est un entier FIN
MONITORINFO est une structure cbSize est un entier rcMonitor est un RECT rcWork est un RECT dwFlags est un entier FIN
Tmi est un MONITORINFO Tmi:cbSize = Dimension(Tmi) API("User32.dll","GetMonitorInfoA",hMonitor, &Tmi) SI Tmi:dwFlags = 1 ALORS Trace("Écran principal : ",Tmi:rcMonitor:RectLeft,Tmi:rcMonitor:RectTop,Tmi:rcMonitor:RectRight,Tmi:rcMonitor:RectBottom) Trace("Zone utilisable de l'écran : ",Tmi:rcWork:RectLeft,Tmi:rcWork:RectTop,Tmi:rcWork:RectRight,Tmi:rcWork:RectBottom) SINON Trace("Écran ''secondaire'' : ",Tmi:rcMonitor:RectLeft,Tmi:rcMonitor:RectTop,Tmi:rcMonitor:RectRight,Tmi:rcMonitor:RectBottom) Trace("Zone utilisable de l'écran : ",Tmi:rcWork:RectLeft,Tmi:rcWork:RectTop,Tmi:rcWork:RectRight,Tmi:rcWork:RectBottom) FIN
Je ne sais pas si c'est la meilleure ou la plus simple des solutions, mais mes premiers tests semble dire que tout fonctionne correctement.
Cordialement,
David Berthemet
Thumain Th.
Le Thu, 14 May 2009 12:10:30 +0200, David Berthemet a écrit:
Bonjour,
Ayant réussi à trouver une solution à mon problème, je donne ici le code pour ceux que celà pourrait intérresser. J'identifie la résolution des écrans, leur place (grâce aux coordonnées) et la zone utilie de la
[...]
David Berthemet
Merci
-- TT
Le Thu, 14 May 2009 12:10:30 +0200, David Berthemet
<berthemet.david@neuf.fr> a écrit:
Bonjour,
Ayant réussi à trouver une solution à mon problème, je donne ici le code
pour ceux que celà pourrait intérresser. J'identifie la résolution des
écrans, leur place (grâce aux coordonnées) et la zone utilie de la
Le Thu, 14 May 2009 12:10:30 +0200, David Berthemet a écrit:
Bonjour,
Ayant réussi à trouver une solution à mon problème, je donne ici le code pour ceux que celà pourrait intérresser. J'identifie la résolution des écrans, leur place (grâce aux coordonnées) et la zone utilie de la
[...]
David Berthemet
Merci
-- TT
David Berthemet
"David Berthemet" a écrit dans le message de news:
Bonjour,
Ayant réussi à trouver une solution à mon problème, je donne ici le code pour ceux que celà pourrait intérresser. J'identifie la résolution des écrans, leur place (grâce aux coordonnées) et la zone utile de la fenêtre (càd sans la barre de tâche pour l'écran principal). ...
Après relecture de mon mail, j'ai remarqué que j'ai oublié la dernière de ligne de code dans la procédure. Il faut donc rajouter une ligne contenant l'instruction "RENVOYER VRAI" à la fin de la procédure pour permettre à la procédure de fonctionner correctement et de boucler sur tous les écrans.
Cordialement,
David Berthemet
"David Berthemet" <berthemet.david@neuf.fr> a écrit dans le message de news:
xI6dnfRBdOKGc5bXnZ2dnUVZ8uKdnZ2d@giganews.com...
Bonjour,
Ayant réussi à trouver une solution à mon problème, je donne ici le code
pour ceux que celà pourrait intérresser. J'identifie la résolution des
écrans, leur place (grâce aux coordonnées) et la zone utile de la fenêtre
(càd sans la barre de tâche pour l'écran principal).
...
Après relecture de mon mail, j'ai remarqué que j'ai oublié la dernière de
ligne de code dans la procédure.
Il faut donc rajouter une ligne contenant l'instruction "RENVOYER VRAI" à la
fin de la procédure pour permettre à la procédure de fonctionner
correctement et de boucler sur tous les écrans.
"David Berthemet" a écrit dans le message de news:
Bonjour,
Ayant réussi à trouver une solution à mon problème, je donne ici le code pour ceux que celà pourrait intérresser. J'identifie la résolution des écrans, leur place (grâce aux coordonnées) et la zone utile de la fenêtre (càd sans la barre de tâche pour l'écran principal). ...
Après relecture de mon mail, j'ai remarqué que j'ai oublié la dernière de ligne de code dans la procédure. Il faut donc rajouter une ligne contenant l'instruction "RENVOYER VRAI" à la fin de la procédure pour permettre à la procédure de fonctionner correctement et de boucler sur tous les écrans.