分享

[更新内容在2楼]实现远程控制电脑挂机的方法

 光之翼123 2011-08-01

[更新内容在2楼]实现远程控制电脑挂机的方法

本帖隐藏的内容需要回复才可以浏览

[更新内容在2楼]将远程控制进行到底!!!


实现远程控制电脑挂机的方法

以前发过一个示例,是关于 用A脚本控制B脚本运行或停止
http://bbs./viewthread.php?tid=24811&highlight=

但后来仔细考虑,想到,一般用一个脚本控制另一个脚本可能用于以下几种情况!

1,同一台电脑内,需要同时运行2个脚本,而2个脚本又必须统一参数
2,同一台电脑内,一个脚本在后台执行挂机脚本,另一个脚本在前台运行,方便我们控制后台脚本的运行和停止,而且可以随时知道里面的挂机情况,比如打了多少经验,现在坐标多少,等(昨天苦读专家区的讨论帖4个小时之久,发现LEO也有此想法,就是在前台弄个小窗口,能知道后台的挂机情况)
3,同一台电脑.安装VMware-workstation虚拟机系统,实现一台电脑挂多个账号!
4,多台电脑,实现1台电脑控制多台电脑进行挂机动作,也可用于远程控制启动挂机,停止挂机,关机等!!

1和2,其实原理比较简单,都在一台电脑里,所以可以用godeden 写的〓〓关于【在多个脚本之间传递数据】的解答(读写“剪贴板”法)〓〓来实现上述功能
http://bbs./viewthread.php?tid=13137&extra=page%3D1
3,虽然是在一台电脑内,但真机和虚拟机之间是不可以用剪贴板来进行通信的!
4,多台电脑,论坛高手stanley0921 按键精灵用最简单的方法实作Client/Server网路控制多台电脑(含原始码分享)可以很好的解决问题!但对于没有学过什么编程语言的人来说,看的真的很吃力....
http://bbs./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 编辑 ]

2006.10.13第2次更新,加入实时鼠标控制

2006.10.13第2次更新,加入实时鼠标控制

更新说明:修正了一个BUG,把等待按键改为检测按键
新增停止运行后,完全控制鼠标功能
BUG说明:因为受控脚本在不停的检测和写入文本,所以,控制端根本无法写入数据。所以将受控脚本写的数据放入另一个文本就可以解决此问题
另,因为新增加一个完全鼠标控制,所以控制端的鼠标记录到所有控制文本的一起
另注意:本人今天在机房测试了一天,发现一个问题:windows自带的ftp不能设置完全控制权限,所以无法实现上述功能。
如果想实现不同网段的控制,那么就必须借助其他的ftp工具,比如Server-U.
如果你硬要用IIS的话,配合telnet使用,应该也能达预期的效果!!
还有就是,除了共享,ftp外,其实还可以搭建一个VPN来实现上述功能。
后记:写完全文,我想到一个小精灵的安全问题。
以前 VBS技术者 写过泡泡堂盗账号脚本,是通过QQ临时会话来实现发送账号密码!
其实,如果别人没开QQ的话,那么这个脚本就会失效!
然而,用写入文本的方法,那就完全可避免这类问题!
如果有人写个某游戏的小精灵,里面加入键盘监控,然后用上述方法。
这样就完全实现盗号了!!


控制脚本

[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=20061013--wx19841231for〖欣﹍簽〗.

[Script]
//#########这个脚本是于控制其他脚本和显示其他脚本运行状态的###########
txta=1
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.0.24\wanxin\s.txt")=0
    VBS set myfile=fso.createtextfile("\\192.168.0.24\wanxin\s.txt")
    //"\\192.168.0.24\wanxin\s.txt"--受控脚本IP\共享文件夹名\文件名..如果使用在一台电脑,请更换成你的路径
    Gosub 写入控制文本
EndIf
Rem 等待发出命令
GetLastKey mingling
Gosub 写入控制文本
Delay 50
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.0.24\wanxin\s.txt",forwriting)
    VBS myfile.writeline("脚本是否运行="&txta)
    VBS myfile.writeline("脚本参数="&txtc)
    VBSCall GetCursorPos(x,y)
    VBS myfile.writeline(x)
    VBS myfile.writeline(y)
    VBS myfile.close
Return 写入控制文本
EndScript
Sub 读取所有参数
    VBS set file=fso.opentextfile("\\192.168.0.24\wanxin\b.txt",forreading)
    txtb=file.readline
    VBS file.close
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=20061013--wx19841231for〖欣﹍簽〗.

[Script]
//#########这个脚本是挂机主程序,受其他脚本控制###########
VBS set fso=CreateObject("Scripting.FileSystemObject")
VBS const forreading=1
VBS const forwriting=2
VBS const forappending=8
Rem 检测参数
Delay 50
Gosub 读取所有参数
If txta=1
    MoveTo kx ky
    Goto 检测参数
ElseIf txta=0
    Gosub 运行主程序
EndIf
Goto 检测参数
EndScript
Sub 运行主程序
    If txtc=0
        Gosub 画圆
    ElseIf txtc=1
        Gosub 屏幕扫描
    EndIf
Return 运行主程序
EndScript
Sub 读取所有参数
    VBS Dim txt(4),Ytxt(4)
    Ytxt(0)="脚本是否运行="
    Ytxt(1)="脚本参数="
    Ytxt(2)=""
    Ytxt(3)=""
    i=0
    VBS set myfile=fso.opentextfile("\\192.168.0.24\wanxin\s.txt",forreading)
    For 4
        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)
    txtc=Mid(txt(1),Instr(txt(1),"=")+1)
    kx=txt(2)
    ky=txt(3)
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 5
        Gosub 反馈信息
        Gosub 检测信息
        n=n+0.03
    EndWhile
Return 画圆
EndScript
Sub 屏幕扫描
    VBS x=100:y=100
    While y<=500
        While x<=500
            MoveTo x y
            Delay 5
            Gosub 反馈信息
            Gosub 检测信息
            VBS x=x+1
        EndWhile
        x=100
        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 反馈信息
    If fso.FileExists("\\192.168.0.24\wanxin\b.txt")=0
        VBS set file=fso.createtextfile("\\192.168.0.24\wanxin\b.txt")
    EndIf
    VBS set file=fso.opentextfile("\\192.168.0.24\wanxin\b.txt",forwriting)
    txtb="当前鼠标位于"&x&","&y&"点"
    VBS file.writeline(txtb)
    VBS file.close
Return 反馈信息
EndScript

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多