Est-il possible par programme d'allumer / éteindre un moniteur avec du code (C #)?
Réponses
Trop de publicités?Avez-vous même essayer de googler il?
Premier succès: http://www.codeproject.com/KB/cs/Monitor_management_guide.aspx
Je ne suis pas surpris que vous devez utiliser certaines DLL est fourni par Windows.
(J'ai deviné que vous aviez besoin d'une solution C#, parce que c'est la seule étiquette que vous avez appliqué).
EDIT 8 février 2013:
Il a été mentionné que la solution ne fonctionne plus sous Windows 7 fr 8. Eh bien en voici un qui fonctionne très bien sous Windows 7, n'ont pas essayé Windows 8.
Appuyez sur le bouton on/off
Si vous voulez le faire dans le code, apparemment c'est possible dans l'API Win32:
SendMessage hWnd, WM_SYSCOMMAND, SC_MONITORPOWER, param
où WM_SYSCOMMAND = 0x112 et SC_MONITORPOWER = 0xF170 et param indique la mode pour mettre le moniteur en: -1 : sur 2 : off 1 : le mode économie d'énergie
hWnd peut être un handle de la fenêtre - si vous avez une Forme, quelque chose comme cela devrait fonctionner
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam);
public static void Main(string[] args)
{
Form f = new Form();
bool turnOff; //set true if you want to turn off, true if on
SendMessage(f.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, turnOff ? 2 : -1);
}
Remarque je n'ai même pas essayé...
La réponse ci-dessus http://stackoverflow.com/a/713504/636189 convient parfaitement à la désactivation d'un moniteur Windows 7/8, mais pas à son réveil. Sur ces systèmes, vous devrez faire quelque chose de hackish comme ceci (comme indiqué sur http://stackoverflow.com/a/14171736/636189 ):
[DllImport("user32.dll")]
static extern void mouse_event(Int32 dwFlags, Int32 dx, Int32 dy, Int32 dwData, UIntPtr dwExtraInfo);
private const int MOUSEEVENTF_MOVE = 0x0001;
private void Wake(){
mouse_event(MOUSEEVENTF_MOVE, 0, 1, 0, UIntPtr.Zero);
Sleep(40);
mouse_event(MOUSEEVENTF_MOVE, 0, -1, 0, UIntPtr.Zero);
}
Pour qui veut cette fonctionnalité sur une application console :
using System;
using System.Runtime.InteropServices;
using System.Timers;
namespace TurnScreenOFF
{
class Program
{
private static int WM_SYSCOMMAND = 0x0112;
private static uint SC_MONITORPOWER = 0xF170;
public static void Main(string[] args)
{
SendMessage(GetConsoleWindow(), WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)2);
}
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam);
}
}
Adapté et testé. 100% travaillant sous Windows 8.
En fait, il semble que vous puissiez le faire en C #: http://fci-h.blogspot.com/2007/03/turn-off-your-monitor-via-code-c.html . Je n'ai pas testé cela, cependant.