Ja, hab ich mir schon gedacht.
So wäre ich auch vorgegangen. Werde mich mal an ein Script machen und wenn ich fertig bin hier posten.
-
Edit: Und natürlich danke für deine Tipps ![]()
Beiträge von KriZza
-
-
Mhh ja, verstehe. Das mit den FPS wäre alles andere als tragisch, da sowas ja als thumbnail dienen könnte. Ganz so leicht ist´s jedoch nicht. Das "Client"-Script ist wirklich auf eine 1-1 Beziehung ausgelegt. Wenn ich da was umbaue kommt immer "Schrott in der Pipeline" (Nur mal etwas gebastelt, hänge das Beipsielscript wieder an.). Und den Client als externe Gui einzubauen ist auch nicht so das gelbe vom Ei. Kurz zu dem was ich vorhabe:
Für eine Schulungsverwaltung sollen Vorschaubilder dargestellt werden. Hier zwei Screenshots.
Vorher:
tcv.pngNachher:
tcv2.pngAutoIt
Alles anzeigen#include <WinAPI.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> #include <GUIConstants.au3> #include <Misc.au3> AutoItSetOption("MouseCoordMode", 2) Global $pBitmap, $hBitmap, $ServerIP, $ServerPort, $iConnect, $iFPS = 0 Global $hBitmapDC, $tInfoStruct, $pBitmap, $tPic Global $iBreite, $iHoehe, $tInput, $ptr_tbuffer, $ilen, $ptr_tinput, $tBuffer, $bitmapsize Global $sendflag = True Global $size_new, $size_old, $mouseup = 0 Global $hDLL_User32 = DllOpen("user32.dll"), $summepix = 0, $summeframes = 0 ;Global Const $WM_EXITSIZEMOVE = 0x0232 Global Const $tagMINMAXINFO = "int ptReserved[2]; int ptMaxSize[2]; int ptMaxPosition[2]; int ptMinTrackSize[2]; int ptMaxTrackSize[2];" Global $struct_sendstring = DllStructCreate("char newframe;ubyte mouseleftx[3];ubyte mouselefty[3];ubyte mouserightx[3];ubyte mouserighty[3];" & _; beliebig erweiterbar "ubyte wheelx[3];ubyte wheely[3];ubyte wheelzoom;ubyte newsizex[3];ubyte newsizey[3];char eof") Global $sendstring = DllStructCreate("byte[" & DllStructGetSize($struct_sendstring) & "]", DllStructGetPtr($struct_sendstring)) ;um struct komplett in einem Rutsch senden zu können ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : DllStructGetSize($struct_sendstring) = ' & DllStructGetSize($struct_sendstring) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console DllStructSetData($struct_sendstring, "eof", "E") ;end of file Global $emptystring = DllStructGetData($sendstring, 1) Global $send = $emptystring ;~ MsgBox(262144, 'Debug line ~' & @ScriptLineNumber, 'Selection:' & @CRLF & '$send' & @CRLF & @CRLF & 'Return:' & @CRLF & $send) ;### Debug MSGBOX TCPStartup() $hGui_ConnectForm = GUICreate("DeskStream 2 RC 1.0 (Client)", 800, 400,-1,-1) GUISetBkColor(0x013245, $hGui_ConnectForm) ;Startups Global $hStreamGUI = GUICreate("", 150, 80, 0, 0, $WS_POPUP, $WS_EX_MDICHILD, $hGui_ConnectForm) Global $hStreamGUI2 = GUICreate("", 150, 80, 170, 0, $WS_POPUP, $WS_EX_MDICHILD, $hGui_ConnectForm) Global $tCodeBuffer = DllStructCreate("byte[199]") ;reserve Memory for opcodes DllStructSetData($tCodeBuffer, 1, "0x8B7424048B7C24088B4C240C31D290908B1F0FBAF316733F5181E3FFFF3F000FB64F03568D349E0FB7444F02C1E00566C1E803C0E802C1E00389448EFC83E90175E50FB64703D1E083C0045E01C75929C183F90277BAC30FB74703C1E00566C1E803C0E802C1E0030FBAF31773375681E3FFFF3F003B5C241476045E89D8C38D349E0FB65705C1E20289041683EA0483FA007DF55E83C70683E90683F90A0F876CFFFFFFC381E3FFFF3F003B5C2410760389D8C389049E83C70583E90583F90A0F874AFFFFFFC3") ;write opcodes into memory $pCode = DllStructGetPtr($tCodeBuffer) ;~ OnAutoItExitRegister("_Exit") ;~ Opt("GUICloseOnESC", 1) Global $hGUIDC = _WinAPI_GetDC($hStreamGUI) GUISetState(@SW_SHOW, $hStreamGUI) GUISetState(@SW_DISABLE, $hStreamGUI) Global $hGUIDC2 = _WinAPI_GetDC($hStreamGUI2) GUISetState(@SW_SHOW, $hStreamGUI2) GUISetState(@SW_DISABLE, $hStreamGUI2) GUISetState(@SW_SHOW, $hGui_ConnectForm) While 1 $iConnect = TCPConnect("10.5.0.198", "5487") $iConnect2 = TCPConnect("10.5.0.196", "5487") $iBreite = 150 $bxh_server = "" While StringLen($bxh_server) < 16;so lange, bis 16 byte empfangen wurden $bxh_server &= TCPRecv($iConnect, 16) ;erhält vom Server die Grösse dessen Desktops WEnd $iHoehe = Int($iBreite / (Dec(StringLeft($bxh_server, 8)) / Dec(StringRight($bxh_server, 8))));ermittelt höhen/breitenverhältnis $iStatus = 1;HQ angehakt $sData = $iBreite & "x" & $iHoehe & $iStatus TCPSend($iConnect, "FF" & StringLen($sData) & "B" & $sData);breite, hoehe und Modus an server senden TCPSend($iConnect2, "FF" & StringLen($sData) & "B" & $sData);breite, hoehe und Modus an server senden $hBitmapDC = _CreateNewBmp32($iBreite, $iHoehe, $pBitmap, $hBitmap) $tInfoStruct = DllStructCreate("byte[" & $iBreite * $iHoehe * 7 & "]") $pInfoStruct = DllStructGetPtr($tInfoStruct) $tPic = DllStructCreate("byte[" & $iBreite * $iHoehe * 4 & "]", $pBitmap) $bitmapsize = $iBreite * $iHoehe ;global $ptr_tinput = _MemGlobalAlloc($bitmapsize, 0) $tInput = DllStructCreate("byte[" & $bitmapsize * 7 & "]");BinaryLen($bBinary) & "]") ;global $ptr_tbuffer = _MemGlobalAlloc($bitmapsize*16, 0) $tBuffer = DllStructCreate("byte[" & 16 * $bitmapsize * 5 & "]");DllStructGetSize($tInput) & "]") ; initially oversizing buffer $ptr_tbuffer = DllStructGetPtr($tBuffer) $ptr_tinput = DllStructGetPtr($tInput) ;~ AdlibRegister("_FPS", 1000) $rcv_timer = TimerInit() While 1 $nMsg = GUIGetMsg(1) If $nMsg[1] = $hGui_ConnectForm Then If $nMsg[0] = $GUI_EVENT_CLOSE Then _Exit() EndIf EndIf $sendflag = False ;wenn am ende der schleife true, dann paket an server senden $sresv = TCPRecv($iConnect, 1) ;ein zeichen aus dem puffer holen $sresv2 = TCPRecv($iConnect2, 1) $errorcode = @error ;~ ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sresv = ' & $sresv & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console If $errorcode > 0 And $errorcode <> 10053 Then ;verbindung zum server verloren MsgBox(16, "DeskStream 2 Beta", "Verbindung unterbrochen.") ExitLoop ElseIf $errorcode = 10053 Then ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $errorcode=10053 = ' & $errorcode & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console $sresv = "F" $sresv2 = "F" ;trotzdem senden EndIf If $sresv = "Q" or $sresv2 = "Q" Then ;Q=Server lebt noch, sendet aber keine Daten $sendflag = True EndIf If $sresv = "F" or $sresv2 = "F" Then ; $sresv &= TCPRecv($iConnect, 3) $sresv2 &= TCPRecv($iConnect2, 3) ; ;~ ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sresv = ' & $sresv & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console If $sresv <> "FF01" or $sresv2 <> "FF01" Then ;müll aus der pipeline entfernen MsgBox(0, "client", "schrott in pipeline, frame anfordern <>Q und <>""" & @CRLF & $sresv, 3) $t_rec = TimerInit() While TimerDiff($t_rec) < 500 ;eine sekunde warten, so lange, bis keine daten mehr in der pipeline sind If TCPRecv($iConnect, 20480) <> "" Then $t_rec = TimerInit();solange daten in der pipeline sind, timer setzen If TCPRecv($iConnect2, 20480) <> "" Then $t_rec = TimerInit();solange daten in der pipeline sind, timer setzen WEnd DllStructSetData($struct_sendstring, "newframe", "P") Else ;kein müll in der pipeline $sData = (GetLongInf(False)) ;Daten aus pipeline auslesen ;~ ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sData = ' & stringleft($sData,50) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console If $sData <> -1 Then ;alle Daten wurden empfangen $sData = _LZNTDecompress($sData); daten dekomprimieren $len = @extended ;länge der dekomprimierten Daten If @error Then MsgBox(0, "client", "fehler beim decompress", 2) If $len > 0 Then ;Daten wurden ohne Fehler dekomprimiert $summepix += $len $summeframes += 1 ;~ ToolTip($summepix & @CRLF & $summeframes & @CRLF & $summepix / $summeframes) ;Pixel in Bitmap schreiben DllStructSetData($tInfoStruct, 1, $sData) DllCall($hDLL_User32, "int", "CallWindowProcW", "ptr", $pCode, "ptr", $pBitmap, "ptr", $pInfoStruct, "int", $len, "int", $bitmapsize) ;$_assembleit_flag=0 ;$ret = _AssembleIt("int", "SetInfo", "ptr", $pBitmap, "ptr", $pInfoStruct, "int", $len, "int", $bitmapsize) $iFPS += 1 ;Frames pro Sekunde _WinAPI_BitBlt($hGUIDC, 0, 0, $iBreite, $iHoehe, $hBitmapDC, 0, 0, $SRCCOPY) $sendflag = True Else MsgBox(0, "client", "fehler beim dekomprimieren", 3) $t_rec = TimerInit() While TimerDiff($t_rec) < 500 ;eine sekunde warten, so lange, bis keine daten mehr in der pipeline sind If TCPRecv($iConnect, 20480) <> "" Then $t_rec = TimerInit();solange daten in der pipeline sind, timer setzen If TCPRecv($iConnect2, 20480) <> "" Then $t_rec = TimerInit();solange daten in der pipeline sind, timer setzen WEnd EndIf Else ;fehler aufgetreten beim EMPFANG MsgBox(0, "Client", "Schrott in pipeline, frame anfordern FFo1 else", 2) $t_rec = TimerInit() While TimerDiff($t_rec) < 500 ;eine sekunde warten, so lange, bis keine daten mehr in der pipeline sind If TCPRecv($iConnect, 20480) <> "" Then $t_rec = TimerInit();solange daten in der pipeline sind, timer setzen If TCPRecv($iConnect2, 20480) <> "" Then $t_rec = TimerInit();solange daten in der pipeline sind, timer setzen WEnd ;wenn 500 ms keine daten kommen, ist die pipeline leer...hoffentlich DllStructSetData($struct_sendstring, "newframe", "P") $sendflag = True EndIf EndIf EndIf $sresv = "" $send = DllStructGetData($sendstring, 1) If $sendflag = True Then ;nur wenn daten empfangen wurden, wird $sendflag = False TCPSend($iConnect, $send) ;datenpaket senden TCPSend($iConnect2, $send) If DllStructGetData($struct_sendstring, "newsizex") <> 0 Then ;neue Fenstergröße an Server geschickt $iBreite = Number(DllStructGetData($struct_sendstring, "newsizex")) $iHoehe = Number(DllStructGetData($struct_sendstring, "newsizey")) _DeleteBitmap32($hBitmapDC, $pBitmap, $hBitmap) $tInfoStruct = 0 $tPic = 0 $tInput = 0 $pBitmap = 0 $hBitmap = 0 $hBitmapDC = _CreateNewBmp32($iBreite, $iHoehe, $pBitmap, $hBitmap) $tInfoStruct = DllStructCreate("byte[" & $iBreite * $iHoehe * 7 & "]") $pInfoStruct = DllStructGetPtr($tInfoStruct) $tPic = DllStructCreate("byte[" & $iBreite * $iHoehe * 4 & "]", $pBitmap) $bitmapsize = $iBreite * $iHoehe ;global $ptr_tinput = _MemGlobalAlloc($bitmapsize, 0) $tInput = DllStructCreate("byte[" & $bitmapsize * 7 & "]");BinaryLen($bBinary) & "]") ;global $ptr_tbuffer = _MemGlobalAlloc($bitmapsize*16, 0) $tBuffer = DllStructCreate("byte[" & 16 * $bitmapsize * 5 & "]");DllStructGetSize($tInput) & "]") ; initially oversizing buffer $ptr_tbuffer = DllStructGetPtr($tBuffer) $ptr_tinput = DllStructGetPtr($tInput) ;alle puffer leeren $t_rec = TimerInit() While TimerDiff($t_rec) < 500 ;eine sekunde warten, so lange, bis keine daten mehr in der pipeline sind If TCPRecv($iConnect, 20480) <> "" Then $t_rec = TimerInit();solange daten in der pipeline sind, timer setzen If TCPRecv($iConnect2, 20480) <> "" Then $t_rec = TimerInit();solange daten in der pipeline sind, timer setzen WEnd TCPSend($iConnect, "G") ;erstes frame mit neuer Grösse anfordern TCPSend($iConnect2, "G") ;erstes frame mit neuer Grösse anfordern EndIf DllStructSetData($sendstring, 1, $emptystring);string leeren EndIf WEnd ;hauptschleife ;Speicher leer putzen _DeleteBitmap32($hBitmapDC, $pBitmap, $hBitmap) $pInfoStruct = 0 $tInfoStruct = 0 $tPic = 0 $ptr_tbuffer = 0 $ptr_tinput = 0 $tBuffer = 0 $tInput = 0 ;~ AdlibUnRegister("_FPS") TCPShutdown() TCPStartup() ;Verbindung zum Server trennen WEnd ;==>_Stream ;~ Func _FPS() ;~ If $iFPS = 0 Then $iFPS = "keine Veränderung" ;~ WinSetTitle($hStreamGUI, "", "DeskStream 2 FPS=" & $iFPS & " Zoom= " & $zoomfaktor) ;~ $iFPS = 0 ;~ EndFunc ;==>_FPS Func _Exit() DllClose($hDLL_User32) _WinAPI_ReleaseDC($hStreamGUI, $hGUIDC) $pCode = 0 $tCodeBuffer = 0 TCPShutdown() Exit EndFunc ;==>_Exit Func GetLongInf($Binary = True) Local $sData = "",$sData2 = "", $rec = "", $chunk, $err = 0 While 1 $sData = TCPRecv($iConnect, 8) If @error <> 0 And @error <> 10053 Then Return -1 $ilen = Dec($sData) $sData = TCPRecv($iConnect, 1) $chunk = 20480 ;paketgröße If $ilen < $chunk Then $chunk = $ilen $mod = Mod($ilen, $chunk) Local $rest = $mod + $chunk If $sData = "B" Then $sData = "" $t1 = TimerInit() $rec = "" Do ;genau die menge von $ilen an bytes auslesen $a = TCPRecv($iConnect, $chunk, 1) If @error <> 0 And @error <> 10053 Then $err = 1 ExitLoop EndIf If $a <> "" Then $rec &= BinaryToString($a) If StringLen($rec) >= $ilen - $rest Then $rest = Int(($ilen - StringLen($rec)) / 2) $chunk = $rest + 1 EndIf Until StringLen($rec) = $ilen If StringLen($rec) = $ilen Then $rec = StringToBinary($rec) Return $rec Else MsgBox(0, "client", "falscher recv " & StringLeft($rec, 100)) Return -1 EndIf EndIf $sData2 = TCPRecv($iConnect2, 8) If @error <> 0 And @error <> 10053 Then Return -1 $ilen2 = Dec($sData2) $sData2 = TCPRecv($iConnect2, 1) $chunk2 = 20480 ;paketgröße If $ilen2 < $chunk2 Then $chunk2 = $ilen2 $mod = Mod($ilen2, $chunk2) Local $rest2 = $mod + $chunk2 If $sData2 = "B" Then $sData2 = "" $t12 = TimerInit() $rec2 = "" Do ;genau die menge von $ilen an bytes auslesen $a2 = TCPRecv($iConnect2, $chunk2, 1) If @error <> 0 And @error <> 10053 Then $err2 = 1 ExitLoop EndIf If $a2 <> "" Then $rec2 &= BinaryToString($a2) If StringLen($rec2) >= $ilen2 - $rest2 Then $rest2 = Int(($ilen2 - StringLen($rec2)) / 2) $chunk2 = $rest2 + 1 EndIf Until StringLen($rec2) = $ilen2 If StringLen($rec2) = $ilen2 Then $rec2 = StringToBinary($rec2) Return $rec2 Else MsgBox(0, "client", "falscher recv " & StringLeft($rec, 100)) Return -1 EndIf EndIf WEnd EndFunc ;==>GetLongInf Func _CreateNewBmp32($iwidth, $iheight, ByRef $ptr, ByRef $hbmp) ;erstellt leere 32-bit-Bitmap; Rückgabe $HDC und $ptr und handle auf die Bitmapdaten $hcdc = _WinAPI_CreateCompatibleDC(0) ;Desktop-Kompatiblen DeviceContext erstellen lassen $tBMI = DllStructCreate($tagBITMAPINFO) ;Struktur der Bitmapinfo erstellen und Daten eintragen DllStructSetData($tBMI, "biSize", DllStructGetSize($tBMI) - 4);Structgröße abzüglich der Daten für die Palette DllStructSetData($tBMI, "biWidth", $iwidth) DllStructSetData($tBMI, "biHeight", -$iheight) ;minus =standard = bottomup DllStructSetData($tBMI, "biPlanes", 1) DllStructSetData($tBMI, "biBitCount", 32) ;32 Bit = 4 Bytes => AABBGGRR $adib = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBMI), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'uint', 0) $hbmp = $adib[0] ;hbitmap handle auf die Bitmap, auch per GDI+ zu verwenden $ptr = $adib[4] ;pointer auf den Anfang der Bitmapdaten, vom Assembler verwendet _WinAPI_SelectObject($hcdc, $hbmp) ;objekt hbitmap in DC Return $hcdc ;DC der Bitmap zurückgeben EndFunc ;==>_CreateNewBmp32 Func _DeleteBitmap32($DC, $ptr, $hbmp) _WinAPI_DeleteDC($DC) _WinAPI_DeleteObject($hbmp) $ptr = 0 EndFunc ;==>_DeleteBitmap32 ; #FUNCTION# ;=============================================================================== ; ; Name...........: _LZNTDecompress ; Description ...: Decompresses input data. ; Syntax.........: _LZNTDecompress ($bBinary) ; Parameters ....: $vInput - Binary data to decompress. ; Return values .: Success - Returns decompressed binary data. ; - Sets @error to 0 ; Failure - Returns empty string and sets @error: ; |1 - Error decompressing. ; Author ........: trancexx ; Related .......: _LZNTCompress ; Link ..........; http://msdn.microsoft.com/en-us/library/bb981784.aspx ; ;========================================================================================== Func _LZNTDecompress($bBinary) DllStructSetData($tInput, 1, $bBinary) $ilen = $ilen * 2 + 2 Local $a_Call = DllCall("ntdll.dll", "int", "RtlDecompressBuffer", _ "ushort", 2, _ ;2 "ptr", $ptr_tbuffer, _ ;DllStructGetPtr($tBuffer), _ "dword", 8 * $ilen, _ ;DllStructGetSize($tBuffer), _ "ptr", $ptr_tinput, _ ;DllStructGetPtr($tInput), _ "dword", ($ilen - 2) / 2, _ ;DllStructGetSize($tInput), _ "dword*", 0) If @error Or $a_Call[0] Then ConsoleWrite(Hex($a_Call[0]) & @CRLF) Return SetError(1, 0, "") ; error decompressing EndIf Local $tOutput = DllStructCreate("byte[" & $a_Call[6] & "]", DllStructGetPtr($tBuffer)) Return SetError(0, $a_Call[6], DllStructGetData($tOutput, 1)) EndFunc ;==>_LZNTDecompress -
@ Andy meinst du das ist sehr aufwendig 2 und mehr Clients in einer Gui darzustellen?
-
Danke für deine Mühe! Hab jetzt erst deine Nachricht gelesen und konnte nur kurz auf die schnelle testen. Bei mir klappts.
BS: Win 8.1
AutoIT (seit letzter Woche): 3.3.12.0 -
Es liegt auf jeden Fall am Versionsunterschied:
Geht: 3.3.8.0
Geht nicht ( getestet 3.3.10.0)ich such mir schon echt ein Wolf. hat jemand eine Idee woran es liegen könnte?
--
[autoit]
edit:
Im Client liegts auf jeden Fall an der ZeileDllCall($hDLL_User32, "int", "CallWindowProcW", "ptr", $pCode, "ptr", $pBitmap, "ptr", $pInfoStruct, "int", $len, "int", $bitmapsize)
[/autoit]Keine Ahnung was sich da geändert hat
ich brauche HIIIILFE 
--
edit2:Leider ist der Downloadlink auch nicht mehr im 1. Post .... vll wg. dem Umzug vom Forum?
-
Schon lange her und vorab vielen Dank für das Script. Habe das schon vor einigen Jahren ausprobiert würde nun gerne das Script wieder verwenden. Das Problem was ich jedoch habe ist, dass die TCPRecv im Client abbricht wenn:
- Das Programm nicht mit Seitenverhältnis starte
- Das Fenster vergrößern möchte
- Das Fenster verschieben möchte
- Rein-zoome und dann wieder auf Faktor=0 raus-zoome
also jedes mal wenn sich etwas an der Bildposition verändert.
AutoIT Version 3.3.10.2
BS: Windows 8.1Kann das jemand nachvollziehen oder geht das nur mir so?
Viele Grüße
[autoit]
KriZza
[/autoit]
$sresv = TCPRecv($iConnect, 1) ;ein zeichen aus dem puffer holen
If @error Then ;verbindung zum server verloren
MsgBox(16, "DeskStream 2 Beta", "Verbindung unterbrochen." & @error & " fehler: " & $sresv)
ExitLoop
EndIf -
Ja super! Vielen Dank für den Ansatz. Aber das "Brett vorm Kopf" ist noch ziemlich dick. Was ich bis jetzt hab, habe in die Funktion ein "iniwrite" eingebaut der alle Dateigrößen in eine ini schreibt. Anschießend alle Werte addiert. Aber mir fehlt jetzt der Einbau in die Progressbar. Hat jemand noch einen Ansatz für mich?
[autoit]
[/autoit][autoit][/autoit][autoit]
$readsize = IniReadSection(@ScriptDir & "\size.ini","size")
For $i = 1 To $readsize[0][0]
$sum += $readsize[$i][1]
$readdata = IniWrite(@ScriptDir & "\size.ini","gen","sum",$sum)
NextFunc _FTP_ProgressDownloadFILESIZE($l_FTPSession, $s_LocalFile, $s_RemoteFile, $FunctionToCall = "")
[/autoit][autoit][/autoit][autoit]....
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
IniWrite(@ScriptDir & "\size.ini","size",$s_RemoteFile,$ai_FTPGetFileSize[0])
....
EndFunc ;==>_FTP_ProgressDownload -
Hallo zusammen,
brauche von euch Unterstützung mit meiner Progressbar zum FTP Up-und Download.
Grundsätzlich funktioniert das Ganze mit dem letzten Parameter, wie auch in der Hilfe beschrieben (Beispiel mit _UpdateProgress)Jedoch sind alle beispiele die ich finden konnte immer nur mit einer Datei die vom FTP gezogen werden ich habe n Dateien die gezogen werden sollen. Wie kann ich das in einer Progressbar abbilden?
[autoit]
[/autoit][autoit][/autoit][autoit]
Global $idProgress = GUICtrlCreateProgress(0, 615, 950,5)...
[/autoit][autoit][/autoit][autoit]_FTP_ProgressDownload($hConn, $MainPath & "\LOG\PROFILE_INDEX.ini", "/TCFTP/PROFILE_INDEX.ini", "_UpdateProgress")
[/autoit][autoit][/autoit][autoit]
_FTP_ProgressDownload($hConn, $MainPath & "\CODE\config.ini", "/TCFTP/config.ini", "_UpdateProgress")
_FTP_ProgressDownload($hConn, $MainPath & "\CODE\connection.ini", "/TCFTP/connection.ini", "_UpdateProgress")...
[/autoit][autoit][/autoit][autoit]Func _UpdateProgress($percent)
[/autoit]
GUICtrlSetData($idProgress, $percent)
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Return -1 ; _FTP_DownloadProgress Aborts with -1, so you can exit you app afterwards
EndSwitch
Return 1 ; Otherwise contine Download
EndFunc ;==>_UpdateProgressVielen Dank für eure Hilfe!
-
Zitat
Alternativ bastelt man sich die GUI statt aus Controls selbst aus Bildern zusammen, die kann man pixelgenau positionieren. Bissl mehr Aufwand, aber dafür von den nächsten erscheinenden Systemen unabhängig^^
Der Aufwand wäre wirklich enorm, aber das habe ich teilweise wirklich schon umgesetzt wie oben zu sehen, mit dem Button "Menü".
Auf jeden Fall habe ich meinen Fehler gefunden. Die Ribbonbar ist dafür verantwortlich. Und zwar wenn ich die GUI auf einem System starte, bei dem nicht der AERO-Style von Windows aktiv ist. Also falls mal jemand eine Ribbonbar in seine AutoIT GUI einfügen möchte, darauf bitte achten

