大家都进来!!!团结就是力量!!!!!!(130分)

  • 主题发起人 主题发起人 killtimeer
  • 开始时间 开始时间
K

killtimeer

Unregistered / Unconfirmed
GUEST, unregistred user!
请教一下,如何实现金山游侠的按*键就能弹出他的修改游戏的"窗口"的功能!!!
最好有源代码,只要能实现 按*键就在游戏中"弹出自已的"窗口"的功能"一样就行了!!!
 
好像是要在系统中定义自己软件的快捷键,没做过,你再查查吧
 
....好像是要在系统中定义自己软件的快捷键,没做过,你再查查吧
对不起,上面的我说得不清楚
我想按*键就在游戏中"弹出自已的"窗口"的功能"一样就行了!!!(外挂)
重点是"弹出自已的"窗口"的功能"的代码,
重点是自已的“窗口”可以在游戏中弹出,好似成为游戏窗口的一部份(最重要的重点)
不是要定义快捷键!(HOOK)

顶一下!!!
 
帮我转成 DELPHI 的就可以了,只的几行VC的代码!!!


下面对钩子回调函数进行改造,以便使我们的"外挂呼出窗口"能够在按F12时呼出
如下:
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
//按F12弹起时呼出外挂
BOOL bKeyUp = lParam & (1 << 31);
if (bKeyUp && wParam == VK_F12 && nCode == HC_ACTION) {
if (pCWndWGMain == NULL)
{
//更改当前有效模块状态到DLL中
//以便正确的读取对话框的资源
AFX_MANAGE_STATE(AfxGetStaticModuleState());
//找到当前的有效激活窗口
CWnd *pCWnd = CWnd::GetForegroundWindow();
//生成CS3DHookDlg类的对象实例
//此处应该生成一个非模态对话框
pCWndWGMain = new CS3DHookDlg();
pCWndWGMain->Create(IDD_S3DHOOK_DIALOG, pCWnd);
}
else
{
//根据当前呼出窗口的状态来显示或隐藏呼出窗口
pCWndWGMain->ShowWindow(pCWndWGMain->IsWindowVisible() ? SW_HIDE : SW_SHOW);
}
}
return ::CallNextHookEx(g_hhook, nCode, wParam ,lParam);
}
 
抛砖引玉吧,
前提:
实现了 CWnd,AFX_MANAGE_STATE,CS3HookDlg 类。

function KeyboardProc(ncode:int;wparam,lparam:longint):long;stdcall;
var
bkeyup:boolean;
//pCWndWGMain:^CS3HookDlg();//这个form类应该是全局的
pCWnd:^CWnd;
begin
bkeyup:=lparm and (1 shl 31);
if ((bkeyup and wparam)=(VK_F12 and ncode)=HC_ACTION)
begin
if (integer(@pCWndWGMain)<=0)then //判断是否存在
begin
AFX_MANAGE_STATE(AfxGetStaticModuleState());
pCWnd=^CWnd.GetForegroundWindow;//cwnd类需要实现 建议直接改为 pcwnd 改为句柄类型
//因为只用到了GetForegroundWindow,api直接实现算了,然后pcwnd=GetForegroundWindow;cs3hookdlg参数也改为句柄
pCWndWGMain=cs3dhookdlg.create(IDD_S3DHOOK_DIALOG, pCWnd);

end
else
begin
if (pCWndWGMain.iswindowvisible()) then
pCWndWGMain.showwindow(sw_hide)
else
pCWndWGMain.showwindow(sw_show)
end;
end;
result:=callnexthookex(g_hhook,ncode,wparam,lparam);
end;
 
多谢,正在试(我水平不够,还看不明 //pCWndWGMain:^CS3HookDlg();//这个form类应该是全局的 这个是什么,所以在试)

是放在DLL中的吗?
 
看了也不知如何试啊,不知你的代码放在DLL里还是在工程中...
可以再明确一点吗?我再加分!!!
 
你们全部完成后,把所有代码发给我,我给500分!
 
这段代码用了很多vc的类:CWnd,AFX_MANAGE_STATE,CS3HookDlg;
要想通过这段代码需要在delphi中实现以上这些类的代码。
应该有简便的方法吧,不过我还没接触过。
//pCWndWGMain:^CS3HookDlg();//这个form类应该是全局的
pCWndWGMain应该是外挂的主界面实例,在别的地方也可以调用,所以
应该是全局的。

建议这段代码不要修改,直接放在dll中算了。
这就变成了调用了dll中界面的问题了,
应该简单点了
 
我完成后给分,再送我全部分,先顶一下!!!
 
AFX_MANAGE_STATE(AfxGetStaticModuleState()); /无法通过这段代码

其实要在游戏中"弹出自已的"窗口"的功能"用HOOK就可以了!

但我真实的目的就是想要自已的"窗口"变成游戏窗口的一部份:弹出自已的"窗口"已有了焦点,但游戏的窗口也要有焦点

(就像一般的 FORM1 中的文本框一样, 当 焦点 在文本框时, FORM1 是激活的,FORM1 随时可接收 KEYDOWN 事件 或 其它事件)


相当于 Windows.SetParent(FORM1.handle, 热血江湖句柄); 这样的功能,但可能是不同的窗体, 所以显示不出来!!!

我看见金山游侠用对话框,我以为用对话框就可以了,但对话框更没用,和我工程中的一般的 FORM1 一样, 当焦点在 FORM1 时, 游戏的窗口虽然是主窗口,但像没了焦点一样!!!
 
无办法了, DELPHI 我不想用了, 大家给个下载 VC ++ 的地址, 我转学 VC ++ 了!!!
基本教程在什么地方下载啊??

还有, VC ++ 中的读写注册表有没有 DELPHI 中的简单(已做好了的单元 TRegistry)
 
我成功了, 但不用到上面的代码!!!(比上面的还省事)
我的分够后, 再给你(baiduan) 300 分, 好吗?
 
后退
顶部