hallo, DjDominik und Ich hatten vor, eine art mini Teamviewer zu bauen. nun haben wir auch schon einen Anfang, aber irgendwie funktioniert das nicht so ganz
Serverscript
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.0.0
Author: DjDominik & Jonathan
Script Function:
Sendet Scrennshots an den Client
#ce ----------------------------------------------------------------------------
#include <ScreenCapture.au3>
#include <TCPSend.au3>
Global $hAcc, $hScreenshot, $hSocket, $hIP
[/autoit] [autoit][/autoit] [autoit]$hScreenshot = _ScreenCapture_Capture("")
_ScreenCapture_SaveImage(@TempDir & "\Screen.jpg", $hScreenshot)
TCPStartup()
[/autoit] [autoit][/autoit] [autoit]$hSocket = TCPListen(@IPAddress1, 2000)
[/autoit] [autoit][/autoit] [autoit]While True = True
$hIP = SocketToIP($hAcc)
_TCPFileSend(@TempDir & "\Screen.jpg", $hIP, 2000)
TCPCloseSocket($hAcc)
WEnd
Func OnAutoItExit()
TCPCloseSocket($hSocket)
EndFunc ;==>OnAutoItExit
Clientscript
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.0.0
Author: DjDominik & Jonathan
Script Function:
Sendet Scrennshots an den Client
#ce ----------------------------------------------------------------------------
#include <ScreenCapture.au3>
#include <TCPSend.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $hIP = InputBox("MiniTV Remote", "Die IP des Servers", "", " M")
If @error Then Exit
TCPConnect($hIP, 2000)
[/autoit] [autoit][/autoit] [autoit]#Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Autoit\MiniTV\BackUp\Gui.kxf
$Gui = GUICreate("MiniTV Remote Screen", 510, 328, 192, 114)
$Pic = GUICtrlCreatePic("", 8, 8, 492, 276, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
$ExitButton = GUICtrlCreateButton("Beenden", 216, 296, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
_TCPFileRecv(@TempDir & "\Recv.jpg", @IPAddress1, 2000)
GUICtrlSetImage($Pic, @TempDir & "\Recv.jpg")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
und wer es nciht hat: TCPSend: (nicht von DjDominik und mir)
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.0.0
Author: DELmE
Script Function:
_TCPFileRecv
Description:
Receives a file being sent over a TCP connection
Parameters:
rFile The name of the file to save to
Ip The Ip to listen on for the file (default = @IPAddress1)
Port The port to listen on for incoming file data (default = 7894)
Return value:
Success _TCPFileRecv returns 1 if the file was successfully received and written
Failure _TCPFileRecv returns 0 if the function failed
#ce ----------------------------------------------------------------------------
Func _TCPFileRecv($rFile, $Ip = @IpAddress1, $Port = 7895)
If $Ip = "" Then $Ip = @IpAddress1
If $Ip = -1 Then $Ip = @IpAddress1
If $Port = "" Then $Port = 7894
If $Port = -1 Then $Port = 7894
$opt = AutoItSetOption("TCPTimeout", 2000)
Local $error = False
Local $buff
$TCPListen = TCPListen($Ip, $Port)
[/autoit] [autoit][/autoit] [autoit]$no_recv_count = 0
[/autoit] [autoit][/autoit] [autoit]$TCPAcc = TCPAccept($TCPListen)
If $TCPAcc = -1 Then
$error = True
Else
Do
$TCPRecv = TCPRecv($TCPAcc, 100000)
If $TCPRecv = "" Then
$no_recv_count += 1
Else
$str = BinaryToString($TCPRecv)
$buff &= $str
$no_recv_count = 0
EndIf
Until $no_recv_count >= 15
If $buff = "" Then
$error = True
Else
$buff = StringToBinary($buff)
$rFileOpen = FileOpen($rFile, 16 + 2)
If $rFileOpen = -1 Then
$error = True
Else
$rFileWrite = FileWrite($rFileOpen, $buff)
If $rFileWrite = 0 Then
$error = True
EndIf
FileClose($rFileOpen)
EndIf
EndIf
EndIf
TCPCloseSocket($TCPListen)
AutoItSetOption("TCPTimeout", $opt)
If $error = True Then
Return 0
Else
Return 1
EndIf
EndFunc ;==> _TCPFileRecv
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.0.0
Author: DELmE
Script Function:
_TCPFileSend
Description:
Sends a file over a TCP connection
Parameters:
sFile The file to be sent
Ip The Ip to send on (default = @IPAddress1)
Port The port to send the file data on (default = 7894)
Return value:
Success _TCPFileSend returns 1 if the file was successfully sent out
Failure _TCPFileSend returns 0 if an error occurred
#ce ----------------------------------------------------------------------------
Func _TCPFileSend($sFile, $Ip = @IPAddress1, $Port = 7895)
If $Ip = -1 Then $Ip = @IPAddress1
If $Ip = "" Then $Ip = @IPAddress1
If $Port = -1 Then $Port = 7894
If $Port = "" Then $Port = 7894
$opt = AutoItSetOption("TCPTimeout", 2000)
Local $error = False
$sFileOpen = FileOpen($sFile, 16 + 0)
$sFileRead = FileRead($sFileOpen)
FileClose($sFileOpen)
$sFileSize = BinaryLen($sFileRead)
$TCPConn = TCPConnect($Ip, $Port)
If $TCPConn = -1 Then
$error = True
Else
If $sFileSize < 100000 Then
$TCPSend = TCPSend($TCPConn, $sFileRead)
If $TCPSend = 0 Then
$TCPConn = TCPConnect($Ip, $Port)
$TCPSend = TCPSend($TCPConn, $sFileRead)
EndIf
Else
$buff = $sFileRead
Do
$TCPSend = TCPSend($TCPConn, BinaryMid($buff, 1, 100000))
If $TCPSend = 0 Then
$TCPConn = TCPConnect($Ip, $Port)
$TCPSend = TCPSend($TCPConn, BinaryMid($buff, 1, 100000))
EndIf
$buff = BinaryMid($buff, $TCPSend + 1)
Until BinaryLen($buff) = 0
EndIf
EndIf
TCPCloseSocket($TCPConn)
AutoItSetOption("TCPTimeout", $opt)
If $error = True Then
Return 0
Else
Return 1
EndIf
EndFunc ;==> _TCPFileSend
Func SocketToIP($SHOCKET)
Local $sockaddr, $aRet
$sockaddr = DllStructCreate("short;ushort;uint;char[8]")
[/autoit] [autoit][/autoit] [autoit]$aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
"ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))
If Not @error And $aRet[0] = 0 Then
$aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
If Not @error Then $aRet = $aRet[0]
Else
$aRet = 0
EndIf
$sockaddr = 0
[/autoit] [autoit][/autoit] [autoit]Return $aRet
EndFunc ;==>SocketToIP