taxan 发表于 2014-3-8 11:03:40

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

本帖最后由 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
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 = 4 Then
               ;监控内容
               MonitorExe($Compare) ;执行监控
          EndIf
          $Compare = GetSender($ListView1_2)
          If $Compare = 4 Then
               ;监控内容
               MonitorExe($Compare) ;执行监控
          EndIf
          For $i = 0 to 19
               $Compare = GetSender($ListView[$i])
               If $Compare = 4 Then
               ;监控内容
               MonitorExe($Compare) ;执行监控
               EndIf
          Next
EndFunc

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

Func MonitorExe($b) ;执行监控

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

EndFunc

jkq920 发表于 2014-3-8 12:09:09

来支持一下。。。。。

zhongzijie 发表于 2014-3-8 19:22:04

支持一下樓主,下載看一下。

yangkaicheng 发表于 2014-3-13 13:50:07

表示没什么用!

plutosherry 发表于 2014-3-14 12:07:04

这个和腾讯通自带的自动回复有什么区别?不明白,希望楼主解释一下。。。。

llllllxllllll 发表于 2014-3-19 12:16:09

能自动聊天?

taxan 发表于 2014-3-20 13:07:18

回复 6# plutosherry

自动回复只能回复单人的会话,不能自动回复组会话。

taxan 发表于 2014-3-20 13:07:37

能自动聊天?
llllllxllllll 发表于 2014-3-19 12:16 http://www.autoitx.com/images/common/back.gif


    不能

plutosherry 发表于 2014-3-20 13:19:37

那就设置腾讯通里面的自带回复功能就ok了啊。没必要专门写个小程序啊

shengxia 发表于 2014-5-16 13:21:01

支持一下樓主,下載看一下。不知道我的金钱够不

shengxia 发表于 2014-5-16 13:23:07

提示有病毒怎么回事?

shengxia 发表于 2014-5-16 13:25:28

问下这个是什么语言编译的啊,我直接复制代码执行可以么?

shengxia 发表于 2014-5-16 13:25:30

问下这个是什么语言编译的啊,我直接复制代码执行可以么?

影子天团 发表于 2014-5-17 16:33:50

么语言编译的啊,

xinde30sandywl 发表于 2014-8-14 20:45:08

用不了啊!!!!!!!!!!!!!!!!
页: [1] 2
查看完整版本: 一个简单的RTX腾讯通自动回复功能软件