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

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

各位大侠,救命呀!!
这里卡住下面都无法进行!!
...全文
323 29 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
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的支持吗?(希望不需要)
加载更多回复(8)

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