zoukankan      html  css  js  c++  java
  • VC++ chap12 hook 和 数据库访问

    Lesson 20  hook 和 数据库访问

    20.1 HOOK 编程

    20.1.1 基本知识

    1,将特殊消息屏蔽,安装一个HOOK过程,称为钩子过程。

    2,操作系统在传递消息时,将我们感兴趣的消息先传递给hook过程,在此函数中进行检查,然后决定是否放行该消息。

    3,安装钩子过程

    Setwindowshookex

    20.1.2进程内钩子

    1,安装鼠标钩子

    _1, 定义相应的鼠标钩子过程

    LRESULT CALLBACK MouseProc(

      int nCode,      // hook code

      WPARAM wParam,  // message identifier

      LPARAM lParam   // mouse coordinates

    )

    {

    return 1;

    }

    _2,在 OnInitDialog函数中调用

    SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId());

    2,安装键盘钩子

    LRESULT CALLBACK KeyboardProc(

      int code,       // hook code

      WPARAM wParam,  // virtual-key code

      LPARAM lParam   // keystroke-message information

    )

    { return 1;}

    3,对于键盘,可以只屏蔽某些键,如 VK_SPACE, VK_RETURN

    4,也可以对特定的键操作,只按某个键退出程序。

    _1,因为钩子函数是全局函数,所以发送消息调用全局的sendmessage函数

    ::sendmessage(g_hWnd,WM_CLOSE,0,0);

    因为我们需要目标窗口的句柄,所以定义全部变量 g_hWnd

    OnInitDialog函数中,将其初始化为m_hWnd.

    5, 发送关闭消息后,将已安装的钩子过程移除

    UnhookWindowsHookEx(g_hKeyboard);

  • 相关阅读:
    SQL语句的优化(转载)
    使用经纬度得到位置Geocorder
    android自带下拉刷新SwipeRefreshLayout
    线程池ScheduledThreadPool
    线程池SingleThreadPool
    线程池CachedThreadPool
    线程池FixedThreadPool
    线程池ThreadPoolExecutor
    Bitmap缩放(三)
    Bitmap缩放(二)
  • 原文地址:https://www.cnblogs.com/aprilapril/p/3184377.html
Copyright © 2011-2022 走看看