-
Hallo zusammen,
ich habe ein seltsames Phänomen mit meinen Controls. Alles in Ruhe auf einem Win 8 PC erstellt, dann kurzer Zwischentest auf dem Produktivsystem (Windows 7 Embedded) und meine Controls befinden sich an komplett anderen Positionen. Hat hier jemand eine Idee woran das liegen könnte, bzw. jemand schonmal ähnliche Erfahrungen gemacht? Siehe Anhang...
Gruß,
Chris -
Ja das wäre doch zu einfach.Es sollte auf jeden Fall ein Videoformat sein was mit einem Mediaplayer wiedergegeben werden kann.
-
-
Guten Morgen,
ich hoffe Tipps oder Unterstützung von euch zu bekommen.
Folgender IST-Stand:
Ich habe ein Skript mit dem ich AVI-Video-Dateien vom Desktop erstellen kann also klassisches Screencapture mit Hilfe von der "AVIWriter.au3". Leider sind die Videos viel zu groß! ~ 1 GB für 10 Sekunden
Konvertiere ich dieses Video in MP4 um, was mir Qualitätstechnisch vollkommen reicht, sind es für 10 Sekunden ~ 2,5 MB.Meine Frage: Hat jemand ein Skript oder eine Möglichkeit gefunden Videos direkt in MP4 aufzunehmen oder natürlich ein ähnliches Format mit ähnlicher Dateigröße?
Wäre für jede Hilfe dankbar.
PS: Hab auch die Threats mit AVI-Komprimierung gelesen. Leider sind diese Immernoch viel zu groß.
-
Wirklich geniales Script. Aber, @alexanderschill wie soll das denn mit .png´s in .dll´s funktionieren? Hast du da vielleicht ein Beispiel?
-
Ich lös das eigentlich immer relativ einfach...
[autoit]GUICtrlCreateButton("",10,10,16,16,$BS_ICON)
[/autoit]
GUICtrlSetImage(-1,"shell32.dll", -132,0) -
Eine Lösung dafür habe ich leider auch nicht ... eher das gleiche Problem ...
Ich schicke über Netzwerk die PsExec-Befehle, ohne mir einen Erfolg oder Fehler zurückgeben zu lassen. Und das passt mir gar nicht ...
Ich hatte mir erst überlegt eine .bat zu schreiben um ein .log von PsExec zu erzeugen und das über meine GUI wiederrum bei Fehler oder Erfolg darstellen zu lassen. Nur leider habe ich auch schon mehrere Stunden in verschiedenen Foren geschaut und erfahren, dass das Problem selber an den PsTools zu liegen scheint, da diese Informationen nicht gespeichert werden können.
Also wenn jemand eine Idee hat wie´s funktionieren könnte würde auch ich mich freuen

