#Persistent #NoEnv #SingleInstance Force SetWorkingDir,%A_ScriptDir% Menu,Tray,icon,%A_WorkingDir%picturequnfa.ico,1,0 DetectHiddenWindows,on SetTimer,text_lastingsave,200 ;=========================================================== ;~~~~~~~~~~脚本配置 if FileExist("text.txt") { FileRead,text_out,text.txt } else { FileAppend,我是机器人,text.txt FileRead,text_out,text.txt } ;~~~~~~~~~~ gui代码 ;~ Gui, +AlwaysOnTop Gui,font,s12 Gui, Add, Text,x15 y20, 文本: gui,font Gui,Font,s12 Gui, Add, Edit,r8 w645 x15 y50 vtext_in,%text_out% gui,font,s20 gui,font,cred gui,add,Edit,X80 y5 w130 h40 ,第 个 gui,Font gui,font,s12 Gui, Add, ListView, r8 w360 x300 y225 gMyListView, 群组名称 Loop, %A_WorkingDir%群组*.* { count_2:=1 LV_Add("", A_LoopFileName) } LV_ModifyCol(1) ; 根据内容自动调整每列的大小. gui,font,cred gui,font,s13 gui,add,edit,X300 y500 w360 h30,当前群组中人数为:%count_1%人 gui,add,edit,X300 y450 w360 h30,所选择的群组为%part_in% gui,font gui,font,s12 gui,add,edit,X680 y50 r27 w150 vmember_in,未选择群组 gui,font,s15 gui,add,edit,X300 y540 w360 r1 vpart_new,请输入新的群组名称 gui,add,edit,X300 y575 w360 r1 vpart_rename,请输入修改后的群组名称 Gui,font,s12 Gui Add, Button, x300 y5 w120 h40 greload2,强行终止 Gui Add, Button, x430 y5 w80 h40 gzuozhe,作者 Gui Add, Button, x530 y5 w80 h40 ghelp_txt,帮助 gui,add,button, x15 y225 w270 Disabled,点击开始群发/测试后不要做任何其他操作!`n`n出错时,点击强行终止! gui,font,s25 Gui Add, Button,Default x15 y303 w270 h145 gqunfa,开始群发 gui,font,s20 Gui Add, Button, x15 y450 w270 h80 gceshi,测试 gui,font,s12 Gui Add, Button, x570 y410 w80 h30 g群组库 ,群组库 Gui Add, Button, x300 y410 w70 h30 gpart_delete ,删除群组 Gui Add, Button, x430 y410 w70 h30 ggui_edit1 ,查看名单 Gui Add, Button, x680 y555 w140 h50 gmember ,保存修改 Gui Add, Button, x15 y540 w270 h30 gpart_add ,创建群组→→ Gui Add, Button, x15 y575 w270 h30 gpart_rename ,重命名→→ Menu,helpMenu,add,帮助文件(doc格式),help_doc Menu,helpMenu,add,帮助文件(png格式),help_png Menu,helpMenu,add,帮助文件(txt格式),help_txt Menu,myMenu,add,&作者,zuozhe Menu,myMenu,add,&帮助,:helpMenu Menu,myMenu,add,&重新加载,reload Gui,Menu,myMenu Gui, Show,w675 h610 x0 y0,QQ群发器 ;~ Gui, Show,AutoSize x935,QQ群发器 ;~ Gui, Show,w780 h690 x935,QQ群发器 ;~ Gui, Show,w780 h690 ,QQ群发器 ;~ gui,show,autosize,QQ群发器 a=0 b=0 return GuiClose: ExitApp ;=========================================================== ;~~~~~~~~~~ 按钮标签 reload: { Reload return } reload2: { Pause return } help_doc: Run,%A_WorkingDir%helphelp.doc return help_png: Run,%A_WorkingDir%helphelp.png return help_txt: run,%A_WorkingDir%helphelp.txt return zuozhe: Run,%A_WorkingDir%aboutabout_author.exe return 群组库: Run,%A_WorkingDir%群组 return part_rename: { gui,submit,NoHide FileDelete,%A_WorkingDir%群组%file% FileAppend,%member_in%,%A_WorkingDir%群组%part_rename%.txt Reload return } part_add: { gui,submit,nohide if (part_new==null) { msgbox,未输入群组名称! } else { FileAppend,请填写该群组人员名单并删除本行!,%A_WorkingDir%群组%part_new%.txt MsgBox, 64, 提示, %part_new% 创建成功! Reload } return } part_delete: { gui,submit,NoHide file:=part_in if (file=null) { ToolTip,未选择群组 sleep,800 ToolTip } else { MsgBox, 52, 警告, 确认删除本群组吗?(此操作不可逆!) IfMsgBox,Yes { FileDelete,%A_WorkingDir%群组%file% Reload } else return } return } gui_edit1: { if (a=1) { gui,show,w675 ,QQ群发器 a=0 } else if (a=0) { gui,show,w850 ,QQ群发器 a=1 } return } text_lastingsave: { gui,submit,NoHide FileDelete,text.txt FileAppend,%text_in%,text.txt return } member: { gui,submit,NoHide FileDelete,%A_WorkingDir%群组%file% FileAppend,%member_in%,%A_WorkingDir%群组%file% return } ;=========================================================== ;~ 统计已发送人数 count_real: count2:=count-1 ControlSetText,edit2,第%count2%个,QQ群发器 return ;=========================================================== ;~~~~~~~~~~ 检测列表选择,双击检测 MyListView: { gui,submit,NoHide if A_GuiEvent = DoubleClick { LV_GetText(part_in, A_EventInfo) ; 从行的第一个字段中获取文本. ;~ 更新列表人数 file:=part_in count_1:=1 Loop 600 { FileReadLine,name,%A_WorkingDir%群组%file% , %count_1% if ErrorLevel break count_1+=1 } count_1-=1 ControlSetText,edit4,当前选择的群组为:%part_in%,QQ群发器 ControlSetText,edit7,%part_in%,QQ群发器 ControlSetText,edit3,所选群组中人数为:%count_1%人,QQ群发器 fileread,member_in,%A_WorkingDir%群组%file% ControlSetText,edit5,%member_in%,QQ群发器 ToolTip,你选择了`t%part_in%`t sleep,400 tooltip return } return } ;=========================================================== ;~~~~~~~~~~ 测试稳定性 ceshi: { SetTimer,count_real,101 Gui, Submit,nohide ; 保存用户的输入到每个控件的关联变量中. file:=part_in if (file=null) { ToolTip,未选择群组 sleep,800 ToolTip } else { WinMove,QQ群发器,,0,0 WinShow,QQ WinActivate,QQ IfWinActive,QQ { MsgBox, 68, 提示, 点击确定后,等待 1秒 开始测试! } ifmsgbox,No { Exit } else { sleep,500 count:=1 Loop 600 { FileReadLine, name,%A_WorkingDir%群组%file% , %count% if ErrorLevel break count+=1 IfWinActive,QQ WinActivate SendRaw,%name% Sleep,400 SendInput,{Enter} Sleep,400 if WinExist("添加好友") or WinExist("添加群") { WinClose } sleep,100 SendInput,{Esc} } SendInput,{Esc} count_3:=count-1 MsgBox, 0, 提示, 列表测试已经完成!`n`n总共` %count_3%人 IfMsgBox,Ok Exit } } } ;~~~~~~~~~~ 群发主代码 qunfa: { Gui,Submit,nohide file:=part_in if (file=null) { MsgBox,64,提示,你没有选择群组!请双击选择一个群组。 Exit } else { FileDelete,text.txt FileAppend,%text_in%,text.txt } SetTimer,count_real,101 WinMove,QQ群发器,,0,0 ;~ 激活QQ WinShow,QQ WinActivate,QQ IfWinActive,QQ { MsgBox, 68, 提示, 点击确定 1秒 后自动开始群发,然后不要做任何操作!`n`n出错后,立即点击右上角的X,关闭程序, } ifmsgbox,no { Exit } else { Clipboard=%text_in% ;~ Clipboard:=%text_in%加冒号时无法粘贴出数据 Sleep,600 ;~ !q:: count:=1 Loop 600 { FileReadLine,name,%A_WorkingDir%群组%file% , %count% if ErrorLevel break count+=1 SendRaw,%name% Sleep,400 SendInput,{Enter} Sleep,400 ;~ SendRaw,%text_in% send,^v Sleep,400 SendInput,{Enter} sleep,200 SendInput,{Esc} sleep,100 } sleep,200 SendInput,{Esc} count-=1 MsgBox, 64, 提示, 群发已经完成!`n`n总共发送了`t%count%人 IfMsgBox,Ok { Exit } } }