
1、QQ聊天窗口的父窗口不是IE,而是桌面。所以IntPtr vHandle = FindWindowEx(vProcess.MainWindowHandle,
IntPtr.Zero, "RichTextBox", null)vHandle肯定返回0,找不到。
2、QQ聊天窗口的文字输入窗口的窗口类名是RichEdit20A,它所处的窗口层次是这样的:桌面/"#32770"“与 XXX 聊天中”/"#32770"""/"AfxWnd42"""(第二个AfxWnd42子窗口)/"RichEdit20A", ""
3、应向QQ聊天窗口的文字输入窗口发送EM_SETTEXTEX消息,来修改其中的内容。
4、在模拟发送键之前,应先调用SetForegroundWindow让QQ聊天窗口的文字输入窗口成为前景窗口。
5、可以模拟Alt+S键实现发送功能:
SendKeys.Send("%S")
逐步解决这些问题,你的程序就可以正常工作了。你会成功的。
QQ聊天机器人(QQ chatterbot)是一个用来模拟人类对话或聊天的程序。“Eliza”和 “Parry”是早期非常著名的聊天机器人。它试图建立这样的程序:至少暂时性地让一个真正的人类认为他们正在和另一个人聊天。qq聊天机器人的PHP原理
<?php
include"http_no_cookie.class.php"
classqq {
public$sid
public$http
public$qq_num
function__construct() {
$this->http =newhttp_no_cookie
}
functionlogin($qq_num,$qq_pwd) {
echo $data=$this->http->get("http://pt.3g.qq.com/")
$action= preg_match("/action=\"(.+)?\"/",$data,$matches)
$action=$matches[1]
$params=array()
$params["login_url"] ="http://pt.3g.qq.com/s?aid=nLogin"
$params["sidtype"] = 1
$params["loginTitle"] ="手机腾讯网"
$params["bid"] = 0
$params["qq"] =$qq_num
$params["pwd"] =$qq_pwd
$params["loginType"] =1
echo$data=$this->http->post($action, http_build_query($params))
if(preg_match("/http:\/\/vc.gtimg.com\//",$data,$matches)){
echo"需要输入验证码"
return0
exit
}
if(preg_match("/密码错误/",$data,$matches)){
echo"密码错误"
return1
exit
}
$action= preg_match("/sid=(.+?)&/",$data,$matches)
$this->sid =$matches[1]
return$this->sid
}
functionsendMsg($to_num,$msg,$sid= 0) {
$sid=$sid?$sid:$this->sid
if(!$sid)
exit("sid值未传入进去")
$params=array()
$params["msg"] =$msg
$params["u"] =$to_num
$params["saveURL"] = 0
$params["do"] ="send"
$params["on"] = 1
$params["aid"] ="发送"
$url="http://q16.3g.qq.com/g/s?sid=".$sid
echo$data=$this->http->post($url, http_build_query($params))
return$data
}
functiongetMsg($qq_num= 0,$sid= 0) {
$qq_num=$qq_num?$qq_num:$this->qq_num
if(!$qq_num)
exit("qq_num值未传入进去")
$sid=$sid?$sid:$this->sid
if(!$sid)
exit("sid值未传入进去")
$url="http://q16.3g.qq.com/g/s?sid=".$sid."&3G_UIN=".$qq_num."&saveURL=0&aid=nqqChat"
$data=$this->http->get($url)
preg_match("/name=\"u\" value=\"(\d+)\"/",$data,$matches)
$result["qq"] =$matches[1]
$data=explode("<form",$data)
$data=$data[0]
preg_match_all("/<p>(.+)?<\/p>/",$data,$matches)
unset($matches[1][0])
$result["content"] =$matches[1]
return$result
}
functionlogout($sid){
$url="http://pt.3g.qq.com/s?sid=".$sid."&aid=nLogout"
echo$url
echo$this->http->get($url)
}
functiongetFriendsList($qq_num= 0,$sid= 0){
$result=array()
$qq_num=$qq_num?$qq_num:$this->qq_num
if(!$qq_num)
exit("qq_num值未传入进去")
$sid=$sid?$sid:$this->sid
if(!$sid)
exit("sid值未传入进去")
$url="http://q16.3g.qq.com/g/s?aid=nqqchatMain&sid=".$sid."&myqq=".$qq_num
while(true){
$i=1
$url.="&p=".$i
$data=$this->http->get($url)
preg_match_all("/u=(.+?)&/",$data,$matches)
foreach($matches[1]as$key=>$value){
$result[]=$value
}
if(count($matches[1])<13)
break
$i++
}
return$result
}
}
<?php
//PHP代码
classhttp_no_cookie {
private$curl
public$user_agent="Mozilla/5.0 (WindowsUWindows NT 5.1en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13"
publicfunctionget($url) {
$this->curl = curl_init()
curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT, 8)
curl_setopt($this->curl, CURLOPT_URL,$url)
curl_setopt($this->curl, CURLOPT_HEADER, 0)
curl_setopt($this->curl, CURLOPT_USERAGENT,$this->user_agent)
curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1)
$data= curl_exec($this->curl)
curl_close($this->curl)
return$data
}
publicfunctionpost($url,$params) {
$this->curl = curl_init()
curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT, 8)
curl_setopt($this->curl, CURLOPT_URL,$url)
curl_setopt($this->curl, CURLOPT_HEADER, 1)
curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, true)
curl_setopt($this->curl, CURLOPT_POST, 1)
curl_setopt($this->curl, CURLOPT_USERAGENT,$this->user_agent)
curl_setopt($this->curl, CURLOPT_POSTFIELDS,$params)
curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1)
$data= curl_exec($this->curl)
curl_close($this->curl)
return$data
}
}
?>
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)