Switch ScreenPower

 public class Screen
{
private const uint QUERYESCSUPPORT = 8;
private const uint GETVFRAMEPHYSICAL = 6144;
private const uint GETVFRAMELEN = 6145;
private const uint DBGDRIVERSTAT = 6146;
private const uint SETPOWERMANAGEMENT = 6147;
private const uint GETPOWERMANAGEMENT = 6148;
private const int SHFS_SHOWSTARTICON = 0x0010;
private const int SHFS_HIDESTARTICON = 0x0020;
public static void PowerOff()
{
IntPtr hdc = GetDC(IntPtr.Zero);
uint size = 12;
byte[] vpm = new byte[size];
BitConverter.GetBytes(size).CopyTo(vpm, 0);
BitConverter.GetBytes(0x0001).CopyTo(vpm, 4);
BitConverter.GetBytes((uint)ScreenPowerState.ScreenPowerOff).CopyTo(vpm, 8);
ExtEscapeSet(hdc, SETPOWERMANAGEMENT, size, vpm, 0, IntPtr.Zero);
}

public static void PowerOn()
{
IntPtr hdc = GetDC(IntPtr.Zero);

uint size = 12;
byte[] vpm = new byte[size];

BitConverter.GetBytes(size).CopyTo(vpm, 0);
BitConverter.GetBytes(0x0001).CopyTo(vpm, 4);
BitConverter.GetBytes((uint)ScreenPowerState.ScreenPowerOn).CopyTo(vpm, 8);

ExtEscapeSet(hdc, SETPOWERMANAGEMENT, size, vpm, 0, IntPtr.Zero);
}

[DllImport("coredll", EntryPoint = "ExtEscape")]
private static extern int ExtEscapeSet(
IntPtr hdc,
uint nEscape,
uint cbInput,
byte[] lpszInData,
int cbOutput,
IntPtr lpszOutData
);

[DllImport("coredll")]
private static extern IntPtr GetDC(IntPtr hwnd);
}

public enum ScreenPowerState : uint
{
ScreenPowerOn = 1,
ScreenPowerStandBy,
ScreenPowerSuspend,
ScreenPowerOff
}

留言

這個網誌中的熱門文章

使用VB讀取健保卡基本資料

使用VB讀取自然人評証卡號