C#qq模拟聊天机器人怎么写?

C#qq模拟聊天机器人怎么写?,第1张

这个程序有几个问题:

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

}

}

?>


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8069445.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存