首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

小弟我这样拿QQ发言栏的句柄为什么不成功

2012-01-18 
我这样拿QQ发言栏的句柄为什么不成功我做了一个QQ小秘的机器人程序,开启QQ后,QQ小秘能够根据对方的发言自

我这样拿QQ发言栏的句柄为什么不成功
我做了一个QQ小秘的机器人程序,开启QQ后,QQ小秘能够根据对方的发言自动作出回复,比QQ自带的自动回复功能要强大一些。

测试的时候,把我现在的QQ昵称改成机器小秘,到另一台电脑上去和我的QQ聊天。

2007-06-27   22:11:24   黑夜里的玫瑰
你好  

2007-06-27   22:11:28   机器小秘
我挺好  

2007-06-27   22:11:30   黑夜里的玫瑰
你好  

2007-06-27   22:11:32   机器小秘
见到你很高兴  

2007-06-27   22:11:36   黑夜里的玫瑰
你是谁啊  

2007-06-27   22:11:40   机器小秘
我是主人的机器人小秘啊  

2007-06-27   22:11:44   黑夜里的玫瑰
到底是谁  

2007-06-27   22:11:46   机器小秘
我是机器人小秘,不过我就不告诉你我是谁  

2007-06-27   22:11:49   黑夜里的玫瑰
呵呵  

2007-06-27   22:11:51   机器小秘
这孩子是不是傻了?一副痴呆的傻笑样子  

2007-06-27   22:11:53   黑夜里的玫瑰
呵呵  

2007-06-27   22:11:57   机器小秘
呵呵  

2007-06-27   22:12:03   黑夜里的玫瑰
你叫什么阿  

2007-06-27   22:12:07   机器小秘
怎么能冒失地问一个淑女的名字呢  

2007-06-27   22:12:14   黑夜里的玫瑰
你叫什么名字  

2007-06-27   22:12:16   机器小秘
就不告诉你我的名字  

2007-06-27   22:12:19   黑夜里的玫瑰
你多大啦  

2007-06-27   22:12:27   机器小秘
讨厌,你怎么随便问女孩子的年龄呢  

2007-06-27   22:12:32   黑夜里的玫瑰
你多大啦  

2007-06-27   22:12:35   机器小秘
我也记不清了,好像从盘古开天辟地,或者上帝说要有光的时候,我就在一边看了  

2007-06-27   22:12:44   黑夜里的玫瑰
靠  

2007-06-27   22:12:47   机器小秘
哎呀,讨厌,居然说脏话!  

2007-06-27   22:12:54   黑夜里的玫瑰
我靠,这都行  

2007-06-27   22:12:56   机器小秘
您刚才的发言我不懂,如果您愿意,可以教给我说话,发送“怎样教你说话”就知道怎样做。  

2007-06-27   22:13:03   黑夜里的玫瑰
我靠  

2007-06-27   22:13:05   机器小秘
别   kao   来   kao   去的。  

2007-06-27   22:13:09   黑夜里的玫瑰
考  

2007-06-27   22:13:10   机器小秘
别   kao   来   kao   去的。  

2007-06-27   22:13:16   黑夜里的玫瑰
妈的  

2007-06-27   22:13:17   机器小秘
说你自己呢?  

2007-06-27   22:13:25   黑夜里的玫瑰
猫扑  

2007-06-27   22:13:27   机器小秘
一个很有名的论坛呢  

2007-06-27   22:13:35   黑夜里的玫瑰
屎  

2007-06-27   22:13:38   机器小秘
好臭  

2007-06-27   22:13:43   黑夜里的玫瑰
狗屎  

2007-06-27   22:13:45   机器小秘
好臭  

2007-06-27   22:13:49   黑夜里的玫瑰
大便  

2007-06-27   22:13:52   机器小秘
你吃  

2007-06-27   22:14:01   黑夜里的玫瑰
我晕  

2007-06-27   22:14:05   机器小秘
倒了~倒了  

2007-06-27   22:14:21   黑夜里的玫瑰
你丫的找抽  

2007-06-27   22:14:23   机器小秘
就你,小样,放马过来  

2007-06-27   22:14:29   黑夜里的玫瑰
滚  

2007-06-27   22:14:31   机器小秘
你滚  

2007-06-27   22:14:39   黑夜里的玫瑰
你是难得还是女的?  

2007-06-27   22:14:41   机器小秘
您刚才的发言我不懂,如果您愿意,可以教给我说话,发送“怎样教你说话”就知道怎样做。  

