Morgen zusammen,
ich habe gestern Abend mal eben eine Remote desktop programm geschrieben, jedoch lässt das Ergebnis etwas zu wünschen übrig. Da die Geschwindigkeit nicht so schnell ist und das übertragen von befehlen auch nicht so gut klappt. Es wäre also schön wenn ihr verbesserungsvorschläge hättet
Server:
Spoiler anzeigen
#include <String.au3>
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <Date.au3>
#include <Misc.au3>
;Variablen
$Serverip = "127.0.0.1"
$Serverip = @IPAddress1
$Resvfile = @ScriptDir & "\recive.jpg"
$Packete = 0
$Bilder = 0
HotKeySet("{ESC}","Raus")
[/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("Server", 1100, 720, 100,10,-1,$WS_EX_TOPMOST)
$picClient = GUICtrlCreatePic("", 0, 0, 960, 600, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$logwin = GUICtrlCreateEdit("Start....",0,610,960,100,0x0040 + 0x00200000)
$button1 = GUICtrlCreateButton("Maus Bewegen",1000,40,80,50)
$button2 = GUICtrlCreateButton("Herrunterfahren",1000,100,80,50)
$button3 = GUICtrlCreateButton("Neu Starten",1000,160,80,50)
$button4 = GUICtrlCreateButton("Nachricht",1000,220,80,50)
GUISetState(@SW_SHOW)
Global $Maus_use = False
[/autoit] [autoit][/autoit] [autoit]TCPStartup()
$server = TCPListen($serverip, 65432, 128)
If $server = -1 Then Exit
slog("IP " & @IPAddress1)
slog("Warte auf Client")
Do
$Verbindung = TCPAccept($server)
Until $Verbindung >= 0
slog("Client verbunden, warte auf Daten")
[/autoit] [autoit][/autoit] [autoit]Local $fso
[/autoit] [autoit][/autoit] [autoit]Global $input_await
[/autoit] [autoit][/autoit] [autoit]Global $last_data
TCPSend($Verbindung, "next|")
While 1
$msg = GUIGetMsg()
Switch $Msg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Button1
$maus_use = Not $maus_use
If $maus_use Then
GUICtrlSetData($Button1,"Maus Aus")
TCPSend($Verbindung, "maus|")
slog("maus")
Else
GUICtrlSetData($Button1,"Maus")
TCPSend($Verbindung, "mausaus|")
slog("mausaus")
EndIf
Case $Button2
TCPSend($Verbindung, "shutdown|")
Case $Button3
TCPSend($Verbindung, "restart|")
Case $Button4
$input_await = True
Global $Input_gui = GUICreate("Input",256,156,-1,-1,$WS_EX_TOPMOST,-1,$Form1)
Global $Input_send = GUICtrlCreateButton("Send", 10,100,236,20)
Global $Input = GUICtrlCreateInput("",10,10,236,80)
GUISetState()
Case Else
If $input_await Then
If $msg = $input_send Then
TCPSend($Verbindung, "message|" & GUICtrlRead($input) & "|")
GUIDelete($input_gui)
EndIf
EndIf
EndSwitch
If $maus_use Then
If _IsPressed(01) Then
TCPSend($Verbindung, "click|")
Else
TCPSend($Verbindung, MouseGetPos(0) & ":" & MouseGetPos(1) & "|")
EndIf
EndIf
$data = TCPRecv($Verbindung,16384);8192,4096
If $data <> "" Then
If StringRight($data,6) = "656E64" Then
FileWrite($resvfile,Binary(StringTrimRight($data,6)))
GUICtrlSetImage($picClient, $resvfile)
FileDelete($resvfile)
TCPSend($Verbindung, "next|")
$Bilder += 1
slog("# Bild fertig '" & $Bilder & "' ... fordere nächstes ")
Sleep(20)
Else
$Packete += 1
slog("# Packet empfangen '" & $Packete & "' #")
FileWrite($resvfile,$data)
EndIf
Else
Sleep(100)
TCPSend($Verbindung, "next|")
EndIf
WEnd
Func slog($logtext)
GUICtrlSetData($logwin,$logtext & @CRLF & GUICtrlRead($logwin))
EndFunc
Func Raus()
TCPCloseSocket($Verbindung)
TCPShutdown()
Exit 0
EndFunc
Client
Spoiler anzeigen
#include <ScreenCapture.au3>
#include <GUIConstants.au3>
_ScreenCapture_SetJPGQuality(100)
[/autoit] [autoit][/autoit] [autoit]HotKeySet("{ESC}","Beenden")
[/autoit] [autoit][/autoit] [autoit]TCPStartup()
$serverip = "127.0.0.1"
If FileExists(@ScriptDir & "/config.ini") Then
$serverip = IniRead(@ScriptDir & "/config.ini","config","Server IP",-1)
Else
$serverip = InputBox("Server IP","Geben sie die Server IP (nur einmal erforderlich ;-)")
IniWrite(@ScriptDir & "/config.ini","config","Server IP",$serverip)
EndIf
$Socket = TCPConnect($serverip, 65432)
[/autoit] [autoit][/autoit] [autoit];TrayTip("Verbindung","Verbindung steht :-)",3)
[/autoit] [autoit][/autoit] [autoit]Local $pic = @ScriptDir & "\start1.jpg"
[/autoit] [autoit][/autoit] [autoit]Global $gui_timer
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]FileDelete($pic)
_ScreenCapture_Capture($pic,0,0,@DesktopWidth,@DesktopHeight)
;$filesize = FileGetSize($pic)
If $Socket <> -1 Then
[/autoit] [autoit][/autoit] [autoit]$weiter = True
While $weiter
Local $Rec = TCPRecv($Socket,1024)
If $rec <> "" Then
Local $splitt = StringSplit(StringLeft($rec,128),"|")
If Not @error Then
For $i = 1 To $splitt[0] Step 1
Switch $splitt[$i]
Case "maus"
; BlockInput(1)
TrayTip("Info","blocked Input",3)
Case "mausaus"
; BlockInput(0)
TrayTip("Info","allow Input",3)
Case "click"
MouseClick("left")
Case "shutdown"
Shutdown(12)
Case "restart"
Shutdown(2)
Case "next"
$data = FileRead($pic)
TCPSend($Socket,$data)
TCPSend($Socket,"end")
$weiter = False
Case "message"
If $i + 1 <= $splitt[0] Then
Global $Info_Gui = GUICreate("Info",@DesktopWidth,@DesktopHeight,0,0,0x80000000,0x00000008)
GUICtrlCreateLabel($splitt[$i+1],0,0,@DesktopWidth,@DesktopHeight,0x01)
GUICtrlSetColor(-1,0xFF0000)
GUICtrlSetFont(-1,40)
GUISetState()
$gui_timer = 20
EndIf
Case Else
If $rec <> "" Then
$pos = StringSplit($splitt[$i],":")
If IsArray($pos) Then
If UBound($pos) > 2 Then MouseMove($pos[1],$pos[2],1)
EndIf
EndIf
EndSwitch
Next
EndIf
EndIf
If $gui_timer > 0 Then
$gui_timer -= 1
If $gui_timer = 1 Then GUIDelete($info_gui)
EndIf
WEnd
Else
ExitLoop
EndIf
WEnd
Func Beenden()
TCPCloseSocket($Socket)
TCPShutdown()
Exit 0
EndFunc
Gruß Moritz