本帖隐藏的内容需要回复才可以浏览
[更新内容在2楼]将远程控制进行到底!!!
实现远程控制电脑挂机的方法
以前发过一个示例,是关于 用A脚本控制B脚本运行或停止 http://bbs.vrbrothers.com/viewthread.php?tid=24811&highlight=
但后来仔细考虑,想到,一般用一个脚本控制另一个脚本可能用于以下几种情况!
1,同一台电脑内,需要同时运行2个脚本,而2个脚本又必须统一参数 2,同一台电脑内,一个脚本在后台执行挂机脚本,另一个脚本在前台运行,方便我们控制后台脚本的运行和停止,而且可以随时知道里面的挂机情况,比如打了多少经验,现在坐标多少,等(昨天苦读专家区的讨论帖4个小时之久,发现LEO也有此想法,就是在前台弄个小窗口,能知道后台的挂机情况) 3,同一台电脑.安装VMware-workstation虚拟机系统,实现一台电脑挂多个账号! 4,多台电脑,实现1台电脑控制多台电脑进行挂机动作,也可用于远程控制启动挂机,停止挂机,关机等!!
1和2,其实原理比较简单,都在一台电脑里,所以可以用godeden 写的〓〓关于【在多个脚本之间传递数据】的解答(读写“剪贴板”法)〓〓来实现上述功能 http://bbs.vrbrothers.com/viewthread.php?tid=13137&extra=page%3D1 3,虽然是在一台电脑内,但真机和虚拟机之间是不可以用剪贴板来进行通信的! 4,多台电脑,论坛高手stanley0921 写的按键精灵用最简单的方法实作Client/Server网路控制多台电脑(含原始码分享)可以很好的解决问题!但对于没有学过什么编程语言的人来说,看的真的很吃力.... http://bbs.vrbrothers.com/viewthread.php?tid=22676
于是,在LEO让我整理常见的脚本之间通讯的方式的前提下,我开始实践!
其实,以上的1,2,3,4条都可以通过一个统一的方法实现,那就是读写.txt或.ini文件!
同一台电脑下的读写txt和ini,大家应该都会. 多在多台电脑或真机和虚拟机之间的读写可能就会难到一些人了 下面说下多台电脑的思路吧!! 其实,有网络基础的人都知道,网络间的文件是可以共享的,只要你在共享里设置 every one的权限为读写权限,那么多台电脑间读写文件就可以实现了
有人会问,同一网段的用共享,那不同网段的呢?其实只要安装IIS服务,架设一个ftp,然后允许匿名访问,把every one的权限也设置成读写权限,那么,你就能在任何一台电脑控制你家正在挂机的电脑了!!
相信说到这,大家都能明白我的意思了吧?
最后说下,每个系统在安装后都会把所有的盘默认共享出来.所以只要你把文件放在一个盘下,然后用\\127.0.0.1\c$的方法就可以访问了!
如果不知道自己的IP的可以在cmd命令下用 ipconfig 查看IP和网关
如果你是adsl用户,你可以到下载一个花生壳,然后申请一个域名,然后绑定你的ftp服务器就可以了!
下面我以txt为示例写一个互控脚本!
控制脚本--用于控制其他脚本的运行状态,可远程控制其他电脑
[General] Description=控制脚本 BeginHotkey=121 BeginHotkeyMod=0 PauseHotkey=0 PauseHotkeyMod=0 StopHotkey=123 StopHotkeyMod=0 RunOnce=1 EnableWindow= Enable=1 [Repeat] Type=0 Number=1 [CallBack] OnSetup= [Comment] Content=20061012--wx19841231for〖欣﹍簽〗.
[Script] //#########这个脚本是于控制其他脚本和显示其他脚本运行状态的########### txta=1 txtb="当前鼠标位于0,0点" txtc=0 VBS set tsObj = createobject("WScript.Shell") VBS set fso=CreateObject("Scripting.FileSystemObject") VBS const forreading=1 VBS const forwriting=2 VBS const forappending=8 If fso.FileExists("\\192.168.16.2\s\s.txt")=0 VBS set myfile=fso.createtextfile("\\192.168.16.2\s\s.txt") //"\\192.168.16.2\s\s.txt"--受控脚本IP\共享文件夹名\文件名..如果使用在一台电脑,请更换成你的路径 Gosub 写入控制文本 EndIf Rem 等待发出命令 WaitKey mingling If mingling=49 Gosub 开始运行受控脚本 ElseIf mingling=50 Gosub 停止运行受控脚本 ElseIf mingling=51 Gosub 显示受控脚本运行状态 ElseIf mingling=52 Gosub 改变受控脚本运行参数 Else Goto 等待发出命令 EndIf Goto 等待发出命令 EndScript Sub 开始运行受控脚本 Gosub 读取所有参数 txta=0 Gosub 写入控制文本 Return 开始运行受控脚本 EndScript Sub 停止运行受控脚本 Gosub 读取所有参数 txta=1 Gosub 写入控制文本 Return 停止运行受控脚本 EndScript Sub 显示受控脚本运行状态 Gosub 读取所有参数 VBSCall vartxtb=tsObj.Popup(txtb&vbCr&"是否停止运行受控脚本",10,"10秒后窗口自动关闭--控制脚本",65) If vartxtb=1 txta=1 Gosub 写入控制文本 EndIf Return 显示受控脚本运行状态 EndScript Sub 改变受控脚本运行参数 Gosub 读取所有参数 If txtc=0 txtc=1 Else txtc=0 EndIf Gosub 写入控制文本 Return 改变受控脚本运行参数 EndScript Sub 写入控制文本 VBS set myfile=fso.opentextfile("\\192.168.16.2\s\s.txt",forwriting) VBS myfile.writeline("脚本是否运行="&txta) VBS myfile.writeline("脚本运行状态="&txtb) VBS myfile.writeline("脚本参数="&txtc) VBS myfile.close Return 写入控制文本 EndScript Sub 读取所有参数 VBS Dim txt(3),Ytxt(3) Ytxt(0)="脚本是否运行=" Ytxt(1)="脚本运行状态=" Ytxt(2)="脚本参数=" i=0 VBS set myfile=fso.opentextfile("\\192.168.16.2\s\s.txt",forreading) For 3 txtall=0 While txtall=0 VBS txt(i)=myfile.readline txtall=Instr(txt(i),Ytxt(i)) EndWhile i=i+1 EndFor VBS myfile.close txta=Mid(txt(0),Instr(txt(0),"=")+1) txtb=Mid(txt(1),Instr(txt(1),"=")+1) txtc=Mid(txt(2),Instr(txt(2),"=")+1) Return 读取所有参数 EndScript
受控脚本--挂机的主程序,可用于多台电脑
[General] Description=受控脚本 BeginHotkey=122 BeginHotkeyMod=0 PauseHotkey=0 PauseHotkeyMod=0 StopHotkey=123 StopHotkeyMod=0 RunOnce=1 EnableWindow= Enable=1 [Repeat] Type=0 Number=1 [CallBack] OnSetup= [Comment] Content=20061012--wx19841231for〖欣﹍簽〗.
[Script] //#########这个脚本是挂机主程序,受其他脚本控制########### VBS set fso=CreateObject("Scripting.FileSystemObject") VBS const forreading=1 VBS const forwriting=2 VBS const forappending=8 Rem 检测参数 Delay 100
Gosub 读取所有参数 If txta=1 Goto 检测参数 ElseIf txta=0 Gosub 运行主程序 EndIf Goto 检测参数 EndScript Sub 运行主程序 If txtc=0 Gosub 画圆 ElseIf txtc=1 Gosub 屏幕扫描 EndIf Return 运行主程序 EndScript Sub 写入控制文本 VBS set myfile=fso.opentextfile("\\192.168.16.2\s\s.txt",forwriting) VBS myfile.writeline("脚本是否运行="&txta) VBS myfile.writeline("脚本运行状态="&txtb) VBS myfile.writeline("脚本参数="&txtc) VBS myfile.close Return 写入控制文本 EndScript Sub 读取所有参数 VBS Dim txt(3),Ytxt(3) Ytxt(0)="脚本是否运行=" Ytxt(1)="脚本运行状态=" Ytxt(2)="脚本参数=" i=0 VBS set myfile=fso.opentextfile("\\192.168.16.2\s\s.txt",forreading) For 3 txtall=0 While txtall=0 VBS txt(i)=myfile.readline txtall=Instr(txt(i),Ytxt(i)) EndWhile i=i+1 EndFor VBS myfile.close txta=Mid(txt(0),Instr(txt(0),"=")+1) txtb=Mid(txt(1),Instr(txt(1),"=")+1) txtc=Mid(txt(2),Instr(txt(2),"=")+1) Return 读取所有参数 EndScript Sub 画圆 r=300:x0=512:y0=384:x=0:y=0:n=0 While n<3.1415926*2 x=x0+r*cos(n) y=y0-r*sin(n) MoveTo x y Delay 50 Gosub 反馈信息 Gosub 检测信息 n=n+0.03 EndWhile Return 画圆 EndScript Sub 屏幕扫描 Plugin allx=GetSysInfo.GetScreenResolutionX Plugin ally=GetSysInfo.GetScreenResolutionY VBS x=0:y=0 While y<=ally While x<=allx MoveTo x y Delay 50 Gosub 反馈信息 Gosub 检测信息 VBS x=x+1 EndWhile x=0 VBS y=y+1 EndWhile Return 屏幕扫描 EndScript Sub 检测信息 If txtc=0 Gosub 读取所有参数 If txta=1 Goto 检测参数 EndIf If txtc=1 Goto 检测参数 EndIf EndIf If txtc=1 Gosub 读取所有参数 If txta=1 Goto 检测参数 EndIf If txtc=0 Goto 检测参数 EndIf EndIf Return 检测信息 EndScript Sub 反馈信息 txtb="当前鼠标位于"&x&","&y&"点" Gosub 写入控制文本 Return 反馈信息
[ 本帖最后由 wx19841231 于 2006-10-13 06:00 PM 编辑 ]
|