2007-06-27   22:14:46   黑夜里的玫瑰
你是男的还是女的?  

2007-06-27   22:14:47   机器小秘
我是大美女呢  

2007-06-27   22:14:56   黑夜里的玫瑰
你是MM吗?  

2007-06-27   22:14:57   机器小秘


难道你见过男小秘?  

2007-06-27   22:15:05   黑夜里的玫瑰
该不会是人妖吧  

2007-06-27   22:15:08   机器小秘
啊,你是人妖?  

2007-06-27   22:15:12   黑夜里的玫瑰
靠  

2007-06-27   22:15:15   机器小秘
小朋友,你妈妈没有教过你吗?对淑女说话要讲文明。  

2007-06-27   22:15:21   黑夜里的玫瑰
你好可爱啊  

2007-06-27   22:15:23   机器小秘
你也好  

2007-06-27   22:15:32   黑夜里的玫瑰
好可爱?  

2007-06-27   22:15:34   机器小秘
我是可爱的小宝宝  

2007-06-27   22:15:39   黑夜里的玫瑰
你大爷的  

2007-06-27   22:15:41   机器小秘
一边去  

2007-06-27   22:15:50   黑夜里的玫瑰
你有rpwt  

2007-06-27   22:15:51   机器小秘
你的rp有wt吧  

2007-06-27   22:16:00   黑夜里的玫瑰
你是猪吗?  

2007-06-27   22:16:06   机器小秘
你才是呢

************************************************************
我用下面的代码得到了QQ聊天窗口的句柄赋值给变量Pro_hwnd。
Dim   strName   As   String   *   255
Dim   className   As   String   *   255
'寻找第一个同级窗口
Pro_hwnd   =   GetWindow(hwnd,   GW_HWNDFIRST)
    '当Pro_hwnd不等于零
    Do   While   Pro_hwnd   <>   0
          '获得窗口标题
          GetWindowText   Pro_hwnd,   strName,   255
          GetClassName   Pro_hwnd,   className,   255
          '如果标题包含 "发送消息 "且类名为   #32770
          If   (InStr(strName,   name)   >   0)   And   (InStr(className,   "#32770 ")   >   0)   Then
                '使主窗口在任务栏闪烁
                FlashWindow   Pro_hwnd,   -1
                Exit   Function
          End   If
          Pro_hwnd   =   GetWindow(Pro_hwnd,   GW_HWNDNEXT)
    Loop

QQ的聊天窗体内套着一个类名是#32770的窗体,#32770内套着AfxWnd42这个窗体,AfxWnd42内套着信息和发送信息这两个窗体。我依次找它们。

在Pro_hwnd中找到发送消息窗体的第一个子窗体,类名为     #32770
        Child_Hwnd   =   FindWindowEx(Pro_hwnd,   0,   "#32770 ",   " ")
再找类名为   AfxWnd42的窗口句柄
        Afx_Hwnd   =   FindWindowEx(Child_Hwnd,   0,   "AfxWnd42 ",   " ")
到这里还正确,但再找输入框的窗口句柄就返回0了。
        Edit_Hwnd   =   FindWindowEx(Afx_Hwnd,   0,   "RichEdit20A ",   " ")

我用spy看发言栏的类名明明就是RichEdit20A啊!用spy可以看到句柄。但用上面那条语句却拿不到。怎样才能拿到呢?

临时在程序上加了spy代码,可以用程序上的spy光标拖拽到QQ发言栏得到句柄。也可以凑合着用,算是测试版吧,可以到这里下载看看。
http://219.148.115.72:1006/qqxm.rar

[解决办法]
因为有QQ聊天对话框里很多AfxWnd42类,你只找到第一个,而第一个AfxWnd42类下层没有RichEdit20A,你这样查找试试:

Afx_Hwnd = FindWindowEx(Child_Hwnd, 0, "AfxWnd42 ", " ")
' ' '到这里还正确,但再找输入框的窗口句柄就返回0了。
Edit_Hwnd = FindWindowEx(Afx_Hwnd, 0, "RichEdit20A ", " ")
dim i as integer
do while edit_hwnd=0 and i <100
Afx_Hwnd = FindWindowEx(Child_Hwnd, Afx_Hwnd, "AfxWnd42 ", " ")


Edit_Hwnd = FindWindowEx(Afx_Hwnd, 0, "RichEdit20A ", " ")
i=i+1
loop
debug.print hex(edit_hwnd)

热点排行