⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dllshared.cpp

📁 注入呼出外挂窗口
💻 CPP
字号:
// DLLShared.cpp : Defines the initialization routines for the DLL.
//

#include "stdafx.h"

#include "DLLShared.h"
#include "S3DHook.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#pragma comment(linker,"section:Shared,rws")
#pragma data_seg("Shared")
HHOOK g_hhook;
#pragma data_seg()
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam);

BEGIN_MESSAGE_MAP(CDLLSharedApp, CWinApp)
	//{{AFX_MSG_MAP(CDLLSharedApp)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code!
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDLLSharedApp construction

CDLLSharedApp::CDLLSharedApp()
{

	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CDLLSharedApp object
//DLL实例
CDLLSharedApp theApp;
//定义一个全局指针
CS3DHookDlg *pCWndWGMain=NULL;
//回调函数
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
	BOOL bKeyUp = lParam & (1 << 31);
	if (bKeyUp && wParam == VK_F12 && nCode == HC_ACTION) 
	{
		if (pCWndWGMain == NULL)
		{
			AFX_MANAGE_STATE(AfxGetStaticModuleState());

			CWnd *pCWnd = CWnd::GetForegroundWindow();
			char buf[MAX_PATH];
			::GetClassName(pCWnd->GetSafeHwnd(), buf, MAX_PATH);
			//在这里添加要hook的窗口类名例如:计算器 SciCalc
			if (lstrcmpi(buf, "SciCalc") == 0)
			{
				pCWndWGMain = new CS3DHookDlg();
				pCWndWGMain->Create(IDD_S3DHOOKDLG_DIALOG, pCWnd);
				pCWndWGMain->ShowWindow(SW_SHOW);
			}
		}
		else
		{
        //根据当前呼出窗口的状态来显示或隐藏呼出窗口
			pCWndWGMain->ShowWindow(pCWndWGMain->IsWindowVisible() ? SW_HIDE : SW_SHOW);
		}

	}
	return ::CallNextHookEx(g_hhook, nCode, wParam ,lParam);
}
//安装钩子
BOOL WINAPI InstallHook()
{
	if (g_hhook == NULL) 
	{
		g_hhook = ::SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardProc, theApp.m_hInstance, 0);
		if (g_hhook != NULL)
		return TRUE;
	}
	return FALSE;
}
BOOL WINAPI UninstallHook()
{
	g_hhook=NULL;
	return ::UnhookWindowsHookEx(g_hhook);
}
void ShowDlg()
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());
    CDialog dlg(IDD_ABOUTBOX);
	dlg.DoModal();
}
int CDLLSharedApp::ExitInstance() 
{
	// TODO: Add your specialized code here and/or call the base class
	delete pCWndWGMain;
	return CWinApp::ExitInstance();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -