【API】获取其他程序的窗口处理程序的方法
我在自己程序的窗体上,可以正常使用GetWindowLong获取自己窗体的窗口处理程序(WndProc)。但是,我在获取别的程序的handle后,却无法获取那个程序的窗口处理程序。求高手能有所指点。 --------------------编程问答-------------------- 你需要好好学学Windows操作系统原理。
两个程序原则上是隔离的,不许直接访问内存。
伸手到自己的口袋拿钱包没问题,伸手到别人的口袋拿钱包不应该。 --------------------编程问答-------------------- 需要一个dll去注入其他进程才行,不知道谁有这样的可以供vb调用的dll提供一下,之前找不到,又不会vc,悲剧…… --------------------编程问答-------------------- WIN2000开始就不允许跨进程子类化了.
不过你可以自己实现这个过程,在别人进程里注入一个消息处理函数,然后再远程执行SetWindowLong. --------------------编程问答-------------------- 在网上搜一下DLL注入。 --------------------编程问答-------------------- 这个真不适合小白玩。
善后问题不处理好就玩完了。 --------------------编程问答--------------------
俺真心不是小白,VB搞了7年了 --------------------编程问答--------------------
VB搞了7年仍然可能是菜鸟。只要你学过操作系统等大学课程,立马告别业余身份。
SetWindowLong让你用AddressOf传一个函数过去,这是什么?简单来说,是你函数的入口地址,这个地址是逻辑地址,对于另一个进程,这个地址毫无意义。 --------------------编程问答-------------------- 就算不是初学者,要搞定这个问题也够折腾啊.
我见过别人实现跨进程子类化的方案,是编写一个DLL,然后插入到目标进程中对目标窗口进行子类化,再把所有截获的消息发送回自己的程序,并调用一个回调函数进行处理,处理完毕后又通过消息发回给DLL,完成一次消息处理.
以上过程,就算是老手,也不是随随便便就能写得出来的吧.... --------------------编程问答-------------------- 这个不是指语言的小白,而是操作系统的小白。
补充:VB , 基础类