首页
社区
课程
招聘
[旧帖] 怎么hWnd1为0,获取不到QQ登录窗口的句柄! 0.00雪花
发表于: 2010-11-9 10:08 10886

[旧帖] 怎么hWnd1为0,获取不到QQ登录窗口的句柄! 0.00雪花

2010-11-9 10:08
10886
Private Sub Command1_Click()
Dim hWnd1 As Long

hWnd1 = FindWindow(Me.hwnd, "QQ2010")

Debug.Print hWnd1
End Sub
怎么hWnd1为0,获取不到QQ登录窗口的句柄!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (18)
雪    币: 109
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
vb的findwindow第一个参数是自身窗口句柄么?
没用过……
不过很久以前我好像用
::FindWindow(_T("TXGuiFundation"),_T("QQ2010"))

找到过
2010-11-9 10:50
0
雪    币: 897
活跃值: (30)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
将 Me.hwnd 改为  0后试试
2010-11-9 11:00
0
雪    币: 109
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼上好多kx啊
2010-11-9 11:02
0
雪    币: 204
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
顶个楼上的  改成0就应该OK拉
2010-11-9 11:03
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
6
1.QQ主窗体一定是存在的

所以  我们这样枚举一下
//         HWND hAll = ::GetDesktopWindow();
//         HWND hCurrent = ::GetNextWindow(hAll, GW_CHILD);
//         char szTittleDbg[256] = {0};
//         char *p = NULL;
//         while (hCurrent != NULL)
//         {
//                 ::GetWindowText(hCurrent, szTittleDbg, 256);
//                 int iStrLength = strlen(szTittleDbg);
//                 if (iStrLength != 0)
//                 {
//                         printf(szTittleDbg);
//                         printf("\r\n");
//                 }
//                 hCurrent = ::GetNextWindow(hCurrent, GW_HWNDNEXT);
//         }

发现里面有一个  QQ2010

然后
        HWND h = FindWindow(0, "QQ2010");
        ShowWindow(h, SW_HIDE);

qq主窗体就藏起来了。。。
。。。
2010-11-9 12:03
0
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
问一下高手,qq没有hook掉自己的窗口吗?find能够找到qq的窗口?
2010-11-9 14:36
0
雪    币: 238
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
试试看 改成0就应该OK拉
2010-11-9 16:31
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
各位高手 一附加QQ就崩溃怎么弄啊
2010-11-11 11:28
0
雪    币: 255
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
支持楼上的…
2010-11-11 14:41
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
odk
11
其实QQ的登录框没有窗体的  qq的登录界面没有实体,主要靠GDI画上去的 ,

之前专心研究过QQ 。。  

枚举是可以找到QQ  但是那个好像也不能算是窗体吧 ,
2010-11-11 17:42
0
雪    币: 109
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
LS的兄台,还是有窗体的吧,只不过是使用了DirectUI技术,用自绘的方式创建的子窗口,所以那些个子窗口都没有句柄而已
2010-11-11 18:50
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习下 帮顶!!
2010-11-13 11:33
0
雪    币: 107
活跃值: (172)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
14
等待解答……
2010-11-13 22:12
0
雪    币: 31
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
我来解释下这个函数: 
 HWND FindWindow   
    (   
         LPCSTR lpClassName,   
         LPCSTR lpWindowName
      );

lpClassName   指向一个类名的字符串或一个可以确定类名字符串的原子。如果这个参数是一个原子,那么它必须是一个在调用此函数前已经通过GlobalAddAtom函数创建好的全局原子。  
如果该参数为null时,将会寻找任何与lpWindowName参数匹配的窗口。  

//说下这个原子,它是一个16位的整数值(atom).
然后得知道原子表:它用来存储原子和字符串。
原子--字符串
原子--字符串
这样我们就可以通过原子来提取字符串。其实原子和句柄差不多。
它的作用是实现信息共享,进程之间传送数据 。
当打开QQ登录窗口的时候,原子表中会有一个这样的表项:
原子--qq类名的字符串
通过查找原子表就可以找到qq类名字,而不用寻找所有的窗口。

lpWindowName   窗口标题。

说下你的那个:hWnd1 = FindWindow(Me.hwnd, "QQ2010")

弟一个参数不为NULL,那么它肯定是个全局原子了,那你是不是没有用GlobalAddAtom函数创建全局原子?

把第一个参数换成NULL,就可以了。可以得到。

还有就是六楼的大哥说的对,我运行了下他写的那个代码,确实得到了QQ登陆框的标题。所以是可以获得窗口句柄的!

就这些了!希望对你有帮助
2010-11-24 23:02
0
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
Private Sub Command1_Click()
Dim hWnd1 As Long

hWnd1 = FindWindow(Me.hwnd, "QQ2010")

Debug.Print hWnd1
End Sub
怎么hWnd1为0,获取不到QQ登录窗口的句柄!

Me.hwnd应该改为空
2010-11-25 02:31
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
2010-11-25 06:38
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
2010-11-25 06:39
0
雪    币: 27
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
类名是文本型,应该用引号引起来,你这样试试
Private Sub Command1_Click()
Dim hWnd1 As Long

hWnd1 = FindWindow("Me.hwnd", "QQ2010")

Debug.Print hWnd1
End Sub
2010-11-25 08:36
0
游客
登录 | 注册 方可回帖
返回
//