Start
本意是研究一下在浏览器输入 Tencent:// 打开qq的相关功能 这种方式是怎么实现的.然后发现有人找批量加QQ的.....
很早的一个东西,...
测试环境是 Tim2.2.0 QQ没有做测试
运行流程:
第一次运行会生成一个config
把QQ号添加进config中 123456789是QQ号
[QQNum]
123456789=tt,dd,45
如果需要验证的话=tt,dd,45
这里tt,dd,45 分别是三次验证的回答 加几个逗号 程序执行几次验证
原理
原理1
https://www.cnblogs.com/aaa/articles/1350950.html
原理2
强行聊天的代码:
tencent://Message/?Uin=574201314&websiteName=www.oicqzone.com&Menu=yes
强行加好友的代码:
tencent://AddContact/?fromId=30&fromSubId=1&subcmd=all&uin=QQ号
代码解读
1. 由原理1找到真正运行的程序QQTimwp 自己加上相应的param
qqTimWpPath := TQQUtil.getQQTimwp;
因为QQ本神的防修改 无法用按键精灵之类的获取到控件的handle 然后用sendmessage发送/获取数据 这里使用按键模拟, 但是按键的有个缺点, 就是必须设置延迟, 放在配置文件里了, 能快就快, 太快了会导致相当于没按,单位是毫秒
//手动复制粘贴
FClip.AsText := strVertify; {把窗体标题放入剪切板}
for I := 1 to 3 do
begin
Sleep(iSleep);
keybd_event(VK_TAB, MapVirtualKey(VK_TAB, 0), 0, 0); //按下Tap键
keybd_event(VK_TAB, MapVirtualKey(VK_TAB, 0), KEYEVENTF_KEYUP, 0); //放开Tap键
end;
Sleep(iSleep);
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0); //按下Ctrl键
keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), 0, 0); //按下V键
keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), KEYEVENTF_KEYUP, 0); //放开V键
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0); //放开Ctrl键
Sleep(iSleep);
keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0), 0, 0); //按下Enter键
keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0), KEYEVENTF_KEYUP, 0); //放开Enter键
keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0), 0, 0); //按下Enter键
keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0), KEYEVENTF_KEYUP, 0); //放开Enter键
end;
主要是验证很麻烦.. 为了防止qq封号纯用键盘模拟来做
不验证的话(这里就是遍历所有的Handle)
CloseWindow('添加好友')
验证的话
qqWindow := ObtainWindow('添加好友');
配置文件
[Config]
Close=True
Vertify=True
Sleep = 300
[QQNum]
460067960=tt,dd,45
Close 控制这界面的是否验证功能
Sleep 单位是毫秒