找回密码
 加入
搜索
查看: 15510|回复: 15

[原创] 一个简单的RTX腾讯通自动回复功能软件

 火.. [复制链接]
发表于 2014-3-8 11:03:40 | 显示全部楼层 |阅读模式
本帖最后由 taxan 于 2014-3-8 11:06 编辑

自己做的一个RTX腾讯通自动回复功能,做的很糙,但是满足自己的要求了。希望对你们有用!
其中“#32770”是用Window Info获取的我的腾讯通窗口类名
"RichEdit20W2"是聊天对话框中的聊天记录的控件ID
"RichEdit20W1"是聊天对话框中的聊天编辑区域的控件ID
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListView.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>


;
; AutoIt Version: 3.0
; Language:       中文
; Platform:       XP
; Author:         Taxan
; Q ·1·Q:8·5196830·
; Description:  自己做的一个RTX腾讯通自动回复功能,做的很糙,但是满足自己的要求了。希望对你们有用!
;                           其中“#32770”是用Window Info获取的我的腾讯通窗口类名
;                                "RichEdit20W2"是聊天对话框中的聊天记录的控件ID
;                                "RichEdit20W1"是聊天对话框中的聊天编辑区域的控件ID


Opt("GUIOnEventMode", 1)  ; 切换为 OnEvent 模式
Dim $co
$co = 0
Dim $ListView[20]
Dim $OnOff
$Onoff = 0
#Region ### START Koda GUI section ### Form=d:\koda\forms\rtx消息自动回复.kxf
$MainForm = GUICreate("RTX消息机器人", 572, 308, 237, 199)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") ; 设置窗口关闭事件
$Group1 = GUICtrlCreateGroup("添加监控内容", 16, 16, 225, 193)
$Label1 = GUICtrlCreateLabel("发送人:", 40, 42, 52, 17)
$Label2 = GUICtrlCreateLabel("关键字:", 40, 81, 52, 17)
$Label3 = GUICtrlCreateLabel("回  复:", 40, 120, 52, 17)
$Sender = GUICtrlCreateInput("Sender", 96, 40, 121, 21)
$KeyWord = GUICtrlCreateInput("KeyWord", 96, 79, 121, 21)
$Received = GUICtrlCreateInput("Received", 96, 118, 121, 21)
$MonitorAdd = GUICtrlCreateButton("添加", 52, 160, 51, 25)
GUICtrlSetOnEvent($MonitorAdd, "OnMonitorAdd") ; 设置添加事件
$MonitorDel = GUICtrlCreateButton("删除", 168, 160, 51, 25)
GUICtrlSetOnEvent($MonitorDel, "OnMonitorDel") ; 设置删除事件
GUICtrlCreateGroup("", -99, -99, 1, 1)
$ListView1 = GUICtrlCreateListView("发送人|关键字|回复", 248, 24, 306, 182)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 100)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 100)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 100)
_GUICtrlListView_JustifyColumn(GUICtrlGetHandle($ListView1), 1, 2)
_GUICtrlListView_JustifyColumn(GUICtrlGetHandle($ListView1), 2, 2)
$ListView1_1= GUICtrlCreateListViewItem("管理|通知|收到", $ListView1)
$ListView1_2 = GUICtrlCreateListViewItem("葫芦岛|通知|收到", $ListView1)
$Start = GUICtrlCreateButton("监听", 184, 240, 75, 25)
GUICtrlSetOnEvent($Start, "OnStart")        ; 设置开始事件
$Stop = GUICtrlCreateButton("停止", 296, 240, 75, 25)
GUICtrlSetOnEvent($Stop, "OnStop")                ; 设置停止事件
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
   Sleep(5000)
   If $Onoff = 1 Then
          MonitorStart()
   EndIf
WEnd

Func CLOSEClicked()
    Exit
EndFunc

Func OnMonitorAdd ()
   $ListView[$co] = GUICtrlCreateListViewItem(GUICtrlRead($Sender) & "|" & GUICtrlRead($KeyWord) & "|" & GUICtrlRead($Received), $ListView1)
   $co = $co + 1
EndFunc

Func OnMonitorDel()
   If GUICtrlDelete(GUICtrlRead ($ListView1 )) = 1 Then
          $co = $co - 1
   EndIf
