论坛: 编程破解 标题: VC下如何得到其它程序的句柄 复制本贴地址    
作者: f [yifanernei]    论坛用户   登录
只知道可以用FindWinows()    WindowFromPoint() Enumwindow()等得到
在以前的文章里也看到用FindWindow()的例程了,可是是VB下的,
我在VC下为什么不能成功得到QQ的句柄呢?用的是FindWindow(NULL,"QQ用户登录");

得到句柄后又有什么函数可以得到程序的其它信息,或者大概都能做哪些操作呢?

一直都有看到API调用,可是仔细想想,真的不明白什么叫API调用,VC下的API调用是什么形式呢?是不是::fun();呢?

我想这些问题应该是很简单的(因为我在网上搜了好久了都没找到答案),可是也一定是很多人都不太明白的(因为太基础, 或者说太理论),哪位哥给说明一下?

地主 发表时间: 04-10-11 01:25

回复: 286 [unique]   版主   登录
http://www.yesky.com/SoftChannel/72342376173010944/20040924/1858273.shtml

B1层 发表时间: 04-10-11 08:58

回复: f [yifanernei]   论坛用户   登录
286老大,我看的就是这一篇,可是在VC下不能找到QQ的句柄呀!!!
谢谢你第一时间的支持!!!!

B2层 发表时间: 04-10-11 09:11

回复: 286 [unique]   版主   登录
不到得到有几种可能。
1 对方的标题看上去是“QQ用户登录”,实际可能是“QQ用户登录    ”(即后面有空格)。
2 对方标题一直变化,或者根本就不是“QQ用户登录”,比如是“OICQ用户登录”。
3 对方对其中标题、输入框等处加了保护。

B3层 发表时间: 04-10-11 12:01

回复: f [yifanernei]   论坛用户   登录
可能是吧,今天我又在CSDN上看到,大家都说新版的QQ
登录框上的东西是画上去的或是说写上去的
直接是得不到的!!郁闷!!!!

现在我只能用WindowFromPoint()得到句柄,再传给一个
变量,再调用其它的。这样的话,还怎么用timer来监视呢?


B4层 发表时间: 04-10-11 17:52

回复: f [yifanernei]   论坛用户   登录
应该可能用EnumWindow()来找到它吧,只是这个函数要用一个回调函数,
实在是搞不明白该怎么用呀,MSDN上又全是英文,理解不了!!!
思路如下:
hwnd =  EnumWindow();
pchild =  GetWindow(hwnd, GW_CHILD);
pstatic = GetWindow(pchild, GW_HWNDNEXT);//通过试验,我已找到第二个
                                          //子窗口是“QQ号码”。然后得到值,
                                          //看和“QQ号码”等不等
……
应该可以的吧!哪位高手具体来讲一下这个函数怎么用呢?

B5层 发表时间: 04-10-12 00:48

回复: f [yifanernei]   论坛用户   登录
同志们,当我今天用hwnd = ::Findwindow("#32770",NULL);时,
本以为不一定会找到QQ的,因为这个窗口类的程序应该有好多的
但是我打开了好多程序,又用::SendMessage(hwnd, WM_CLOSE, 0, 0)时
关闭的总是QQ
我想可能是因为QQ的登录窗口设定成最前窗口,而Findwindow()又是沿Z序自上而下找的原因吧
看起来好象是找到QQ的句柄了, 不过照这样理解的话(如果对的话), 也就是说不一定每一次都找得对了!!!
太晚了,要睡了!!!!

B6层 发表时间: 04-10-12 01:28

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号