您的位置:首页 > 移动开发

HOWTO:Turn Off PDA Display while your application is running.(VB.Net/c#+.Net CF+PPC2003) from CodeProject

2005-08-03 23:09 597 查看
Core code for VB.NET:

using System;
using System.Runtime.InteropServices;

Namespace OpenNETCFnamespace OpenNETCF
{
/// <summary>
/// Summary description for Video.
/// </summary>
public Class Videoclass Video
{
// GDI Escapes for ExtEscape()
private const uint QUERYESCSUPPORT = 8;

// The following are unique to CE
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;

public static void PowerOff()
{
IntPtr hdc = GetDC(IntPtr.Zero);
uint func = SETPOWERMANAGEMENT;

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

//Structure sizestructure size
BitConverter.GetBytes(size).CopyTo(vpm, 0);
//dpms version
BitConverter.GetBytes(0x0001).CopyTo(vpm, 4);
//power state
BitConverter.GetBytes((uint)VideoPowerState.VideoPowerOff).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];

//Structure sizestructure size
BitConverter.GetBytes(size).CopyTo(vpm, 0);
//dpms version
BitConverter.GetBytes(0x0001).CopyTo(vpm, 4);
//power state
BitConverter.GetBytes((uint)VideoPowerState.VideoPowerOn).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 VideoPowerStateenum VideoPowerState : uint
{
VideoPowerOn = 1,
VideoPowerStandBy,
VideoPowerSuspend,
VideoPowerOff
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