EnumDisplayMonitors/ depuis un service Windows - API Win32 - Programmation
Marsh Posté le 01-08-2018 à 19:26:55
Et GetSystemMetrics(SM_CMONITORS) ne fonctionne pas ?
C'est souvent préférable de l'utiliser à la place de EnumDisplayMonitors (si ton but est de compter les moniteurs présents)
Marsh Posté le 02-08-2018 à 23:35:14
Pas uniquement en fait... Mon but est de chopper un handle sur chacun des moniteurs physiques pour pouvoir régler leurs luminosités via la méthode SetMonitorBrightness...
Merci pour ton retour
Marsh Posté le 03-08-2018 à 09:07:39
De toute façon, ma réponse est fausse car GetSystemMetrics() ne fonctionnera pas non plus, car à partir de Windows Server 2008, les services sont exécutés dans la session 0. Avant Windows Server 2008, la session 0 était la session console (la session que tu vois quand tu branches un moniteur directement sur le serveur), ce qui n'est plus le cas depuis Windows Server 2008 (la session 0 isole les services, et les applications sont ouvertes dans les sessions utilisateur). Du coup, sans console, pas d'informations d'écran, ce qui explique ton souci.
Ce que tu peux faire, c'est créer une petite application au démarrage de ta session utilisateur qui va appeler EnumDisplayMonitors(). Dans la callback MONITORENUMPROC que tu transmets à cette fonction, tu vas récupérer le HDC de ton moniteur, puis le transmettre à ton service via un named pipe par exemple. Ton service se chargera ensuite d'appeler SetMonitorBrightness() avec le HDC transmis.
Marsh Posté le 03-08-2018 à 12:52:05
Excellente idée
Edit : Je n'aurai peut être pas le temps de le faire, mais si ma méthode bourrin de lancer une app au démarrage de Windows, sans service du tout, ne convient pas, je me lancerai dans cette solution
Marsh Posté le 01-08-2018 à 17:58:44
Bonjour à tous,
Je cherche à utiliser l'API EnumDisplayMonitors depuis un service Windows (sous Windows 10, voire truc un poil plus vieux), mais le hic, c'est que cela ne semble pas fonctionner depuis un service (depuis une appli, ça marche impeccable).
Quelqu'un s'est déjà heurté à ce problème et est parvenu à le régler ?
J'ai tripatouillé le service dans tous les sens : cocher la case "accès au bureau" (ou truc dans le genre), mettre en user ma pomme puis l'administrateur, mais non, pas moyen...
Bon... Si ça se trouve, cette API là fonctionne et c'est une des suivantes qui foirent : GetPhysicalMonitorsFromHMONITOR ou encore SetMonitorBrightness...
En farfouillant sur le web, il y a une notion de session 0, blabla, tout ça... Mais j'avoue ne pas maitriser du tout