导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

在程序A中截获程序B的所有输入(键盘、鼠标)??(帮顶有分哦^_^)

angelcool 2005-03-28 06:51:55
怎样能实现:
在程序A中截获程序B的所有输入(键盘、鼠标)??A进行处理后再还给B。
『钩子函数只能截获调用程序的消息,即只能截获程序A的消息。
我希望通过A的调用可以截获B的消息』

各位大侠,救命呀!!
这里卡住下面都无法进行!!
...全文
273 点赞 收藏 29
写回复
29 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
angelcool 2005-03-30
-----------------------
已知窗口句柄,如何得到它的线程ID和进程ID???
-----------------------

GetWindowThreadProcessId()函数可以获取,可是MSDN上说,如果lpdwProcessId的值不为NULL则拷贝线程ID给它。 我要有值还用问它!!晕!
If this parameter is not NULL, GetWindowThreadProcessId copies the identifier of the process to the 32-bit value
返回的ThreadID似乎始终是0值!!
回复
oyljerry 2005-03-30
OpenProcess
回复
angelcool 2005-03-30
OK,搞定!原来把句柄写错了!!
--------------
那ProcessID如何获取呢??
----------------------------
回复
angelcool 2005-03-30
to hyamw(林锋)
我就是这样做的,可它还是一个全局钩子,所有窗口的键盘输入都被截获了。
我用的也是在DLL中
回复
hyamw 2005-03-30
to 楼主:
不好意思,最近比较忙,难得上线。
我做的钩子都是在DLL里面的,没有试过不用DLL的局部钩子,你可以尝试一下,应该是可以吧。

我的安装代码如下:

HWND hWnd = ::FindWindowEx(NULL, NULL,NULL, "test");
DWORD id = GetWindowThreadProcessId(hWnd, NULL);
g_hKeyHook = ::SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc, g_hInstances, id);
回复
lizhenlz 2005-03-30
DING
回复
angelcool 2005-03-30
DING
回复
cooljjyy 2005-03-29
游戏的内挂当然不可能去修改游戏客户端的程序啊。首先获取目标进程的句柄是一定要的,参考一下SDK的例子就行了。然后在目标进程的地址空间分配一段空间,把一段执行代码写进去,然后调用CreateRemoteThread()在目标进程内创建一个线程。前面的那段代码里面就可以做任何你想要做的事情了。用google随便搜索一下CreateRemoteThread应该就能找到不少帮助。
回复
angelcool 2005-03-29
--------------------
一定是要 dll 支持的
--------------------
那岂不是铁定不行!!有没有别的路径可寻?
回复
huwei001982 2005-03-29
一定是要 dll 支持的
回复
rorl 2005-03-29
bd
回复
daydaymissyou 2005-03-29
ding
回复
angelcool 2005-03-29
已知窗口句柄,如何得到它的线程ID和进程ID。
GetWindowThreadProcessId()函数可以获取,可是MSDN上说,如果lpdwProcessId的值不为NULL则拷贝线程ID给它。 我要有值还用问它!!晕!
If this parameter is not NULL, GetWindowThreadProcessId copies the identifier of the process to the 32-bit value
返回的ThreadID似乎始终是0值!!
回复
bobob 2005-03-29
要做全局钩子必须是dll,否则只能钩到自己程序的东西!
回复
angelcool 2005-03-29
大侠......
回复
angelcool 2005-03-28
to cooljjyy(叽叽歪歪)
--------------------
『在目标进程的地址空间加载一份执行代码』
--------------------
你的意思是在目标进程中调用HOOK吗?可是我是不能对目标进程编程的。我只能在另一个程序中告诉HOOK去截获目标进程的消息给我。这样可以实现吗?
回复
cooljjyy 2005-03-28
不用全局hook的话,可以参考类似一些游戏内挂的做法,在目标进程的地址空间加载一份执行代码,然后再接管某些函数。不过还是要使用DLL,但是可以不用全局hook。
回复
angelcool 2005-03-28
to alec626(月吻长河)
因为我还需要再做一些处理,所以只能把钩子放在程序中而不能做成DLL。
回复
月吻长河 2005-03-28
一般的做法就是使用钩子
回复
angelcool 2005-03-28
to long_xing(龙*星)
原来如此!!多谢!!

to hyamw(林锋)
SetWindowsHookEx中将最后一个参数设置为要拦截的进程的ID,我的方法哪里不对??
另:这个需要dll的支持吗?(希望不需要)
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……