Beiträge von Mr_gitarre

    Sehr Gute Ideen Leute, nur leider helfen sie mir nicht, denn mein Script sieht folgendermaßen aus:
    (danke an Mars für dieses Script!)


    neu.au3


    #include <GDIPlus.au3>
    #include <Misc.au3>
    #include 'Buttons.au3'


    Opt('GUIOnEventMode', 1) ;Immer wieder sinnvoll
    Opt("MustDeclareVars", 1) ;Um Fehlern aus dem Weg zu gehen
    Opt("MouseCoordMode", 2) ;Damit die Koords vom Button korrekt erkannt werden.



    _GDIPlus_Startup()


    Global Const $hGUI = GUICreate('Test', 220, 250)
    GUISetOnEvent(-3, '_Exit', $hGUI)
    WinSetTrans($hGUI, '', 255)



    Global $hButton = _Button_Init(10, 10, 200, 60, $hGUI) ;Letzte Nr ist die Universelle Nummer
    _Button_Set_Pic($hButton, 0, 'n1.png')
    _Button_Set_Pic($hButton, 1, 'h1.png')
    _Button_Set_Pic($hButton, 2, 'k1.png')
    _Button_Set_Ani_Speed($hButton, 30, 14, 7)


    Global $hButton2 = _Button_Init(10, 80, 200, 60, $hGUI) ;Letzte Nr ist die Universelle Nummer
    _Button_Set_Pic($hButton2, 0, 'Normal1.png', 'Normal2.png', 'Normal3.png', 'Normal4.png', 'Normal5.png', 'Normal6.png', 'Normal7.png', 'Normal8.png')
    _Button_Set_Pic($hButton2, 1, 'Hover1.png', 'Hover2.png', 'Hover3.png', 'Hover4.png', 'Hover5.png')
    _Button_Set_Pic($hButton2, 2, 'Pr1.png', 'Pr2.png', 'Pr3.png', 'Pr4.png', 'Pr5.png', 'Pr6.png')
    _Button_Set_Ani_Speed($hButton2, 8, 2, 20)


    Global $Btn_msg
    ;~ Global $_____Btn_Msg
    Global $pos, $klick
    Global $Temp
    Local $t = TimerInit()
    GUISetState(@SW_SHOW, $hGUI)



    While Sleep(10)
    ;_GDIPlus_GraphicsClear($hBackbuffer, 0xFF000000)


    $Btn_msg = _Button_Get_Pressed()
    _Button_Draw($hBackbuffer, $hButton)
    _Button_Draw($hBackbuffer, $hButton2)


    _GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
    WEnd


    Func _Exit()
    _Button_Dispose($hButton)
    _Button_Dispose($hButton2)
    _GDIPlus_GraphicsDispose($hBackbuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    Exit
    EndFunc



    Buttons.au3



    #include-once
    #include <Misc.au3>
    #include <GDIPlus.au3>


    Global $_____Btn_Msg = 0
    Global $_____Btn_Klick = False
    Global $_____Btn_pos = MouseGetPos()
    Global $_Buttons_Button_Init_Nr = 0


    ; #FUNCTION# ======================================================================================
    ; Name ..........: _____Kollision_Viereck_Punkt()
    ; Description ...: Überprüft ob ein Punkt innerhalb eines Vierecks liegt.
    ; Syntax ........: _____Kollision_Viereck_Punkt($x1, $y1, $x2, $y2, $b2, $h2)
    ; Parameters ....: $x1 - X-Koord des Punktes
    ; $y1 - Y-Koord des Punktes
    ; $x2 - X-Koord des Vierecks
    ; $y2 - Y-Koord des Vierecks
    ; $b2 - Breite des Vierecks
    ; $h2 - Höhe des Vierecks
    ; Return values .: Success True
    ; Failure False
    ; Author ........: Mars(i)
    ; =================================================================================================


    Func _____Kollision_Viereck_Punkt($x1, $y1, $x2, $y2, $b2, $h2)
    Return ($x1 > $x2 And $y1 > $y2 And $x1 < $x2 + $b2 And $y1 < $y2 + $h2)
    EndFunc


    ; #FUNCTION# ======================================================================================
    ; Name ..........: _Button_Dispose()
    ; Description ...: Gibt den vom Button verwendeten Speicherplatz wieder frei
    ; Syntax ........: _Button_Dispose($a)
    ; Parameters ....: $a - Handle des Buttons
    ; Author ........: Mars
    ; Related .......: _Button_Init
    ; =================================================================================================


    Func _Button_Dispose($a)
    For $i = 0 To 23 Step 1
    If $a[$i] Then _GDIPlus_ImageDispose($a[$i])
    Next
    EndFunc


    ; #FUNCTION# ======================================================================================
    ; Name ..........: _Button_Draw()
    ; Description ...: Zeichnet den Button auf den angegebenen Puffer
    ; Syntax ........: _Button_Draw($buffer, ByRef $btn)
    ; Parameters ....: $buffer - Der Puffer auf den Gezeichnet werden soll.
    ; ByRef $btn - Handle des Buttons
    ; Author ........: Mars
    ; =================================================================================================


    Func _Button_Draw($buffer, ByRef $btn)
    Switch $btn[28]
    Case 0 ;Normal
    If $btn[$btn[30]] Then
    _GDIPlus_GraphicsDrawImage($buffer, $btn[Floor($btn[30])], $btn[24], $btn[25])
    Else
    $btn[30] = 0
    _GDIPlus_GraphicsDrawImage($buffer, $btn[Floor($btn[30])], $btn[24], $btn[25])
    EndIf
    If $btn[Floor($btn[30]+0.1)] And $btn[30] + $btn[33] < 8 Then
    $btn[30] += $btn[33]
    Else
    $btn[30] = 0
    EndIf
    Case 1 ;Hover
    If $btn[$btn[31]] Then
    _GDIPlus_GraphicsDrawImage($buffer, $btn[Floor($btn[31])], $btn[24], $btn[25])
    Else
    $btn[31] = 8
    _GDIPlus_GraphicsDrawImage($buffer, $btn[Floor($btn[31])], $btn[24], $btn[25])
    EndIf
    If $btn[Floor($btn[31]+0.1)] And $btn[31] + $btn[34] < 16 Then
    $btn[31] += $btn[34]
    Else
    $btn[31] = 8
    EndIf
    Case 2 ;Klick
    If $btn[$btn[32]] Then
    _GDIPlus_GraphicsDrawImage($buffer, $btn[Floor($btn[32])], $btn[24], $btn[25])
    Else
    $btn[32] = 16
    _GDIPlus_GraphicsDrawImage($buffer, $btn[Floor($btn[32])], $btn[24], $btn[25])
    EndIf
    If $btn[Floor($btn[32]+0.1)] And $btn[32] + $btn[35] < 24 Then
    $btn[32] += $btn[35]
    Else
    $btn[32] = 16
    EndIf
    EndSwitch
    If _____Kollision_Viereck_Punkt($_____Btn_pos[0], $_____Btn_pos[1], $btn[24], $btn[25], $btn[26], $btn[27]) Then
    If $_____Btn_Klick Then
    $btn[28] = 2
    Else
    If $btn[28] = 2 Then
    $btn[28] = 1
    $_____Btn_Msg = $btn[29]
    Else
    $btn[28] = 1
    EndIf


    EndIf
    Else
    $btn[28] = 0
    EndIf
    EndFunc


    ; #FUNCTION# ======================================================================================
    ; Name ..........: _Button_Get_Pressed()
    ; Description ...: Überprüft ob geklickt wurde und wo die Maus steht. Sollte VOR dem Draw stehen.
    ; Syntax ........: _Button_Get_Pressed()
    ; Author ........: Mars
    ; =================================================================================================


    Func _Button_Get_Pressed()
    Local $a = $_____Btn_Msg
    $_____Btn_Msg = 0
    $_____Btn_Klick = _IsPressed('01')
    $_____Btn_pos = MouseGetPos()
    Return $a
    EndFunc


    ; #FUNCTION# ======================================================================================
    ; Name ..........: _Button_Init()
    ; Description ...: Erstellt ein Button Handle (ohne Bilder)
    ; Syntax ........: _Button_Init($x, $y, $b, $h, $_Buttons_Button_Init_Nr)
    ; Parameters ....: $x - X-Pos des Buttons
    ; $y - Y-Pos des Buttons
    ; $b - Breite des Buttons
    ; $h - Höhe des Buttons
    ; $hGUI - GUI des Buttons
    ; Return values .: Success Handle für einen Button
    ; Failure Kommt nicht in die Tüte
    ; Author ........: Mars
    ; Related .......: _Button_Dispose
    ; =================================================================================================


    Func _Button_Init( $x, $y, $b, $h, $hGUI)
    ;Eigene ID für Button
    $_Buttons_Button_Init_Nr = $_Buttons_Button_Init_Nr +1


    ;Zum Zeichnen der Button den Grafikbereich im Fenster initialisieren...
    Local $dimension = WinGetPos($hGUI)
    Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    Global $hBitmap = _GDIPlus_BitmapCreateFromGraphics($dimension[2], $dimension[3], $hGraphic)
    Global $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)



    Local $Btn[36]
    ;in 0-7 sind Bilder von Normal
    ;in 8-15 sind Bilder von Hover
    ;in 16-23 sind Bilder von Klick
    $Btn[24] = $x ;x - Pos
    $Btn[25] = $y ;y - Pos
    $Btn[26] = $b ;Breite
    $Btn[27] = $h ;Höhe
    $Btn[28] = 0 ;Normal = Grundzustand
    $Btn[29] = $_Buttons_Button_Init_Nr ;Rückgabewert beim Press
    $Btn[30] = 0 ;Animationspos
    $Btn[31] = 8 ;Animationspos
    $Btn[32] = 16 ;Animationspos
    $Btn[33] = 0.1 ;Animationsspeed
    $Btn[34] = 0.1; Animationsspeed
    $Btn[35] = 0.1 ;Animationsspeed
    Return $Btn
    EndFunc


    ; #FUNCTION# ======================================================================================
    ; Name ..........: _Button_Set_Ani_Speed()
    ; Description ...: Verändert die Animationsgeschwindigkeit
    ; Syntax ........: _Button_Set_Ani_Speed(ByRef $a, $b, $c, $d)
    ; Parameters ....: ByRef $a - Handle des Buttons
    ; $b - Animationsspeed für den "Normal" Zustand. (In Frames pro Bild)
    ; $c - Animationsspeed für den "Hover" Zustand. (In Frames pro Bild)
    ; $d - Animationsspeed für den "Klick" Zustand. (In Frames pro Bild)
    ; Author ........: Mars
    ; =================================================================================================


    Func _Button_Set_Ani_Speed(ByRef $a, $b, $c, $d)
    $a[33] = 1/$b
    $a[34] = 1/$c
    $a[35] = 1/$d
    EndFunc


    ; #FUNCTION# ======================================================================================
    ; Name ..........: _Button_Set_Pic()
    ; Description ...: Weist einem Button bis zu 8 Bilder pro Status zu
    ; Syntax ........: _Button_Set_Pic(ByRef $a, $welche[, $b = False[, $c = False[, $d = False[, $e = False[, $f = False[, $g = False[, $h = False[, $i = False]]]]]]]])
    ; Parameters ....: ByRef $a - Handle des Buttons
    ; $welche - Status für den Die Bilder vorgesehen sind:
    ; |0 - Normal
    ; |1 - Hover
    ; |2 - Klick
    ; $b - [optional] Pfad zu einem Bild (default:False)
    ; $c - [optional] Pfad zu einem Bild (default:False)
    ; $d - [optional] Pfad zu einem Bild (default:False)
    ; $e - [optional] Pfad zu einem Bild (default:False)
    ; $f - [optional] Pfad zu einem Bild (default:False)
    ; $g - [optional] Pfad zu einem Bild (default:False)
    ; $h - [optional] Pfad zu einem Bild (default:False)
    ; $i - [optional] Pfad zu einem Bild (default:False)
    ; Author ........: Mars
    ; Remarks .......: Es kann auch nur ein Bild angegeben werden. In diesem Fall ist der Button nicht animiert.
    ; Die Bilder sollten der Buttongröße die bei _Button_Init angegeben wurde entsprechen.
    ; Die Bilder können nicht nachträglich verändert werden. Also den Button löchen und einen Neuen machen.
    ; =================================================================================================


    Func _Button_Set_Pic(ByRef $a, $welche, $b = False, $c = False, $d = False, $e = False, $f = False, $g = False, $h = False, $i = False)
    Switch $welche
    Case 0 ;Normal
    If $b Then $a[0] = _GDIPlus_ImageLoadFromFile($b)
    If $c Then $a[1] = _GDIPlus_ImageLoadFromFile($c)
    If $d Then $a[2] = _GDIPlus_ImageLoadFromFile($d)
    If $e Then $a[3] = _GDIPlus_ImageLoadFromFile($e)
    If $f Then $a[4] = _GDIPlus_ImageLoadFromFile($f)
    If $g Then $a[5] = _GDIPlus_ImageLoadFromFile($g)
    If $h Then $a[6] = _GDIPlus_ImageLoadFromFile($h)
    If $i Then $a[7] = _GDIPlus_ImageLoadFromFile($i)
    Case 1 ;Hover
    If $b Then $a[8] = _GDIPlus_ImageLoadFromFile($b)
    If $c Then $a[9] = _GDIPlus_ImageLoadFromFile($c)
    If $d Then $a[10] = _GDIPlus_ImageLoadFromFile($d)
    If $e Then $a[11] = _GDIPlus_ImageLoadFromFile($e)
    If $f Then $a[12] = _GDIPlus_ImageLoadFromFile($f)
    If $g Then $a[13] = _GDIPlus_ImageLoadFromFile($g)
    If $h Then $a[14] = _GDIPlus_ImageLoadFromFile($h)
    If $i Then $a[15] = _GDIPlus_ImageLoadFromFile($i)
    Case 2 ;Gedrückt
    If $b Then $a[16] = _GDIPlus_ImageLoadFromFile($b)
    If $c Then $a[17] = _GDIPlus_ImageLoadFromFile($c)
    If $d Then $a[18] = _GDIPlus_ImageLoadFromFile($d)
    If $e Then $a[19] = _GDIPlus_ImageLoadFromFile($e)
    If $f Then $a[20] = _GDIPlus_ImageLoadFromFile($f)
    If $g Then $a[21] = _GDIPlus_ImageLoadFromFile($g)
    If $h Then $a[22] = _GDIPlus_ImageLoadFromFile($h)
    If $i Then $a[23] = _GDIPlus_ImageLoadFromFile($i)
    EndSwitch
    EndFunc



    ...


    Ich versuche diese Funktionen so zu überarbeiten, dass all diese Initialisierungs- und Variablen - Hantierung im Hintergrund passiert..


    der Aufruf:


    Global $hButton = _Button_Init(10, 10, 200, 60, $hGUI)


    sollte auch ganz gut ohne $hGUI funktionieren, weil man diesen ja beim normalen GuiCrtlCreateButton auch nicht an gibt....


    Also meine Frage nochmal:


    "Wie komme ich im Unterprogramm/Include auf das Handle des zuletzt erstellen Fensters"


    Danke für eure Antworten :)

    Hey Leute:
    ich erstelle im HauptCode ein Fenster:


    GuiCreate("Hallo")
    #include <unterprogramm.au3>


    unterprogramm.au3:



    #Include <GDIPlus.au3>
    _GDIPlus_GraphicsCreateFromHWND($hWnd)


    Ich versuche an das "$hWnd" heranzukommen, OHNE eine Variable extra "durchschleifen" zu müssen...!
    Normalerweise geht es ja, wenn man den Befehl danach schreibt und dann "-1" verwendet! Das geht leider in dem Include nicht!
    Ein Macro dafür existiert leider auch nicht...


    Habt ihr ne Idee..?

    Absoluten Respekt von meiner Seite aus!
    ...Einmal an so einem Großen Projekt über langen Zeitraum zu arbeiten... Mit dieser Qualität...!
    Einfach Geniales Projekt !
    Und die Tatsache, dass es als einzelne Person umgesetzt wird: Bewundernswert!

    Ok... unter windows 7 getestet und funktioniert NICHT




    und das Bild kommt nicht...


    Script ist im C:\NeuerOrdner


    ... auch, als ich #RequireAdmin dran gemacht habe, kam NIX ...


    Funktioniert WUNDERBAR...!


    Memo an mich... FileDelete entfernen... ;)

    Hey Leute:
    Um mein Männchen mit ner Haake in der Hand übern Bildschirm zu steuern, brauche ich nen Paar Tasten über _ispressed()
    Dabei is mir aufgefallen, dass umlaute nich vorhanden sind in der Hilfe... (die brauch ich zwar nich, aber wills nur mal erwähnen ;) )


    Desweiteren brauche ich folgende taste um mein Männchen schlagen zu lassen: <


    Weiß jmn. wo ich den entrsprechenden Hex-Code herbekomme..?


    Danke euch! :)

    Hey Leute:
    mein Ziel: aufleuchten der oben beschriebenen Lampen im Stiel von Knightrider... (also aufleuchten von links nach rechts)


    deswegen bin ich auf der suche nach ner Funktion, die mir anzeigt, ob nun schon die "Feststell" oder "num" - Taste gedrückt ist, oder nicht...


    Hab schon geguckt und nix gefunden... :)
    danke für eure hilfe

    sehr guuut gemacht...


    nur eine sache:


    Es wird nicht erkannt, wenn 2 Tasten gedrückt werden...


    oder mache ich das falsch..?


    #include <Key.au3>


    Local $Taste
    While Not ($Taste="ESC")
    $Taste=Key(Default,-120,1600)
    If $Taste Then ConsoleWrite($Taste)
    WEnd


    Drücke Shift und e ... oder Windows und d ...


    Wenn man aber 2 Buchstaben zeitlich etwas versetzt drückt, wird dies komischerweise erkannt...


    hmmm....

    hmmm... na gut:
    ich kenne mich leider nicht mit Dll's aus, deswegen wüsste ich jetzt nicht, wie man beispielsweise die Maus im Bild mit überträgt...
    hab mich mal "versucht" schlau zu machen, ... , also gegen einen Tip hätte ich nichts einzuwenden... ;)


    Und weiter: das "gedrückthalten" und "langziehen" oder "NICHT loslassen" der Maus gestaltet sich ja auch als schwierig zu erkennen, da das ja auch in ner DLL zu finden ist, die ich nicht lesen kann..


    Danke für Tips aller art! :)

    man is das ding schnell...
    habs mal mit tcp geschrieben... viel zu lahm..
    dann udp... schneller, aber hatte keine vergleich- oder zoom-funktion drin...


    Es wäre geil, wenn du es irgendwie schaffen könntest, dass man den mauszeiger sieht...
    Und: Maustaste gedrückt halten und dann "ziehen"... Markiert er dann mehrere Dateien..?


    Mfg Dennis

    Hey Leute:
    Files löschen:



    FileSetAttrib($FullPath, '-R-H')
    FileDelete($FullPath)
    ;Sleep(200)
    ;Fehlermeldung...
    If FileExists($FullPath) Then
    MsgBox(0,"","Fehler beim Löschen des Datei!")
    Return -1
    EndIf


    Nun zu meiner Frage


    Wie geht es, Unsichtbare, Schreibgeschützte ORDNER (samt inhalt) zu löschen...
    Denn da müsste man auch erst die Attribute resetten, was nur über ne CMD-Line geht, wordurch keine abfrage stattfinden kann UND was die sache erheblich langsamer machen sollte!


    Hier mein BeispielScript mit CMD und Hidden/ ReadOnly Ordner löschen:



    $FullPath = '...LinkZumOrdner...'


    ;Lösche Ordner mit Unterordner und Dateien...
    Run(@ComSpec & ' /c rmdir ' & '"' & $FullPath & '"', "", @SW_HIDE)


    ;Fehlermeldung... DIESE KANN NICHT ÜBERPRÜFEN, OB ORDNER GELÖSCHT WURDE!
    If @error Then
    MsgBox(0,"","Fehler beim Löschen des Ordners!")
    Return -1
    EndIf



    Vielleicht kann mir ja jemand helfen:


    Gibt es einen Weg, wie im FileDelete beschrieben, erst die Attribute zu resetten und den Ordner dann zu löschen UM zu kontrollieren, ob löschen erfolgreich war?
    Vielen dank für eure Antworten! :rock:

    Und wieder ne frage:


    Im Beispiel von AUtoit findet man nen Rohbau vom Server und Client...


    Von den Beiden Beispielen hab ich mir einfach die While schleife genommen und sie vertauscht...
    (Somit sendet der Server und hört der Client zu)


    Doch es geht nicht..


    Liegt es daran, dass ich was falsch gemacht habe?? Oder müsste man wieder ne Neue verbindung, Vom Server ausgehend, aufbauen... Woduch der SERVER ja kein SERVER mehr ist...


    Denk mal drüber nach...:)


    Hier der Code, über den ich rede:


    Client
    ; ; Dies ist der UDP Client
    ; ; Startet zuerst den Server


    ; Start des UDP-Dienstes
    ;==============================================
    UDPStartup()


    ; Registriert die Cleanup Funktion.
    OnAutoItExitRegister("Cleanup")


    ; Öffnet einen "SOCKET"
    ;==============================================
    $socket = UDPOpen("192.168.178.33", 65532)
    If @error <> 0 Then Exit




    While 1
    $data = UDPRecv($socket, 50)
    If $data <> "" Then
    MsgBox(0, "UDP-Daten", $data, 1)
    EndIf
    sleep(100)
    WEnd


    Func Cleanup()
    UDPCloseSocket($socket)
    UDPShutdown()
    EndFunc



    Server:


    ; ; Dies ist der UDP Server
    ; ; Startet diesen hier zuerst


    ; Start des UDP-Dienstes
    ;==============================================
    UDPStartup()


    ; Registriert die Cleanup Funktion.
    OnAutoItExitRegister("Cleanup")


    ; "Bind" zu einem Anschluss ("Socket") durchführen
    ;==============================================
    $socket = UDPBind("192.168.178.33", 65532)
    If @error <> 0 Then Exit


    $n=0
    While 1
    Sleep(2000)
    $n = $n + 1
    $status = UDPSend($socket, "Nachricht Nr." & $n)
    If $status = 0 then
    MsgBox(0, "FEHLER", "Fehler während des Sendens der UDP-Nachricht: " & @error)
    Exit
    EndIf
    WEnd


    Func Cleanup()
    UDPCloseSocket($socket)
    UDPShutdown()
    EndFunc


    Danke für jede Antwort! :rock::rock:

    Ja natürlich, das isn deskstream, WAS DENN SONST..!
    es geht doch darum, wie man aus eben diesem Handle von der Funktion das Bild rausließt, denn mit einem verschicktem Handle kann man nichts anfangen...


    Über tcp/UDP