中易网

vb能不能获取QQ2011的聊天窗口句柄

答案:5  悬赏:10  
解决时间 2021-04-21 17:17
我要做的就是 向QQ2011聊天窗口发送文本 或者模拟按键(后台,不要SendKeys) SendMessage ,Postmessage都行 我记得好像有一个QQ群发器就做到了,向每个QQ窗口发送消息。 好像是要写内存,如果vb不行,那有那种编程语音可以。
最佳答案
嘿嘿`` 这种程序你想用VB写?真是自讨苦吃~~ 还是用C++吧:)
获取QQ窗口句柄可以调用API函数FindWindow来枚举窗口、原型如下:

HWND FindWindow(LPCSTR lpClassName, // 这里是窗口类名
LPCSTR lpWindowName); // 这里是窗口标题

如果函数执行成功,就返回HWND类型的窗口句柄。

你需要先用Spy++或者是Spy4Win之类的工具获取QQ聊天窗口的窗口类,然后调用FindWindow,把窗口类名赋值给pClassName参数;鉴于QQ聊天窗口的标题不是固定的,所以给lpWindowName参数传入空值NULL即可。然后函数的返回值就是聊天窗口的句柄了。

至于下一个问题——模拟按键、我推荐你用PostMessage而不是SendMessage。原因很简单,前者是异步,后者是同步的。如果用SendMessage,执行完之后才会返回调用代码。PostMessage效率更高。

还有一点需要注意,因为我没亲自实验、说的只是思路而已。
腾讯的程序员也不是白痴,很有可能对聊天窗口做了特殊处理,比如Hook了FindWindow函数,就得不到窗口句柄了。但也可也用Native API~ 总之要灵活应变。祝你好运!
全部回答
C++肯定可以
LS俩SB,难道VB不能用API么?只是获取QQ窗体的句柄谁都可以,但是要枚举该窗体上控件的句柄就难了。目前Spy++无法获取QQ聊天窗口的输入框的句柄,好像那些控件是GDI+的。。。
腾讯可能用HOOK了。。。 用spy++都获取不了聊天窗口句柄,发送文本那更是。。。。。
我也在写轰炸机....通过网页调临时聊天窗口 然后SENDKEY ...感觉有点不给力 vb 调用API可以获取QQ聊天窗口的句柄...只不过句柄是昵称 如果改了备注的话就是备注... '------------------窗口置顶部分声明 Option Explicit Private Const HWND_TOPMOST = -1 Private Const HWND_NOTOPMOST = -2 Private Const SWP_NOMOVE = &H2 Private Const SWP_NOSIZE = &H1 Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long '------------------窗口置顶部分声明结束 Private Declare Function GetForegroundWindow Lib "user32" () As Long Private Declare Function GetWindowText Lib "user32" _ Alias "GetWindowTextA" (ByVal hwnd As Long, _ ByVal lpString As String, ByVal cch As Long) As Long Private Sub Form_Load() Timer1.Interval = 100 Label1.AutoSize = True SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE '置顶 End Sub Private Sub Timer1_Timer() Static CurrentHwnd As Long Dim ForegroundWindowHwnd As Long Dim sText As String * 255 ForegroundWindowHwnd = GetForegroundWindow If ForegroundWindowHwnd = CurrentHwnd Then Exit Sub CurrentHwnd = ForegroundWindowHwnd If CurrentHwnd <> hwnd Then Label1.Caption = Left$(sText, GetWindowText(CurrentHwnd, sText, 255)) Else Label1.Caption = Form1.Caption End If End Sub 上面的代码是 把句柄显示在Lable1上..感觉不把QQ号跟 昵称一一对应的话也没什么用...如果能通过程序把好友的QQ号跟昵称建立一个数据库的话那样写起来就简单多了..... 以前QQ版本的句柄是 ***与***交谈中 通过语句判断的话还是很好写的
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
机械师用圣灵好还是贝尔好呢?
车友汽车美容(泾南路)我想知道这个在什么地方
想知道: 东莞市 东莞塘厦盛发旧货店 在哪
深圳创维集团在深圳的什么地方啊?
佛牌鉴定 谁能帮我看看这个是真的还是假的。
三国志11安完后为什么玩了一次后就不能玩了?
如果人的一生中做错一件事,会另别人嘲笑一辈
谁能给我个性的QQ分组啊
Whose,hospitai,skip,his以上单词的同类词
这是什么字【唒】
在面粉里放泡打粉了还需要放糖吗
告诉我各种饮料的做法
如何申请澳洲旅游签证
请问哪首歌里有这句歌词、
新浪体育报道
推荐资讯
五十岁男人脸上有黑斑是跟喝白酒有关系吗?
DNF平民玩家怎么赚钱最快? 刷图出装备就别说
梅州兴宁的房价现在是多少一平方?
东旭光电科技有限公司福利待遇怎么样,员工对
手机坏了返厂修好了可是东西全没有了,跟新买
麟记商店这个地址在什么地方,我要处理点事
问下大家哪个牌子的运动内衣比较好?
QQ飞车多少级升2级图标
天梭机械表T038430A QKL-BC-49453 这个旋钮不
给小狗起名字 要个性一点的
深圳天安数码城里有哪些公司?
保时洁洗车行我想知道这个在什么地方
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?