windows系统操作类和演示程序(关机,关闭显示器,打开屏幕保护程序,打开光驱等)...

本文介绍了一个用于控制Windows系统的封装类,包括关机、重启、注销、开启屏幕保护、控制显示器状态及光驱开关等功能。该类利用了.NET Framework提供的P/Invoke特性调用了Windows API函数实现上述操作。
/// <summary>
    /// 系统控制类,关机,关闭显示器,打开屏幕保存程序等
    /// </summary>
    public class SystemPowerController
    {
        private const int WM_SYSCOMMAND = 0x112;    //系统消息
        private const int SC_SCREENSAVE = 0xF140;   //启动屏幕保护消息
        private const int SC_MONITORPOWER = 0xF170; //关闭显示器的系统命令
        private static readonly IntPtr HWND_BROADCAST = new IntPtr(0xffff); //广播消息,所有顶级窗体都会接收

        [System.Runtime.InteropServices.DllImport("user32.dll")]
        private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);

        [System.Runtime.InteropServices.DllImport(@"user32.dll", EntryPoint = "ExitWindowsEx", CharSet = System.Runtime.InteropServices.CharSet.Ansi)]
        private static extern int ExitWindowsEx(int uFlags, int dwReserverd);

        [System.Runtime.InteropServices.DllImport("winmm.dll", EntryPoint = "mciSendStringA")]
        private static extern int mciSendString(string lpstrCommand, StringBuilder lpstrReturnString, int uReturnLenght, IntPtr hwndCallback);

        /// <summary>
        /// 显示器操作,打开、关闭、省电状态
        /// </summary>
        /// <param name="power">指示对显示器用何种操作</param>
        public void MonitorPower(MonitorPowerType power)
        {
            SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (int)power);
        }

        /// <summary>
        /// 开启屏幕保护程序
        /// </summary>
        public void ScreenSave()
        {
            SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_SCREENSAVE, 0);
        }

        /// <summary>
        /// 系统操作,注销windows、关机、重启
        /// </summary>
        /// <param name="exit">指示对windows进行何种操作</param>
        public void ExitWindows(ExitWindowsType exit)
        {
            try
            {
                switch (exit)
                {
                    case ExitWindowsType.Exit://注销
                        ExitWindowsEx(0, 0);
                        break;
                    case ExitWindowsType.Off://关机
                        HideShutdownUi(" -s -t 0");
                        break;
                    case ExitWindowsType.Restart://重启
                        HideShutdownUi(" -r -t 0");
                        break;
                }
            }
            catch (Exception)
            {
                throw;
            }
        }

        private void HideShutdownUi(string arguments)
        {
            //声明一个程序信息类
            System.Diagnostics.ProcessStartInfo Info = new System.Diagnostics.ProcessStartInfo();
            //设置外部程序名
            Info.FileName = "Shutdown.exe";
            //设置隐藏窗口
            Info.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            //设置外部程序的启动参数(命令行参数)为test.txt
            Info.Arguments = arguments;
            //设置外部程序工作目录为  C:\
            //Info.WorkingDirectory = "C:\\";
            //声明一个程序类
            System.Diagnostics.Process Proc;
            try
            {
                //
                //启动外部程序
                //
                Proc = System.Diagnostics.Process.Start(Info);
            }
            catch (System.ComponentModel.Win32Exception exc)
            {
                throw exc;
            }
        }

        /// <summary>
        /// 打开或关闭光驱
        /// </summary>
        /// <param name="open">true:打开,false:关闭</param>
        public void CDDriver(bool open)
        {
            if (open)
                mciSendString("set cdaudio door open", null, 0, IntPtr.Zero);
            else
                mciSendString("set cdaudio door closed", null, 0, IntPtr.Zero);
        }
    }

    /// <summary>
    /// 显示器操作枚举
    /// </summary>
    public enum MonitorPowerType
    {
        /// <summary>
        /// 打开显示器
        /// </summary>
        POWER_ON = -1,
        /// <summary>
        /// 进入省电状态
        /// </summary>
        POWER_SAVE = 1,
        /// <summary>
        /// 关闭显示器
        /// </summary>
        POWER_OFF = 2
    }

    /// <summary>
    /// 系统操作枚举
    /// </summary>
    public enum ExitWindowsType
    {
        /// <summary>
        /// 注销windows
        /// </summary>
        Exit,
        /// <summary>
        /// 关机
        /// </summary>
        Off,
        /// <summary>
        /// 重启系统
        /// </summary>
        Restart
    }

自己在网上查阅的所需资源整理后封装成的windows系统操作类,测试全通过,放心使用。

转载于:https://www.cnblogs.com/wishFreedom/p/3205803.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值