- 注册时间
- 2011-9-15
- 最后登录
- 2015-10-18
- 在线时间
- 2 小时
编程入门
- 魔鬼币
- 38
|
怎么让易语言窗口(智辅)显示在全屏游戏(天堂1)里面,前提是我已经把DLL注入进游戏进程,智辅的功能没有问题,就是智辅的窗口不能显示在游戏里,窗口置父 最前显示 都不行,求大大门指导,谢谢了。
下面是我找到的资料:天堂内显示智辅界面,其实是很简单的事。因为,无数的智辅都已经成功的这样做了。
基本步骤是
1 挂钩子,检查是否天堂进程
2 以天堂主窗口为父窗口创建智辅窗口, 智辅窗口需要具备窗口属性 WS_EX_CONTROLPARENT
智辅DLL 的代码,大致是这样
// 全局句柄
#pragma data_seg("Share")
HHOOK g_hBKHook = NULL;
HMODULE g_hInst = NULL;
#pragma data_seg()
#pragma comment(linker,"/section:Share,RWS")
BOOL g_bHookProc = -1;
BOOL g_bAutoloaddll = -1;
#define TEST_KEY_DOWN(X)(((X >> 30) & 0x0001) > 0)
#define TEST_ATL_PRESS(X)(((X >> 29) & 0x0001) > 0)
// 天堂主窗口位于当前进程, 则激活智辅
HWND CheckGameProc()
{
HWND hNextWnd =NULL;
while(hNextWnd = FindWindowEx(NULL,hNextWnd, NULL,
“Lineage Windows Client”))
{
DWORD dwTID, dwPID = 0;
dwTID = GetWindowThreadProcessId(hNextWnd, &dwPID);
if(dwPID == GetCurrentProcessId())
{
return hNextWnd;
}
}
}
// 等待热键激活智辅
LRESULT CALLBACK _fbkbProc(int code,
WPARAM wParam,
LPARAM lParam)
{
if(wParam == 'Z' && TEST_ATL_PRESS(lParam) && TEST_KEY_DOWN(lParam))
{
HWND hGameWnd = CheckGameProc();
if(hGameWnd)
CreateWindow….// 创建游戏智辅窗口
}
else if(wParam == 'X'&&
TEST_ATL_PRESS(lParam) && TEST_KEY_DOWN(lParam))
{
DestroyWindow();
// 销毁游戏智辅
}
return CallNextHookEx(g_hBKHook, code,wParam, lParam);
}
// 挂全局键盘钩子
TTHONGHK_API int hook(int nInit)
{
if(nInit&& !g_hBKHook)
{
g_hBKHook = SetWindowsHookEx(WH_KEYBOARD, _fbkbProc,g_hInst, 0);
}
else if(!nInit && g_hBKHook)
{
UnhookWindowsHookEx(g_hBKHook);
g_hBKHook = NULL;
}
else
{
return 0;
}
return (int)g_hBKHook;
}
这个咱看不懂 请大大门看看怎么用易语言实现窗口显示在游戏里,谢谢。 |
|