EndFunc

Func OnStart()
   $Onoff = 1
EndFunc

Func OnStop()
   $Onoff = 0
EndFunc


Func MonitorStart()
          Send("^!x")
          $Compare = GetSender($ListView1_1)
          If $Compare[0] = 4 Then
                 ;监控内容
                 MonitorExe($Compare) ;执行监控
          EndIf
          $Compare = GetSender($ListView1_2)
          If $Compare[0] = 4 Then
                 ;监控内容
                 MonitorExe($Compare) ;执行监控
          EndIf
          For $i = 0 to 19
                 $Compare = GetSender($ListView[$i])
                 If $Compare[0] = 4 Then
                 ;监控内容
                 MonitorExe($Compare) ;执行监控
                 EndIf
          Next
EndFunc

Func GetSender($a)  ;获取ListViewItem的发送者 $a为ListViewItem的ID
   ;$str[1]为Sender
   ;$str[2]为KeyWord
   ;$str[3]为Received
      Local $str
          $str = GUICtrlRead($a)
          ;$str = StringSplit(StringReplace($str, "\n","|"),"|")
          $str = StringSplit($str,"|")
          Return $str
   EndFunc

Func MonitorExe($b) ;执行监控

$win_list = WinList("[REGEXPCLASS:#32770]")
If $win_list[0][0] <> 0 Then
   for $i = 1 to $win_list[0][0]
          If StringRight ( $win_list[$i][0], 6) ="RTX 会话" Then
                 $title = _WinAPI_GetWindowText($win_list[$i][1])
                 WinActivate($title, "")
                 $text = ControlGetText ($title, "", "RichEdit20W2")  ;RichEdit20W2 聊天记录框的控件名,$text为消息内容
                 If @error <> 1 Then
                        ;这里填加比较,是否有Sender发送KeyWord消息,为了避免漏接收,这里只要含有Sender和KeyWord通认为是有消息
                        ;
                        If StringInStr($text,$b[1]) > 0 Then
                           $text_delSpace = StringStripWS($text,8)
                           If StringInStr($text_delSpace,$b[2]) > 0 Then
                                  ControlSend ( $title , "" , "RichEdit20W1",$b[3] & "!S" & "!C")
                           EndIf
                        EndIf
                 EndIf
          EndIf
   Next
EndIf

EndFunc

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2014-3-8 12:09:09 | 显示全部楼层
来支持一下。。。。。
发表于 2014-3-8 19:22:04 | 显示全部楼层
支持一下樓主,下載看一下。
发表于 2014-3-13 13:50:07 | 显示全部楼层
表示没什么用!
发表于 2014-3-14 12:07:04 | 显示全部楼层
这个和腾讯通自带的自动回复有什么区别?不明白,希望楼主解释一下。。。。
发表于 2014-3-19 12:16:09 | 显示全部楼层
能自动聊天?
 楼主| 发表于 2014-3-20 13:07:18 | 显示全部楼层
回复 6# plutosherry

自动回复只能回复单人的会话,不能自动回复组会话。
 楼主| 发表于 2014-3-20 13:07:37 | 显示全部楼层
能自动聊天?
llllllxllllll 发表于 2014-3-19 12:16



    不能
发表于 2014-3-20 13:19:37 | 显示全部楼层
那就设置腾讯通里面的自带回复功能就ok了啊。没必要专门写个小程序啊
发表于 2014-5-16 13:21:01 | 显示全部楼层
支持一下樓主,下載看一下。  不知道我的金钱够不
发表于 2014-5-16 13:23:07 | 显示全部楼层
提示有病毒怎么回事?
发表于 2014-5-16 13:25:28 | 显示全部楼层
问下这个是什么语言编译的啊,我直接复制代码执行可以么?
发表于 2014-5-16 13:25:30 | 显示全部楼层
问下这个是什么语言编译的啊,我直接复制代码执行可以么?
发表于 2014-5-17 16:33:50 | 显示全部楼层
么语言编译的啊,
发表于 2014-8-14 20:45:08 | 显示全部楼层
用不了啊!!!!!!!!!!!!!!!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-22 20:13 , Processed in 0.101104 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表