1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. KriZza

Beiträge von KriZza

  • DeskStream 2 Release Candidate 1.8

    • KriZza
    • 24. April 2015 um 08:12

    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 :)

  • DeskStream 2 Release Candidate 1.8

    • KriZza
    • 23. April 2015 um 10:08

    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.png

    Nachher:
    tcv2.png

    AutoIt
    #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
    Alles anzeigen
  • DeskStream 2 Release Candidate 1.8

    • KriZza
    • 21. April 2015 um 18:16

    @ Andy meinst du das ist sehr aufwendig 2 und mehr Clients in einer Gui darzustellen?

  • DeskStream 2 Release Candidate 1.8

    • KriZza
    • 20. April 2015 um 17:36

    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

  • DeskStream 2 Release Candidate 1.8

    • KriZza
    • 15. April 2015 um 15:56

    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?

    --
    edit:
    Im Client liegts auf jeden Fall an der Zeile

    [autoit]

    DllCall($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?

  • DeskStream 2 Release Candidate 1.8

    • KriZza
    • 20. Januar 2015 um 12:30

    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.1

    Kann das jemand nachvollziehen oder geht das nur mir so?

    Viele Grüße
    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

    [/autoit]
  • !Mehrere! Datein per FTP-Downloaden mit Progressbar

    • KriZza
    • 20. Januar 2015 um 10:00

    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]


    $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)
    Next

    [/autoit][autoit][/autoit][autoit]

    Func _FTP_ProgressDownloadFILESIZE($l_FTPSession, $s_LocalFile, $s_RemoteFile, $FunctionToCall = "")

    [/autoit][autoit][/autoit][autoit]

    ....
    IniWrite(@ScriptDir & "\size.ini","size",$s_RemoteFile,$ai_FTPGetFileSize[0])
    ....
    EndFunc ;==>_FTP_ProgressDownload

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
  • !Mehrere! Datein per FTP-Downloaden mit Progressbar

    • KriZza
    • 16. Januar 2015 um 12:41

    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]


    Global $idProgress = GUICtrlCreateProgress(0, 615, 950,5)

    [/autoit][autoit][/autoit][autoit]

    ...

    [/autoit][autoit][/autoit][autoit]

    _FTP_ProgressDownload($hConn, $MainPath & "\LOG\PROFILE_INDEX.ini", "/TCFTP/PROFILE_INDEX.ini", "_UpdateProgress")
    _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]

    ...

    [/autoit][autoit][/autoit][autoit]

    Func _UpdateProgress($percent)
    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 ;==>_UpdateProgress

    [/autoit]

    Vielen Dank für eure Hilfe!

  • Elementpositionen je nach Betriebssystem unterschiedlich

    • KriZza
    • 18. Dezember 2014 um 08:52
    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 ;)

  • Elementpositionen je nach Betriebssystem unterschiedlich

    • KriZza
    • 17. Dezember 2014 um 14:54

    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

  • MP4 Videos vom Desktop erstellen

    • KriZza
    • 20. August 2014 um 12:43

    :D Ja das wäre doch zu einfach.

    Es sollte auf jeden Fall ein Videoformat sein was mit einem Mediaplayer wiedergegeben werden kann.

  • _StringEncrypt() und _StringDecrypt() funktionieren nicht, weil es sie nicht gibt?!

    • KriZza
    • 20. August 2014 um 09:26

    Den Fehler schmeißt der bei _StringDecrypt() raus oder?

    ..

    Du brauchst nur _StringEncrypt(). Der erste Parameter ist wichtig: 1 zum verschlüsseln, 0 zum entschlüsseln.

  • MP4 Videos vom Desktop erstellen

    • KriZza
    • 20. August 2014 um 09:17

    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ß.

  • GIF,JPG und BMP Dateien aus Resource laden.

    • KriZza
    • 25. Oktober 2012 um 10:09

    Wirklich geniales Script. Aber, @alexanderschill wie soll das denn mit .png´s in .dll´s funktionieren? Hast du da vielleicht ein Beispiel?

  • mini buttons

    • KriZza
    • 18. Mai 2011 um 10:43

    Ich lös das eigentlich immer relativ einfach...

    [autoit]

    GUICtrlCreateButton("",10,10,16,16,$BS_ICON)
    GUICtrlSetImage(-1,"shell32.dll", -132,0)

    [/autoit]
  • PsExec GUI: Output auslesen

    • KriZza
    • 27. April 2011 um 13:28

    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 ;)

  • Scipt wird durch Benutzereingaben gestört

    • KriZza
    • 14. April 2011 um 16:21

    Hi,

    versuch mal Blockinput ;)

    [autoit]

    BlockInput(1)

    Run("notepad")
    WinWaitActive("[CLASS:Notepad]")
    Send("{F5}") ;pastes time and date

    BlockInput(0)

    [/autoit]
  • _GUICtrlIpAddress in eine .ini schreiben

    • KriZza
    • 27. September 2010 um 16:09

    Oh je!! :D Brett vorm Kopf ...

    Danke passt so!

  • _GUICtrlIpAddress in eine .ini schreiben

    • KriZza
    • 27. September 2010 um 15:11

    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>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiIPAddress.au3>

    [/autoit][autoit][/autoit][autoit]

    Opt("GUIOnEventMode", 0)

    [/autoit][autoit][/autoit][autoit]

    Global $title = "IP"
    Global $main_form = GUICreate($title, 315, 150, 100, 60)

    [/autoit][autoit][/autoit][autoit]

    $save = GUICtrlCreateButton("Speichern",200,70)

    [/autoit][autoit][/autoit][autoit]

    GUICtrlCreateLabel("IP-Adresse", 130,10,80,20)
    ;~ ---------------------------------------------------------------------------------------------------------
    $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)

    [/autoit][autoit][/autoit][autoit]

    GUISetState(@SW_SHOW, $main_form)

    [/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)
    EndIf

    [/autoit][autoit][/autoit][autoit]

    WEnd

    [/autoit]
    Spoiler anzeigen


    config.ini ---> im Skriptverzeichnis
    [IPS]
    Rechner01=127.0.0.1

  • RegWrite mit Daten von INIread

    • KriZza
    • 27. Oktober 2009 um 17:41

    Ohje ;D .. so kann man auch dazu lernen.
    Danke!! Daran lag es!

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™