64.网游逆向分析与插件开发-游戏增加自动化助手接口-优化自动助手与游戏焦点的切换

内容来源于:易道云信息技术研究院VIP课

上一个内容:自动化助手UI与游戏菜单的对接-CSDN博客

码云地址(master分支):https://gitee.com/dye_your_fingers/sro_-ex.git

码云版本号:617ac3477ef18273fb9cc281be3c04052304b965

代码下载地址,在 SRO_EX 目录下,文件名为:SRO_Ex-优化自动助手与游戏焦点的切换.zip

链接:https://pan.baidu.com/s/1W-JpUcGOWbSJmMdmtMzYZg

提取码:q9n5

--来自百度网盘超级会员V4的分享

HOOK引擎,文件名为:黑兔sdk.zip

链接:https://pan.baidu.com/s/1IB-Zs6hi3yU8LC2f-8hIEw

提取码:78h8

--来自百度网盘超级会员V4的分享

自动化助手UI与游戏菜单的对接-CSDN博客 它的代码为基础进行修改

图1:首先给处理窗体关闭时不调用UIShow函数问题,给窗口添加一个 WM_CLOSE 消息处理函数

修改窗口标题:

删除无用组件:

搞完下方的代码就会流畅很多了(SetFocus函数)

CUI.cpp文件的修改,新加 OnClose函数,修改了OnInitDialog函数、UIShow,OnClose函数是通过MFC添加的,如图1

cpp 复制代码
// CUI.cpp: 实现文件
//

#include "pch.h"
#include "htdMfcDll.h"
#include "CUI.h"
#include "afxdialogex.h"


// CUI 对话框

IMPLEMENT_DYNAMIC(CUI, CDialogEx)

CUI::CUI(CWnd* pParent /*=nullptr*/)
	: CDialogEx(IDD_MAIN, pParent)
{

}

CUI::~CUI()
{
}

void CUI::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_TAB1, mTab);
}

BOOL CUI::OnInitDialog()
{
	CDialogEx::OnInitDialog();
	
	InstallPage(new CUIWnd_0(), IDD_PAGE_0, L"基本", TRUE);
	InstallPage(new CUIWnd_1(), IDD_PAGE_1, L"测试");

	SetBackgroundColor(0xFFFFFFFF);

	//PageINJ.Init(wAppPath);
	//PageRAN.SetAppPath(wAppPath);

	return TRUE;
}

bool CUI::InstallPage(CDialogEx* wnd, int IDD_WND, CString&& _Name, BOOL IsShow)
{

	if (CurPage >= MAX_PAGE_MAIN) return false;
	Pages[CurPage] = wnd;
	Pages[CurPage]->Create(IDD_WND, this);
	//Pages[CurPage]->SetParent(this);
	Pages[CurPage]->ShowWindow(IsShow);

	CRect rect;
	mTab.GetClientRect(&rect);
	rect.top += 46;
	rect.left += 20;
	rect.bottom += 5;
	rect.right += 5;
	Pages[CurPage]->MoveWindow(&rect);
	mTab.InsertItem(CurPage, _Name);

	CurPage++;
	return true;
}

BEGIN_MESSAGE_MAP(CUI, CDialogEx)
	ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, &CUI::OnTcnSelchangeTab1)
	ON_WM_CLOSE()
END_MESSAGE_MAP()


// CUI 消息处理程序


void CUI::OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
	// TODO: 在此添加控件通知处理程序代码
	*pResult = 0;
	int n = mTab.GetCurSel();
	for (int i = 0; i < CurPage; i++)
	{
		Pages[i]->ShowWindow(i == n);
	}
}

void CUI::UIShow()
{
	auto hwndClient = ::FindWindow(L"CLIENT", L"SRO_CLIENT");
	::SetParent(this->m_hWnd, hwndClient);
	this->ShowWindow(ShowUI = !ShowUI);
	// 把焦点还给游戏
	::SetFocus(hwndClient);
}


void CUI::OnClose()
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	UIShow();
	// CDialogEx::OnClose();
}
相关推荐
二狗哈11 小时前
制作一款打飞机游戏49:敌人抖动
游戏
Time Famine12 小时前
射击游戏demo11
python·游戏·pygame
染指111017 小时前
25.第二阶段x64游戏实战-分析物品相关数据
汇编·游戏·游戏逆向·x64dbg·x64游戏
web1508541593517 小时前
使用Python开发经典俄罗斯方块游戏
python·游戏·pygame
白露秋481 天前
C——五子棋小游戏
c语言·游戏
wgc2k2 天前
Java游戏服务器开发流水账(5)Spring 在游戏开发中的使用简介
java·服务器·游戏
passionSnail2 天前
《用MATLAB玩转游戏开发》推箱子游戏的MATLAB趣味实现
开发语言·游戏·matlab
海拥✘3 天前
CodeBuddy终极测评:中国版Cursor的开发革命(含安装指南+HTML游戏实战)
前端·游戏·html
monstercl3 天前
游戏资源传输服务器
运维·服务器·游戏
狐凄3 天前
Python实例题:pygame开发打飞机游戏
python·游戏·pygame