zoukankan      html  css  js  c++  java
  • C#调用WinApi关闭电脑屏幕含自动监视有无输入活动检测

      说到这儿啊,我要吐个槽,做程序的,没一个不苦逼的.

      闲话少说,开始吧.有人会说,我系统自带电源管理,我干嘛,还要自己写个程序来控制呢,"大哥,你是知道的,做程序的就爱折腾,要么折腾自己,要么让别人来折腾自己,不爱折腾的程序员不是好程序员".

      首先我们要获取要得到关闭显示器的方法,.net库中虽然没有这个方法,但系统API中肯定是有的三.与非托管代码交互,"System.Runtime.InteropServices"这个命名空间是少不了的三.

      上代码了.

            /// <param name="lParam">2 为关闭显示器,-1则打开显示器 </param>
            [DllImport("user32")]
            public static extern IntPtr SendMessage(IntPtr hWnd, uint wMsg, uint wParam, int lParam);
    
            /// <summary>
            /// 锁定计算机
            /// </summary>
            [DllImport("user32.dll")]
            public static extern void LockWorkStation();
    

      第二步,监视键盘鼠标.Windows共有14种Hooks,每一种类型的Hook可以使应用程序能够监视不同类型的系统消息处理机制.这里只讨论键盘鼠标钩子.

      这一步其实也不难,不就是全局勾子嘛,这个钩子嘛,可不是说人类或动物的屁股哦,简单的说吧,大家都知道Windows是基于消息的一个操作系统而钩子可以用来截获系统中的消息流.爽不爽,想想那些木马盗号软件就知道了.

      注册钩子

    注册钩子
     1 /// <summary>
     2          ///  安装钩子
     3          /// </summary>
     4          /// <param name="idHook">系统钩子类型,14为鼠标钩子,13为键盘钩子</param>
     5          /// <param name="lpfn">钩子回调函数指针,当收到钩子消息时就执行这个回调函数,回调函数有3个参数,不同类型的钩子这3个参数有不同的含义</param>
     6          /// <param name="pInstance">应用程序实例的句柄,标识包含lpfn所指的子程的DLL</param>
     7          /// <param name="threadId">与安装的钩子子程相关联的线程的标识符,如果为0,钩子子程与所有的线程关联,即为全局钩子</param>
     8          /// <returns></returns>
     9          [DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
    10          public static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr pInstance, int threadId);
    11  
    12      /// <summary>
    13      /// 钩子委托声明
    14      /// </summary>
    15      public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);

      

  • 相关阅读:
    Javascript基础知识4
    JavaScript基础知识3
    JavaScript基本知识2
    JavaScript基本知识1
    BFC?来自CSS中的BFC
    创建【哆啦A梦】风格字体
    理解JavaScript函数
    我所了解的BFC
    jQuery
    html
  • 原文地址:https://www.cnblogs.com/jsyb/p/2721711.html
Copyright © 2011-2022 走看看