• 钩子


    在client.cpp中包含wgdlg.h
    CDLGWG * GameForm = NULL; HWND GameHwnd = NULL; //钩子回调函数 LRESULT CALLBACK GameProc(int nCode,WPARAM wParam,LPARAM lParam) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); PMSG pMsg=(PMSG)lParam; if (pMsg->message==WM_KEYUP) { if (pMsg->wParam==VK_HOME) { if (GameForm==NULL) { GameHwnd = pMsg->hwnd; GameForm=new CDLGWG(); GameForm->Create(IDD_DIALOG_WG); GameForm->ShowWindow(TRUE); } else if (GameForm->IsWindowVisible()) { GameForm->ShowWindow(FALSE); } else { GameForm->ShowWindow(TRUE); } } } return CallNextHookEx(0,nCode,wParam,lParam); } //安装钩子 void StartHook() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); HWND hGame = FindWindow(_T("TianLongBaBu WndClass"),NULL); if (hGame==0) { MessageBox(NULL,_T("未找到游戏"),_T("提示"),NULL); return; } DWORD tid=GetWindowThreadProcessId(hGame,NULL); ::SetWindowsHookEx(WH_GETMESSAGE,GameProc,::GetModuleHandle(_T("GameDll.dll")),tid); } ; GameDll.def : 声明 DLL 的模块参数。 LIBRARY EXPORTS ; 此处可以是显式导出 StartHook //调用钩子处导出函数声明 #pragma comment(lib,"GameDll.lib") _declspec(dllimport) void StartHook();

    //退出时不保证游戏崩溃
    在dll头文件中类的重写属性中添加退出事件

    int CGameDllApp::ExitInstance()

    {  

     if (GameHwnd!=0)

     {   

        delete GameForm;   

        GameForm= NULL;  

    }

     return CWinApp::ExitInstance();

    }

  • 相关阅读:
    我的收藏
    VS2019错误:CS8370 的处理方法
    Win7设置远程访问(免密码)---- Cuba
    【收藏】关于AsposeDLL的使用
    VS Code 离线安装插件(中文包)
    WinCE在启动界面无法进入系统
    WinCE 清除远程连接缓存
    MySQL 创建远程访问用户
    MySQL 命令行(常用)操作数据库
    C# 制作关键字醒目显示控件
  • 原文地址:https://www.cnblogs.com/wumac/p/4222314.html
Copyright © 2020-2023  润新知