-
Hi,
versuch mal Blockinput
[autoit]
BlockInput(1)
[/autoit]
Run("notepad")
WinWaitActive("[CLASS:Notepad]")
Send("{F5}") ;pastes time and date
BlockInput(0) -
Oh je!!
Brett vorm Kopf ...Danke passt so!
-
Hallo zusammen,
ich versuche über eine GUI eine IP-Adresse in einem _GUICtrlIpAddress_Create anzeigen zu lassen. Das klappt auch super! Verändere ich nun Werte in meiner GUI und speichere diese in die .ini zurück, ist der Rückgabewert = 0
Hat jemand eine Idee?!
[autoit]
#include <ButtonConstants.au3>
[/autoit][autoit][/autoit][autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiIPAddress.au3>Opt("GUIOnEventMode", 0)
[/autoit][autoit][/autoit][autoit]Global $title = "IP"
[/autoit][autoit][/autoit][autoit]
Global $main_form = GUICreate($title, 315, 150, 100, 60)$save = GUICtrlCreateButton("Speichern",200,70)
[/autoit][autoit][/autoit][autoit]GUICtrlCreateLabel("IP-Adresse", 130,10,80,20)
[/autoit][autoit][/autoit][autoit]
;~ ---------------------------------------------------------------------------------------------------------
$IP = IniRead("config.ini","IPS", "Rechner01","")
GUICtrlCreateLabel("Rechner 01", 25,35,80,20)
$hIPAddress = _GUICtrlIpAddress_Create ($main_form, 100, 30)
$su = _GUICtrlIpAddress_Set ($hIPAddress, $IP)GUISetState(@SW_SHOW, $main_form)
[/autoit][autoit][/autoit][autoit];~ -------------------------------------------------------------------------------------------------------------------------------
[/autoit][autoit][/autoit][autoit]
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
If $msg = $save Then
$te = GUICtrlRead($su)
IniWrite("config.ini","IPS","Rechner01",$te) ;bzw.
MsgBox(64,"test",$te)
EndIfWEnd
[/autoit]Spoiler anzeigen
config.ini ---> im Skriptverzeichnis
[IPS]
Rechner01=127.0.0.1 -
Ohje ;D .. so kann man auch dazu lernen.
Danke!! Daran lag es!