可能在运行一个程序A时,将运行的程序与正在运行的某个程序B冲突。下面用一个CBT钩子实现当一个程序A启动时,关闭与本程序冲突的其它程序B。
1、 首先写一个动态链接库CBTHooks。它实现一个全局CBT钩子监视程序A的启动(实际上是监视程序A中某窗口类的创建)。
2、 创建一个名为TestHook的MFC EXE程序来为系统安装钩子。
CBTHooks:
声明全局变量:
static HHOOK g_hHook = NULL;
static HANDLE g_hModule = NULL;
钩子过程:
LRESULT CALLBACK CbtProc(int nCode, WPARAM wParam, LPARAM lParam)
{
switch (nCode)
{
case HCBT_CREATEWND:
{
HWND hWnd = (HWND)wParam;
LPCBT_CREATEWND pcbt = (LPCBT_CREATEWND)lParam;
LPCREATESTRUCT pcs = pcbt->lpcs;