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

Beiträge von Friesel

  • Bug bei ControlMove und Group Controls?

    • Friesel
    • 22. Juli 2013 um 10:48

    Moin!

    So wie du es jetzt machst, wird Group und Button quasi "verdoppelt".
    Laut deiner Beschreibung willst du aber beide verschieben und dann mußt du ControlMove auch auf beide anwenden.

    Falls ich richtig liege, würde es so funktionieren:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $hGui = GUICreate("Gui", 655, 290, 291, 152, BitOR($WS_SYSMENU, $WS_CAPTION, $WS_GROUP, $WS_HSCROLL, $WS_SIZEBOX))
    $Button1 = GUICtrlCreateButton("Ok", 443, 241, 97, 25, $WS_GROUP)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKSIZE)
    $Button2 = GUICtrlCreateButton("Abbrechen", 546, 241, 97, 25, $WS_GROUP)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKSIZE)
    $Group1 = GUICtrlCreateGroup("", 8, 8, 200, 100)
    $Button3 = GUICtrlCreateButton("Ersetzen", 58, 43, 100, 30)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKSIZE)

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

    GUISetState()
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $Button2
    Exit
    Case $Button1
    $pos = ControlGetPos($hGui, "", $Group1)
    ControlMove($hGui, "", $Group1, $pos[0], $pos[1]+50)
    $pos = ControlGetPos($hGui, "", $Button3)
    ControlMove($hGui, "", $Button3, $pos[0], $pos[1]+50)
    GUICtrlSetState( $Button3, $GUI_ENABLE) ;==> ohne diesen Befehl, wird der Button nicht korrekt dargestellt (bis er geklickt wird)
    EndSwitch
    WEnd

    [/autoit]

    *edit*
    Das stimmt natürlich mit dem Anzeigebug, so wie misterspeed es unterhalb beschreibt. Verdoppelt wird da selbstverständlich nichts :wacko:
    Aber wie dem auch sei, mit meinen Änderungen gehts auf jeden Fall...

  • StringinStr Grosses Problem mit String !!!! Wer kann helfen??

    • Friesel
    • 20. Juli 2013 um 08:41

    Eins gleich vorweg:
    Ich muß name22 in allen Punkten Recht geben...

    Ich denke aber, dein "Problem" ist nicht die Faulheit, sondern dein Unwissen.
    Wenn du wirklich aufmerksam meine Skripte und kommentare gelesen hast wie du sagst, hast du so gut wie nichts verstanden, weil dir offensichtlich die Grundlagen fehlen.

    Ich selber habe erst vor ca. einem 3/4 Jahr angefangen zu Programmieren (siehe Anmeldedatum), dabei aber sehr viel Wert auf die Grundlagen gelegt. Daher wage ich zu behaupten, die meisten "Standard-Probleme" lösen und die meisten "Standard-Fragen" beantworten zu können.
    Es wird dir bestimmt nicht schaden, das eine oder andere Tutorial durchzuarbeiten und ein paar kleine Programme zu schreiben.

    Mittlerweile bin ich allerdings auch davon überzeugt, dass es sich bei der besagten Seite nicht um deine Eigene handelt.
    Solltest du einfach nur Bilder von verschiedenen Seiten rippen wollen, installiere dir einfach das Firefox AddOn ImageHost Grabber. Das lädt so ziemlich alles an Bildern runter, sogar von solchen Hostern, die dich erstmal mit Span zumüllen bevor sie ein Bild preisgeben...

    Mein letztes Skript aus Beitrag #13 ist "Standalone". Du hättest einfach nur die URL der Seite einfügen müssen, wie in den Kommentaren beschrieben. Eine Verwendung der FF.au3 UDF ist nicht erforderlich.

    Wie auch immer, hier mein allerletzter Versuch am Beispiel dieses Threads (unbedingt Kommentare im Skript lesen!!!):

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <String.au3> ;==> nur benötigt für _StringBetween -> kann weg, wenn RegEx benutzt wird

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

    $bHTML = InetRead("http://www.autoit.de/index.php?page=Thread&threadID=41892", 1) ;==> Liest den Scourcecode der angegebenen URL in binärer Form aus
    $sHTML = BinaryToString($bHTML) ;==> Umwandlung in Stringform

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

    GUICreate("HTML-Source", 1000, 600, Default, Default, 12582912) ;==> Fenster erstellen, um anzuzeigen, was in der Variblen $sHTML steht -> wird nicht benötigt
    GUICtrlCreateEdit("", 0, 0, 1000, 600, 3152064) ;==> hier kommts rein
    GUICtrlSetData(-1, $sHTML)

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

    GUISetState()

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

    ;==> Beispiel für _StringBetween ==================

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

    ;==> diese Suchbegriffe machen in diesem Thread keinen Sinn, können aber für "deine" Seite aktiviert werden
    ;$sSuchStringStart = 'href="http://www.meine-domain.de/bilder" id="'
    ;$sSuchStringEnd = '" style='
    ;<==

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

    ;==> daher exemplaisch alle Links zu Javascript Dateien herausfiltern (auskommentieren/löschen, wenn obige Suchbegriffe benutzt werden)
    $sSuchStringStart = 'type="text/javascript" src="'
    $sSuchStringEnd = '"></script>'
    ;<==

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

    $aFound = _StringBetween($sHTML, $sSuchStringStart, $sSuchStringEnd) ;==> erstellt ein ARRAY mit allen gefundenen Übereinstimmungen --> hast du in deinem "Versuch" als normale Variable behandelt, was nicht funktioniert

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

    $aRegExUnique = _ArrayUnique($aFound) ;==> entfernt doppelte Einträge, falls vorhanden
    _ArrayDisplay($aFound) ;==> dient nur der Anzeige der Treffer
    ;<=================================================

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

    ;==> Beispiel für StringRegExp ====================
    $sSuchStringRegEx = 'Bild\d{1,}' ;==> findet alles, was mit "bild" gefolgt von einem beliebigen ganzzahligem Wert im Sourcecode zu finden ist (Groß-/Kleinschreibung wird ignoriert)
    $aRegEx = StringRegExp($sHTML, $sSuchStringRegEx, 3) ;==> erstellt ein Array mit allen gefundenen Übereinstimmungen
    $aRegExUnique = _ArrayUnique($aRegEx) ;==> entfernt doppelte Einträge, falls vorhanden
    _ArraySort($aRegExUnique) ;==> Kommentar überflüssig ;)
    _ArrayDisplay($aRegExUnique, "$aRegExAll") ;==> dient nur der Anzeige der Treffer
    ;<=================================================

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

    Exit

    [/autoit]


    Weitere Hilfe gibts nur gegen Sourcecode oder Orginal URL.
    Auf Stochern im Dunkeln hab ich keine Lust mehr...


    Sanfte Grüße :D

    Ps: als Schmerzensgeld spende bitte einen beliebigen Betrag an eine beliebige Hilfsorganisation 8)

  • Allgemeine Icon Frage

    • Friesel
    • 19. Juli 2013 um 09:01

    Ich mache sowas Immer mit XnView
    Mit der Qualität beim "Umformatieren" war ich bisher immer zufrieden.
    Das Teil ist schnell, klein, "spricht" endlos viele Formate und ist kostenlos :love:

  • Abfrage des aktuell verbundenen WLAN/ ob im "Heimnetz"

    • Friesel
    • 19. Juli 2013 um 07:12

    _WLAN_GetInfo() - WLAN-Infos über 'netsh' auslesen

    Ungetestet, hab kein WLAN...

  • StringinStr Grosses Problem mit String !!!! Wer kann helfen??

    • Friesel
    • 18. Juli 2013 um 21:49
    Zitat von bilythekids

    die funktion soll genau das finden http://www.meine-domain.de/bilder" id="Bild13"


    Das ist natürlich was Anderes und total einfach :D
    Ich dachte, du wolltest das finden, was danach folgt. Daher auch in Post #5 mein Beispiel mit "Ha, du Pfeiffe! Mich kriegst mich nie!!!" :wacko:

    Allerdings werde ich FF.au3 nicht anfassen, weil das für die Lösung des Problems zu umständlich, langsam und überfrachtet ist 8)


    So müßte es gehn: (*edit: ab Zeile 33 noch 3 RegEx Varianten hinzugefügt)

    Spoiler anzeigen
    [autoit]

    #include <Array.au3> ;==> nur benötigt für _ArrayDisplay -> kann weg
    #include <String.au3> ;==> nur benötigt für _StringBetween -> kann weg, wenn RegEx benutzt wird

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

    ;$bHTML = InetRead("http://www.meine-domain.de", 1) ;==> hier dann deine URL und Zeilen 9 - 15 auskommentieren/löschen
    ;$sHTML = BinaryToString($bHTML)

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

    $sHTML = '</div> </div> <h1><a href="http://www.meine-domain.de/bilder" id="Bild1" style=""></a><a</body></html>' & _
    '</div> </div> <h1><a href="http://www.meine-domain.de/bilder" id="Bild5" style=""></a><a</body></html>' & _
    '</div> </div> <h1><a href="http://www.meine-domain.de/bilder" id="Bild13" style=""></a><a</body></html>' & _
    'und zwischen durch mal was völlig anderes http meine-domain Bild 08/15' & _
    '</div> </div> <h1><a href="http://www.meine-domain.de/bilder" id="Bild117" style=""></a><a</body></html>' & _
    '</div> </div> <h1><a href="http://www.meine-domain.de/bilder" id="Bild01" style=""></a><a</body></html>' & _
    '</div> </div> <h1><a href="http://www.meine-domain.de/bilder" id="Bild001" style=""></a><a</body></html>'

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

    Global $aFoundComplete[1]

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

    $sSuchStringStart = 'href="http://www.meine-domain.de/bilder" id="'
    $sSuchStringEnd = '" style='

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

    $aFound = _StringBetween($sHTML, $sSuchStringStart, $sSuchStringEnd) ; nur die Bildnummer anzeigen

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

    ReDim $aFoundComplete[UBound($aFound)]

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

    For $i = 0 To UBound($aFound) - 1
    $aFoundComplete[$i] = 'href="http://www.meine-domain.de/bilder" id="' & $aFound[$i] & '"'
    Next

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

    _ArrayDisplay($aFound) ;==> Nur die Bildnummer
    _ArrayDisplay($aFoundComplete) ;==> kompletter Suchstring

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

    MsgBox(0,"RegEx", "Achtung, jetzt kommt RegEx!")

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

    ;==> mit RegEx ist das Ganze natürlich am kompaktesten ;)
    $sSuchStringRegExNum = 'href="http://www.meine-domain.de/bilder" id="Bild(\d*)'
    $sSuchStringRegExBildNum = 'href="http://www.meine-domain.de/bilder" id="(Bild\d*)'
    $sSuchStringRegExAll = 'href="http://www.meine-domain.de/bilder" id="Bild\d*'

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

    $aRegExNum = StringRegExp($sHTML, $sSuchStringRegExNum, 3)
    $aRegExBildNum = StringRegExp($sHTML, $sSuchStringRegExBildNum, 3)
    $aRegExAll = StringRegExp($sHTML, $sSuchStringRegExAll, 3)

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

    _ArrayDisplay($aRegExNum) ;==> RegEx Suchstring Nummer
    _ArrayDisplay($aRegExBildNum) ;==> RegEx Suchstring Bild/Nummer
    _ArrayDisplay($aRegExAll) ;==> RegEx Suchstring komplett

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

    Exit

    [/autoit]


    Sanfte Grüße :D


    Ps: Sollte es jetzt immer noch nicht funktionieren, verlange ich Schmerzensgeld :rofl:

  • Ifo Edit mit Autoit automatisch bei vob files die in ordnern liegen Ifo und bup erzeugen

    • Friesel
    • 18. Juli 2013 um 17:19

    Da IfoEdit anscheinend nicht über die Command Line anzusteuern ist, ist es für mich uninteressant. Dieses Rumgefummel mit Tasten senden find ich gruselig :wacko:
    Hier finedst du allerdings ein paar Skripte, die das erledigen.
    Habs nicht getestet und kann dir nicht sagen, ob die was taugen....

    Ps: Ja, mir ist bewusst, dass das Thema veraltet ist, aber besser spät antworten, als nie :rock:


    Sanfte Grüße :D

  • GDI+ Anzeige von Bildern fehlerhaft bei wechselnder Grösse / Performance Tips gesucht

    • Friesel
    • 18. Juli 2013 um 01:37
    Zitat von Mars

    GDI kommt aber mit dem Skalieren nicht richtig klar (kann man glaube ich über einen Modus beheben, habe ich aber auf die schnelle nicht gefunden udn ich muss jetzt weg).

    Zitat von Friesel


    2. Bei aktivierter Skalierung tritt bei fast allen Bildern eine Art Schachbrettmuster in unterschiedlicher Stärke auf: (Korrektur fürs Zitieren: Der Effekt tritt nur beim Verkleinern auf)
    [Blockierte Grafik: http://i.imgur.com/NKOQume.jpg]
    Aber du hattest die Probleme bezüglich der Skalierung ja "angekündigt"

    Google und MSDN sei Dank, habe ich die Lösung gefunden:

    Die Funktion SetStretchBltMode aus der GDI32.DLL behebt das Problem. Wird der Modus auf HALFTONE gesetzt, gibt es keinerlei Artefakte mehr.
    Ändert man die Funktion _WinAPI_StretchBlt im Skript folgendermaßen ab, läuft dieser Teil des Skriptes so, wie ich es mir vorgestellt habe:

    [autoit]

    Func _WinAPI_StretchBlt($hDestDC, $iXDest, $iYDest, $iWidth, $iHeight, $hSrcDC, $iXSrc, $iYSrc, $iWidthSrc, $iHeightSrc, $iROP)
    DllCall('GDI32.DLL', 'int', 'SetStretchBltMode', 'hwnd', $hDestDC, 'int', 3)
    DllCall('GDI32.DLL', 'int', 'StretchBlt', 'hwnd', $hDestDC, 'int', $iXDest, 'int', $iYDest, 'int', $iWidth, 'int', $iHeight, 'hwnd', $hSrcDC, 'int', $iXSrc, 'int', $iYSrc, 'int', $iWidthSrc, 'int', $iHeightSrc, 'int', $iROP)
    EndFunc ;==>_WinAPI_StretchBlt

    [/autoit]


    Zitat von Friesel

    3. Der Speicher füllt sich kontinuierlich mit jedem dargestellten Bild. Das ist sicherlich einfach zu beheben, aber wie gesagt, muß ich mir dein Skript erst noch richtig ansehen ;)


    Die Funktion _Image_Delete arbeitet nicht korrekt. Die Variable $vStruct ist immer ohne Wert (warum eigendlich?) und daher wird in folgender Zeile immer aus der Funktion gesprungen, ohne den Speicher zu bereinigen:

    [autoit]

    If Not $vStruct Then Return

    [/autoit]


    Kommtentiert man diese Zeile jedoch aus, läuft alles wie geplant, also so:

    [autoit]

    Func _Image_Delete(ByRef $vStruct)
    ;If Not $vStruct Then Return
    If Not DllStructGetData($vStruct, 1) Then Return ;==> Ich bin nicht sicher, ob das Sinn macht, aber es funktioniert (ganz ohne diese Zeile allerdings auch)
    _WinAPI_DeleteObject(DllStructGetData($vStruct, 1, 5))
    _WinAPI_DeleteDC(DllStructGetData($vStruct, 1, 1))
    $vStruct = 0
    EndFunc ;==>_Image_Delete

    [/autoit]


    Mars:
    Nochmals vielen Dank für dein Skript. So langsam steige ich dahinter, muß mich aber noch durch einiges durchkämpfen, um es so zu verstehen, dass ich DCs ohne stupides copy/paste in eigenen Skripten anwenden kann :D
    Vieleicht kann ich die anderen Probleme ja auch selbstständig lösen 8)


    Sanfte Grüße :D

  • STDOUT umleiten

    • Friesel
    • 16. Juli 2013 um 21:41

    Versuch mal das hier:

    [autoit]

    #include <Constants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $cmd = Run("ping google.de", @ScriptDir,@SW_HIDE,$STDOUT_CHILD)

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

    Local $a ;
    Local $line=""
    While 1

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

    $line =StdoutRead($cmd)
    If @error Then
    ConsoleWriteError($line)
    ExitLoop

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

    EndIf
    ConsoleWrite(ANSI2OEM($line))

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

    WEnd

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

    Sleep(2000)

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

    Func ANSI2OEM($text)
    $text = DllCall('user32.dll','Int','CharToOem','str',$text,'str','')
    Return $text[2]
    EndFunc

    [/autoit]

    Quelle: Parameterübergabe mit Umlauten und Sonderzeichen

    Ich kanns leider auf die Schnelle nicht testen, weil ich ein englisches Windows habe...

    *edit*
    Sorry, falsche Richtung. Siehe nächsten Beitrag von name22...


    Sanfte Grüße :D

  • RegEx unbekannte Anzahl an wiederholungen

    • Friesel
    • 16. Juli 2013 um 18:28
    Zitat von alpines

    Wenns mit 3 geht dann kann man das mit dem wegschneiden weglassen, spart Code.


    Ich hab übrigens gerade eben in einem anderen Thread ein Beispiel mit StringRegExp und dem Flag 3 gepostet.
    Ganz unten unter "Nachtrag".
    Das funktioniert allerdings nur, weil am Zeilenende nach neuen Übereinstimmungen gesucht wird...

  • RegEx unbekannte Anzahl an wiederholungen

    • Friesel
    • 16. Juli 2013 um 18:05
    Zitat von alpines

    Wenn du den ersten Eintrag hast schneidest du alles was links von dem was noch nicht angeschaut wurde weg und wiederholst das bis RegEx einen Fehler bzw. keinen Eintrag returnt.
    Der Return-Code für Error/keine Einträger sollte in der Hilfe stehen.


    Wenn man als Flag 3 benutzt, wird doch ein Array mit allen globalen Übereinstimmungen zurückgegeben. Also so:

    [autoit]

    $aMatch = StringRegExp("test", "pattern", 3)

    [/autoit]

    ...oder hab ich hier irgendwas verpasst? :wacko:

  • GDI+ Anzeige von Bildern fehlerhaft bei wechselnder Grösse / Performance Tips gesucht

    • Friesel
    • 16. Juli 2013 um 05:15

    eukalyptus:

    ...erstmal vielen dank für deine Mühe :thumbup:

    Ich habe die empfohlenen Änderungen vorgenommen und das Skript läuft jetzt tatsächlich besser, aber leider immer noch sehr "unrund"...
    Neben gelegendlichen Abstürzen fühlt sich das Browsen nun nicht mehr "richtig" an. Man bekommt kein direktes Feedback, sondern hat eine (wenn auch kleine) irritierende Verzögerung.

    Zitat von eukalyptus


    Die RegisterMsg-Funktionen müssen so schnell wie möglich abgearbeitet werden.
    Die Funktion _Show braucht zu lange und sollte deshalb nicht in _WM_MOUSEWHEEL aufgerufen werden.

    Wieso bekomme ich keine "Grey Screens" wenn ich _WM_MOUSEWHEEL mit den Hotkeys aufrufe? Ist das so viel schneller, als die Maus abzufragen?

    Zitat von eukalyptus

    Des weiteren brauchen diese Funktionen noch den Rückgabewert $GUI_RUNDEFMSG

    Wieso sollte man das so machen? Was hat es mit dem "internen Handler für eine Nachricht", der in der Hilfe erwähnt wird, auf sich?

    Zitat von eukalyptus

    Beim Wiederherstellen hilft

    [autoit]

    GUIRegisterMsg($WM_ERASEBKGND, "_WM_ERASEBKGND")

    [/autoit]


    wobei diese Funktion genau wie _WM_PAINT aussieht, mit dem Unterschied, dass du TRUE statt $GUI_RUNDEFMSG als Rückgabewert verwendest

    Das funktioniert super! Deutlicher Performancegewinn :thumbup:

    Hier mal das "bereinigte" Skript:

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GuiConstantsEx.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    Opt("MustDeclareVars", 1)

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

    OnAutoItExitRegister("_Exit")

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

    Global $hBitmap, $hBuffer, $path, $aFileList, $hGUI, $hImage, $iCounter, $hGraphic, $iScreenHeight, $idMsg, $iScreenWidth, $aPos[2] = [0, 0]

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

    Do
    $path = FileSelectFolder("Bilder-Verzeichnis wählen", "")
    If @error Then ;==> Bilderdownload anbieten, wenn kein Verzeichnis gewählt wird
    $idMsg = MsgBox(36, "Bilder laden...?", "Kein Verzeichnis gewählt. " & _
    "Sollen einige (große) Bilder von der Seite interfacelift.com geladen werden?" & @CRLF & _
    "Die 5 höchstbewerteten Bilder mit ~3840 Pixeln Breite (ca. 21 MB)")
    If $idMsg = 6 Then
    $path = @TempDir & "\_temp"
    DirCreate($path)
    InetGet("http://interfacelift.com/wallpaper/7yz4ma1/02348_caltonhilledinburgh_3840x1024.jpg", $path & "\Bild1.jpg")
    InetGet("http://interfacelift.com/wallpaper/7yz4ma1/03309_damnationcreektrail_3840x2400.jpg", $path & "\Bild2.jpg")
    InetGet("http://interfacelift.com/wallpaper/7yz4ma1/02544_aniconfromanewangle_3840x1024.jpg", $path & "\Bild3.jpg")
    InetGet("http://interfacelift.com/wallpaper/7yz4ma1/02554_shaftwoods_3840x1024.jpg", $path & "\Bild4.jpg")
    InetGet("http://interfacelift.com/wallpaper/7yz4ma1/02367_easternshoresunrise_3840x1024.jpg", $path & "\Bild5.jpg")
    Else
    Exit
    EndIf
    EndIf
    ;$aFileList = _FileListToArray($path, "*.jpg")
    $aFileList = _FileListToArrayMultiSelect($path, "*.gif,*.ico,*.jpg,*.jpeg,*.png,*.bmp", ",", 1)
    If $aFileList[0] = 0 Then MsgBox(16, "Keine Bilder", "Das Verzeichnis enthält keine Bilder." & @CRLF & "Bitte in folgendem Fenster ein korrektes Verzeichnis auswählen oder Abbrechen wählen...", 5)
    Until $aFileList[0] <> 0

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

    $hGUI = GUICreate("Show PIC", Default, Default, Default, Default, $WS_POPUP + $WS_MINIMIZEBOX)

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

    GUISetState()

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

    _GDIPlus_Startup()

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

    _Benchmark() ;==> einmal alle Bilder eines Verzeichnisses anzeigen und benötigte Zeit in der Konsole ausgeben

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

    GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN") ;==> Fenster mit Maus bewegen
    ;GUIRegisterMsg($WM_PAINT, "_WM_PAINT") ;==> Bild neu zeichnen, wenn es (teilweise) ausserhalb des Bildschirms war
    GUIRegisterMsg($WM_ERASEBKGND, "_WM_ERASEBKGND")
    GUIRegisterMsg($WM_MOUSEWHEEL, "_WM_MOUSEWHEEL") ;==> nächstes/vorheriges Bild
    GUIRegisterMsg($WM_ACTIVATE, "_WM_ACTIVATE") ;==> Curser Tasten (Up/Down) nur abfragen, wenn Fenster aktiv

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

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

    HotKeySet("{UP}", "_Up")
    HotKeySet("{DOWN}", "_Down")

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

    While Sleep(1000)
    WEnd

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

    Func _Show()
    AdlibUnRegister("_Show")
    HotKeySet("{UP}") ;==> keine Tasten abfangen während das Bild angezeigt wird, dadurch werden Bilder nur fortlaufend angezeigt, solange die Taste gedrückt ist
    HotKeySet("{DOWN}") ;==> wichtig zB bei sehr großen Bildern
    Local $iWidth, $iHeight, $paint, $idExit, $idContext, $idDummy, $hRgn
    Local Static $bDurchlauf = False
    Local Static $iScreenWidthOld, $iScreenHeightOld

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

    $hImage = _GDIPlus_ImageLoadFromFile($path & "\" & $aFileList[$iCounter])

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

    $iHeight = _GDIPlus_ImageGetHeight($hImage)
    $iWidth = _GDIPlus_ImageGetWidth($hImage)
    $iScreenHeight = Int(($iHeight * (@DesktopHeight / $iHeight)) - 40) ; Bild immer an Bildschirmhöhe anpassen minus Taskbar (Win 7, Taskbar unten)
    $iScreenWidth = Int($iWidth * ($iScreenHeight / $iHeight)) ; Anpassung an individuelle Konfiguration folgt

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

    ;ConsoleWrite($iScreenWidth & " X " & $iScreenHeight & @CRLF)
    ;ConsoleWrite($aFileList[$iCounter] & @CRLF)

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

    Switch $bDurchlauf ;==> werden die Grafiken direkt nach Anzeige gelöscht, hat WM_PAINT nichts zum anzeigen, daher in dieser Reihenfolge
    Case False ;==> nur beim ersten Durchlauf ausführen
    WinMove("Show PIC", "", $aPos[0], $aPos[1], $iScreenWidth, $iScreenHeight)

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

    #cs ; Wenn das Menü aktiviert ist, funktioniert das Bewegen des Fensters mit der Maus nicht mehr. Wie gehts richtig???
    $idDummy = GUICtrlCreateLabel("", 0, 0, $iScreenWidth, $iScreenHeight)
    $idContext = GUICtrlCreateContextMenu($idDummy)
    $idExit = GUICtrlCreateMenuItem("Beenden", $idContext)
    GUICtrlSetState($idExit, "_Exit")
    #ce

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iScreenWidth, $iScreenHeight, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    $bDurchlauf = True
    Case Else ;==> darf beim ersten Durchlauf nicht ausgeführt werden
    Select
    Case $iScreenWidthOld <> $iScreenWidth Or $iScreenHeightOld <> $iScreenHeight ;==> nur ausführen, wenn sich die Bildgröße ändert

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

    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    WinMove("Show PIC", "", $aPos[0], $aPos[1], $iScreenWidth, $iScreenHeight)
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iScreenWidth, $iScreenHeight, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)

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

    EndSelect
    EndSwitch

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

    ;WinMove("Show PIC", "", $aPos[0], $aPos[1], $iScreenWidth, $iScreenHeight)
    ;$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    ;$hBitmap = _GDIPlus_BitmapCreateFromGraphics($iScreenWidth, $iScreenHeight, $hGraphic)
    ;$hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)

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

    _GDIPlus_GraphicsDrawImageRect($hBuffer, $hImage, 0, 0, $iScreenWidth, $iScreenHeight)
    $paint = _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iScreenWidth, $iScreenHeight)
    If $paint = False Then Beep(1500, 50) ;nur zum debuggen

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

    _GDIPlus_ImageDispose($hImage)

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

    $iScreenWidthOld = $iScreenWidth
    $iScreenHeightOld = $iScreenHeight
    HotKeySet("{UP}", "_Up")
    HotKeySet("{DOWN}", "_Down")
    EndFunc ;==>_Show

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

    Func _WM_ERASEBKGND()
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iScreenWidth, $iScreenHeight)
    ConsoleWrite("WM_PAINT: " & $aFileList[$iCounter] & " -> " & $aPos[0] & "/" & $aPos[1] & " -> " & $iScreenHeight & " X " & $iScreenWidth & @CRLF)
    Return True
    EndFunc

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

    Func _WM_PAINT() ;==> ist das die beste/schnellste Lösung???
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iScreenWidth, $iScreenHeight)
    ConsoleWrite("WM_PAINT: " & $aFileList[$iCounter] & " -> " & $aPos[0] & "/" & $aPos[1] & " -> " & $iScreenHeight & " X " & $iScreenWidth & @CRLF)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_WM_PAINT

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

    Func _Benchmark()
    Local $begin
    $begin = TimerInit()
    For $i = 1 To $aFileList[0]
    ;0x00780000, 0xFF880000
    _WM_MOUSEWHEEL(Default, Default, 0xFF880000, Default)
    Next
    ConsoleWrite(TimerDiff($begin) / 1000 & @CRLF)
    ;MsgBox(0, "", TimerDiff($begin) / 1000)
    EndFunc ;==>_Benchmark

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

    Func _Down()
    _WM_MOUSEWHEEL(Default, Default, 0xFF880000, Default)
    EndFunc ;==>_Down

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

    Func _Up()
    _WM_MOUSEWHEEL(Default, Default, 0x00780000, Default)
    EndFunc ;==>_Up

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

    Func _WM_MOUSEWHEEL($hWnd, $iMsg, $iWParam, $iLParam)
    ;#forceref $hWnd, $iMsg, $iWParam, $iLParam
    Local $_iWParam
    ConsoleWrite($hWnd & "->" & $iMsg & "->" & $iWParam & "->" & $iLParam & "->>" & BitShift($iWParam, 16) & "->" & $iCounter & @CRLF)
    $_iWParam = BitShift($iWParam, 16) ;mögliche Werte für $iWParam 0x00780000, 0xFF880000

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

    If $_iWParam < 0 Then ; If $iWParam = 0xFF880000 Then
    $iCounter += 1
    If $iCounter > $aFileList[0] Then $iCounter = 1
    Else
    $iCounter -= 1
    If $iCounter < 1 Then $iCounter = $aFileList[0]
    EndIf

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

    ;_Show()
    AdlibRegister("_Show", 250)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_WM_MOUSEWHEEL

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

    Func _FileListToArrayMultiSelect($dir, $searchlist, $Separator, $iFlag = 0)
    Local $aFileList[1] = [0], $aFileList1, $iN, $Num, $search
    $search = StringSplit($searchlist, $Separator)
    If $search[0] > 0 Then
    For $iN = 1 To $search[0]
    $aFileList1 = _FileListToArray($dir, $search[$iN], $iFlag)
    If Not @error Then
    $Num = UBound($aFileList)
    _ArrayConcatenate($aFileList, $aFileList1)
    $aFileList[0] = $aFileList[0] + $aFileList[$Num]
    _ArrayDelete($aFileList, $Num)
    EndIf
    Next
    EndIf
    Return $aFileList
    EndFunc ;==>_FileListToArrayMultiSelect

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

    Func _WM_ACTIVATE()
    Switch WinActive("Show PIC")
    Case 0
    HotKeySet("{UP}")
    HotKeySet("{DOWN}")
    Case Else
    HotKeySet("{UP}", "_Up")
    HotKeySet("{DOWN}", "_Down")
    EndSwitch
    EndFunc ;==>_WM_ACTIVATE

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

    Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam) ;==> Fenster mit Maus bewegen
    If BitAND(WinGetState($hWnd), 32) Then Return $GUI_RUNDEFMSG
    DllCall("user32.dll", "long", "SendMessage", "hwnd", $hWnd, "int", $WM_SYSCOMMAND, "int", 0xF009, "int", 0)
    $aPos = WinGetPos("Show PIC")
    EndFunc ;==>_WM_LBUTTONDOWN

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

    Func _Exit()
    Local $delete
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_Shutdown()
    If FileExists(@TempDir & "\_temp\") Then
    $delete = DirRemove(@TempDir & "\_temp\", 1)
    If $delete = 0 Then MsgBox(16, "Fehler", "Das temporäre Verzeichnis '" & @TempDir & "\_temp\" & "konnte nicht gelöscht werden.")
    EndIf
    Exit
    EndFunc ;==>_Exit

    [/autoit]


    Mars:

    ...an dich natürlich auch erstmal mein verbindlichster Dank :thumbup:

    Dein Skript ist von der Performance her großartig, auch wenn ichs noch nicht richtig verstehe. Könntest du das Prinzip von DCs mal näher erläutern? DC bedeutet Device Context, richtig?
    Bisher hatte ich leider noch keine Zeit, mir dein "Werk" zu Gemüte zu führen, werde das aber in den nächsten Tagen nachholen :whistling:

    Folgende Fehler treten regelmässig auf:
    1. Gelegendlich hat zwar das Fenster die korrekte Größe, das Bild selbst wird allerdings zu klein dargestellt. Dieser Effekt tritt auch auf, wenn ich ohne Skalierung die Bilder in Orginalgröße anzeigen lasse.
    Zeile 88 und 89 geändert, um keine Skalierung vorzunehmen:

    [autoit]

    $iScreenHeight = $iHeigh
    $iScreenWidth = $iWidth

    [/autoit]


    ...und so siehts aus:
    [Blockierte Grafik: http://i.imgur.com/XHjg8z3.jpg]

    2. Bei aktivierter Skalierung tritt bei fast allen Bildern eine Art Schachbrettmuster in unterschiedlicher Stärke auf:
    [Blockierte Grafik: http://i.imgur.com/NKOQume.jpg]
    Aber du hattest die Probleme bezüglich der Skalierung ja "angekündigt" :D

    3. Der Speicher füllt sich kontinuierlich mit jedem dargestellten Bild. Das ist sicherlich einfach zu beheben, aber wie gesagt, muß ich mir dein Skript erst noch richtig ansehen ;)


    @all:

    Zu meinem Problem mit dem Kontext Menü auf den Bildern hat sich leider niemand geäußert (Punkt 3 im Startbeitrag).
    Dafür hat nicht zufällig jemand 'ne Lösung parat?


    Sanfte Grüße :D

  • StringinStr Grosses Problem mit String !!!! Wer kann helfen??

    • Friesel
    • 16. Juli 2013 um 02:46
    Zitat von bilythekids

    Muss derstrin dan so aussesehn bei mir klappt das leider nicht

    Global $aMeineHomepage

    $aMeineHomepage = _FFLinksGetAll()

    For $i = 0 To Ubound($aMeineHomepage) - 1
    $sMatch = $aMeineHomepage[$i][0]
    If StringInStr($sMatch, ''"http://www.meinedomain/" "id=bild1"' ) Then
    ...
    EndIf
    Next

    Da ich die FF.au3 UDF noch nie benutzt habe, kann ich dir nur bedingt helfen.
    Ich habe mir die Funktion _FFLinksGetAll() mal kurz angesehen, und ich denke du benutzt den falschen Index:

    [autoit]

    ; #FUNCTION# ===================================================================
    ; Name ..........: _FFLinksGetAll
    ; Description ...: Returns an array with informations about all existing links.
    ; Beschreibung ..: Gibt ein Array mit Informationen über alle vorhandenen Links zurück.
    ; AutoIt Version : V3.3.0.0
    ; Syntax ........: _FFLinksGetAll()
    ; Parameter(s): .:
    ; Return Value ..: Success - 2 dim array with the link informations:
    ; | array[n][0] = href
    ; | array[n][1] = hash
    ; | array[n][2] = search
    ; | array[n][3] = name
    ; | array[n][4] = id
    ; | array[n][5] = text
    ; | array[n][6] = innerHTML
    ; | array[n][7] = target
    ; | array[n][8] = protocol
    ; | array[n][9] = port
    ; Failure - array[0][0] = 0
    ; @ERROR -
    ; Author(s) .....: Thorsten Willert
    ; Date ..........: Tue Sep 22 12:00:34 CEST 2009 @458 /Internet Time/
    ; Link ..........:
    ; Related .......:
    ; Example .......: Yes
    ; ==============================================================================

    [/autoit]


    Du wertest array[n][0] aus. Darin steht aber nur href.
    Ich kenne zwar den Source Code deiner Seite nicht, aber du solltest innerHTML auswerten, also array[n][6].

    Hier mal ein Beispiel (bitte nicht vergessen, dies ist das erste Mal, dass ich diese UDF benutze):

    Spoiler anzeigen
    [autoit]

    #include <FF.au3>
    #include <Array.au3>

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

    Opt("MustDeclareVars", 1)

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

    Global $aLinks, $aFound[1] ; kann man auch komplett mit lokalen Variablen lösen, ich finds so aber praktischer :)

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

    _GetAll()
    _FindStuff()

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

    If $aFound[0] > 0 Then
    _ArrayDisplay($aFound)
    Else
    MsgBox(16, "Das war wohl nix!", "Keine Übereinstimmung gefunden.")
    EndIf

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

    Exit

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

    Func _GetAll()
    _FFStart("http://www.autoit.de/", Default, 0)
    If _FFIsConnected() Then
    $aLinks = _FFLinksGetAll()
    _ArrayDisplay($aLinks)
    EndIf
    EndFunc ;==>_GetAll

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

    Func _FindStuff()
    If IsArray($aLinks) Then ; mußte ich einfügen, da die Funktion (zumindest bei mir) regelmässig kein Ergebnis lieferte, wenn _FFStart ohne Parameter gestartet wurde ($iMode -> 1 = Start new process)
    Local $sSuchString = '"icon/minusS.png" id="' ; dieser String ist einigermassen vergleichbar mit deinem und liefert mehrere Treffer
    Local $iSuchStringLen = StringLen($sSuchString) ; Achtung: soll direkt hinter dem Suchbegriff gefiltert werden, muss $iSuchStringLen um 1 verkleinert werden (bei dir ist dort noch ein Leerzeichen)
    Local $iHit
    Local $a = 1 ; erster Treffer hat Index 1
    ReDim $aFound[UBound($aLinks)] ; das Array sollte mindestens so groß sein, wie die Anzahl aller Treffer

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

    For $i = 0 To UBound($aLinks) - 1
    $iHit = StringInStr($aLinks[$i][6], $sSuchString)
    If $iHit Then
    $aFound[$a] = StringTrimLeft($aLinks[$i][6], $iHit + $iSuchStringLen)
    $a += 1
    EndIf
    Next

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

    ReDim $aFound[$a] ; Größe des Arrays an Treffer anpassen
    ;Trefferanzahl in Index 0 schreiben
    $aFound[0] = $a - 1 ; $a - 1 entspricht UBound($aFound) - 1
    Else
    MsgBox(0, "Fehler", "Die Funktion _FFLinksGetAll() hat mal wieder nix gefunden. Siehe Log in der Konsole...")
    EndIf
    EndFunc ;==>_FindStuff

    [/autoit]


    Ich habs jetzt so gelöst, dass die Trefferanzahl in den Index 0 der Variablen geschrieben wird. Man kann natürlich auch den ersten Treffer in Index 0 schreiben und die Größe des Arrays mit Ubound ermitteln...


    Nachtrag:

    Viel einfacher und schneller geht es ohne FF.au3. Durch deine Vorgabe war ich so fixiert auf die UDF, dass ich die simple Lösung garnicht in Betracht gezogen hatte :wacko:
    Hier das Beispiel von oben mit autoit.de:

    [autoit]

    #include <Array.au3>

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

    $bHTML = InetRead("http://www.autoit.de/", 1)
    $sHTML = BinaryToString($bHTML)

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

    $sSuchString = '"icon/minusS.png" id="(.*)'
    $aRegEx = StringRegExp($sHTML, $sSuchString, 3)

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

    _ArrayDisplay($aRegEx)

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

    Exit

    [/autoit]

    Für deine konkrete Anforderung sollte der RegEx Pattern so aussehn:

    [autoit]

    $sSuchString = '"http://www.meinedomain/" "id=bild1" (.*)'

    [/autoit]

    ...ggf. kann man am Ende noch überflüssige Zeichen abschneiden, je nach Bedarf.

    Sollte das immer noch nicht funktionieren, dann mußt du mal ein bisschen mehr deines Source Codes posten, oder gleich die URL deiner Seite preisgeben...


    Sanfte Grüße :D

  • StringinStr Grosses Problem mit String !!!! Wer kann helfen??

    • Friesel
    • 15. Juli 2013 um 22:50
    Zitat von bilythekids

    Ok der sstring wird nun gefunden aber findet er jetzt "http://www.meinedomain/" + "id=bild1"
    oder findet er "http://www.meinedomain/" und "id=bild1" ?

    ich meine wir der string nun genau so gefunden "http://www.meinedomain/" "id=bild1"

    Sanfte Grüße :D


    Was immer du zwischen die einzelnen Anführungszeichen setzt (zB: 'dfklja"sld"sdkf''"sdlkf!"§*#') wird gesucht. Nur wenn du innerhalb eine ungerade Anzahl an ' hast, mußt du auskommentieren, die Wahrscheinlichkeit ist aber eher gering ;)
    Um die Frage zu beantworten, ja, es wird genau dieser String gefunden: "http://www.meinedomain/" "id=bild1"


    Sanfte Grüße :D

  • StringinStr Grosses Problem mit String !!!! Wer kann helfen??

    • Friesel
    • 15. Juli 2013 um 22:18
    Zitat von bilythekids

    Wie kann ich nach diesem String suchen im Quelltext sieht es ungefähr so aus

    blablabalbalbalbalbalbalbalba "http://www.meinedomain/" "id=bild1" blablabalbalbalbalbalbalbalba


    Ausgehend von dieser Vorgabe funktioniert das hier:

    [autoit]

    $sTestString = 'blablabalbalbalbalbalbalbalba "http://www.meinedomain/" "id=bild1" Ha, du Pfeiffe! Mich kriegst mich nie!!!'
    $sSuchString = '"http://www.meinedomain/" "id=bild1"'
    $iSuchStringLen = StringLen($sSuchString)

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

    $iFound = StringInStr($sTestString, $sSuchString)
    $sResult = StringTrimLeft($sTestString, $iFound + $iSuchStringLen)

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

    MsgBox(0, "", $sResult)

    [/autoit]

    Sanfte Grüße :D

  • Text zentieren

    • Friesel
    • 12. Juli 2013 um 19:14
    Zitat von RR04

    Hi, warum nicht mit "StringFormat" ? ;)


    Hm....ist das nicht genau das selbe, wie meins, nur schwerer zu "lesen"? :whistling:

  • Text zentieren

    • Friesel
    • 12. Juli 2013 um 17:55

    Soweit mir bekannt ist, "zerschiesst" die Verwendung von Farben die verwendeten Styles (zumindest teilweise)

    Zitat von m-obi

    Versuch mal $SS_CENTERIMAGE.


    ...funktioniert bei mir nicht. Sehe keine Änderung.

    Ich könnte dir so ne Art Workaround anbieten: setze an den Anfang der Zeichenkette einen weiteren Zeilenumbruch (@CRLF) und verwende einen kleineren Zeichensatz.

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    #region ### START Koda GUI section
    ; Das Fenster der GUI erstellen und formatieren
    GUICreate(" Status des WLAN-Adapters umschalten.", 420, 269, -1, 124)
    GUISetBkColor(0x808080)
    $Button_2 = GUICtrlCreateButton(@CRLF & "WLAN" & @CRLF & "aktivieren.", 46, 48, 330, 174, BitOR($BS_PUSHLIKE, $BS_MULTILINE, $WS_BORDER, $BS_CENTER))
    GUICtrlSetFont(-1, 22, 800, 0, "Arial Black")
    GUICtrlSetColor(-1, 0x00FF00)
    GUICtrlSetBkColor(-1, 0xA0A0A4)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $GUI_Msg = GUIGetMsg()
    Select
    Case $GUI_Msg = $GUI_EVENT_CLOSE
    ExitLoop
    EndSelect
    WEnd

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

    Exit

    [/autoit]

    Deins:
    [Blockierte Grafik: http://i.imgur.com/wqsZ4gT.png]

    Meins:
    [Blockierte Grafik: http://i.imgur.com/ykEKx2U.png]


    Sanfte Grüße :D

  • GDI+ Anzeige von Bildern fehlerhaft bei wechselnder Grösse / Performance Tips gesucht

    • Friesel
    • 11. Juli 2013 um 20:45

    Hallo zusammen!

    Das Skript ist nur ein kleiner Auszug und ist entsprechend angepasst worden, damit es lauffähig ist.

    Folgendes Problem tritt bei mir auf:
    Sobald ich mit dem Mausrad durch ein zuvor gewähltes Bilderverzeichnis browse und ein angezeigtes Bild eine andere Auflösung hat als sein Vorgänger, wird es nur kurz dargestellt und verschwindet dann. Was bleibt, ist eine graue Fläche in der Größe des neuen Bildes.
    Die folgenden Bilder werden wieder normal angezeigt, bis die Bildauflösung wechselt., dann tritt wieder der selbe Fehler auf.
    Das geschieht zwar auch, wenn das Mausrad durch die Curser-Tasten "emuliert" wird (Funktionen: _Up und _Down), aber das Bild wird letztendlich doch angezeigt.
    -> bei Tastendruck wird die ?selbe? Nachricht an die Funktion _WM_MOUSEWHEEL gesendet wie bei Benutzung des Mausrades.

    Ich bin mir nicht sicher, ob es sich wirklich um ein GDI+ Problem handelt, oder ob ich einfach irgendwo 'nen Denkfehler eingebaut habe.

    Also habe ich folgende Fragen:
    1. Wieso werden Bilder bei Benutzung des Mausrades nicht angezeigt, wenn die Auflösung wechselt? (Fenster wird mit WinMove angepasst)
    1.1. Nachtrag: Jetzt mußte ich feststellen, dass der Fehler auch beim Minimieren und Wiederherstellen des Fensters auftritt (Maus-Klick aufs Taskbar-Icon). Die WM_PAINT Message wird aber laut Konsole verarbeitet und funktioniert auch noch, wenn man das Bild anschliessend bewegt.
    2. Wie kann ich erreichen, dass das vorige Bild erst gelöscht wird, wenn das neue Bild im Buffer zur Verfügung steht und geblittet werden kann, so dass bei großen Bildern nicht zuerst diese graue Fläche zu sehen ist?

    Weitere Fragen:
    3. Wie kann ich ein Kontext Menü (Zeilen 84-87) auf das Fenster (Bild) legen? Die Möglichkeit, das Fenster mit der Maus zu bewegen darf nicht wegfallen.
    4. Gibt es eine Methode, das Flackern (Tearing) beim Bildwechsel zu beseitigen? Eigendlich dachte ich, dass das durch die Benutzung des Buffers geschieht, was aber nicht der Fall ist. Stickwort: vSync?
    5. Durch die Benutzung des Buffers und WM_PAINT wird das Bild schon relativ schnell dargestellt, wenn sich Teile ausserhalb des Bildschirms befinden (deutlich schneller, als ohne Buffer). Geht das noch schneller, da es immer noch hakt?

    Da die beschriebenen "Effekte" besonders deutlich bei sehr großen Bildern zu sehen sind habe ich eine Funktion eingebaut, einige aus dem Internet zu laden, falls lokal keine vorhanden sind (Abbruch klicken bei Verzeichnisauswahl).

    Und noch eine allgemeine Frage:
    6. Hat noch jemand Tips, die Bilddarstellung zu optimieren, um noch mehr Geschwindigkeit rauszuholen?


    Und nach soviel Text, hier noch das Skript:

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GuiConstantsEx.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    Opt("MustDeclareVars", 1)

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

    OnAutoItExitRegister("_Exit")

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

    Global $hBitmap, $hBuffer, $path, $aFileList, $hGUI, $hImage, $iCounter, $hGraphic, $iScreenHeight, $idMsg, $iScreenWidth, $aPos[2] = [0, 0]

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

    Do
    $path = FileSelectFolder("Bilder-Verzeichnis wählen", "")
    If @error Then ;==> Bilderdownload anbieten, wenn kein Verzeichnis gewählt wird
    $idMsg = MsgBox(36, "Bilder laden...?", "Kein Verzeichnis gewählt. " & _
    "Sollen einige (große) Bilder von der Seite interfacelift.com geladen werden?" & @CRLF & _
    "Die 5 höchstbewerteten Bilder mit ~3840 Pixeln Breite (ca. 21 MB)")
    If $idMsg = 6 Then
    $path = @TempDir & "\_temp"
    DirCreate($path)
    InetGet("http://interfacelift.com/wallpaper/7yz4ma1/02348_caltonhilledinburgh_3840x1024.jpg", $path & "\Bild1.jpg")
    InetGet("http://interfacelift.com/wallpaper/7yz4ma1/03309_damnationcreektrail_3840x2400.jpg", $path & "\Bild2.jpg")
    InetGet("http://interfacelift.com/wallpaper/7yz4ma1/02544_aniconfromanewangle_3840x1024.jpg", $path & "\Bild3.jpg")
    InetGet("http://interfacelift.com/wallpaper/7yz4ma1/02554_shaftwoods_3840x1024.jpg", $path & "\Bild4.jpg")
    InetGet("http://interfacelift.com/wallpaper/7yz4ma1/02367_easternshoresunrise_3840x1024.jpg", $path & "\Bild5.jpg")
    Else
    Exit
    EndIf
    EndIf
    ;$aFileList = _FileListToArray($path, "*.jpg")
    $aFileList = _FileListToArrayMultiSelect($path, "*.gif,*.ico,*.jpg,*.jpeg,*.png,*.bmp", ",", 1)
    If $aFileList[0] = 0 Then MsgBox(16, "Keine Bilder", "Das Verzeichnis enthält keine Bilder." & @CRLF & "Bitte in folgendem Fenster ein korrektes Verzeichnis auswählen oder Abbrechen wählen...", 5)
    Until $aFileList[0] <> 0

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

    $hGUI = GUICreate("Show PIC", Default, Default, Default, Default, $WS_POPUP + $WS_MINIMIZEBOX)

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

    GUISetState()

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

    _GDIPlus_Startup()

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

    _Benchmark() ;==> einmal alle Bilder eines Verzeichnisses anzeigen und benötigte Zeit in der Konsole ausgeben

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

    GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN") ;==> Fenster mit Maus bewegen
    GUIRegisterMsg($WM_PAINT, "_WM_PAINT") ;==> Bild neu zeichnen, wenn es (teilweise) ausserhalb des Bildschirms war
    GUIRegisterMsg($WM_MOUSEWHEEL, "_WM_MOUSEWHEEL") ;==> nächstes/vorheriges Bild
    GUIRegisterMsg($WM_ACTIVATE, "_WM_ACTIVATE") ;==> Curser Tasten (Up/Down) nur abfragen, wenn Fenster aktiv

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

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

    HotKeySet("{UP}", "_Up")
    HotKeySet("{DOWN}", "_Down")

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

    While Sleep(1000)
    WEnd

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

    Func _Show()
    HotKeySet("{UP}") ;==> keine Tasten abfangen während das Bild angezeigt wird, dadurch werden Bilder nur fortlaufend angezeigt, solange die Taste gedrückt ist
    HotKeySet("{DOWN}") ;==> wichtig zB bei sehr großen Bildern
    Local $iWidth, $iHeight, $paint, $idExit, $idContext, $idDummy, $hRgn
    Local Static $bDurchlauf = False
    Local Static $iScreenWidthOld, $iScreenHeightOld

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

    $hImage = _GDIPlus_ImageLoadFromFile($path & "\" & $aFileList[$iCounter])

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

    $iHeight = _GDIPlus_ImageGetHeight($hImage)
    $iWidth = _GDIPlus_ImageGetWidth($hImage)
    $iScreenHeight = Int(($iHeight * (@DesktopHeight / $iHeight)) - 40) ; Bild immer an Bildschirmhöhe anpassen minus Taskbar (Win 7, Taskbar unten)
    $iScreenWidth = Int($iWidth * ($iScreenHeight / $iHeight)) ; Anpassung an individuelle Konfiguration folgt

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

    ;ConsoleWrite($iScreenWidth & " X " & $iScreenHeight & @CRLF)
    ;ConsoleWrite($aFileList[$iCounter] & @CRLF)

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

    Switch $bDurchlauf ;==> werden die Grafiken direkt nach Anzeige gelöscht, hat WM_PAINT nichts zum anzeigen, daher in dieser Reihenfolge
    Case False ;==> nur beim ersten Durchlauf ausführen
    WinMove("Show PIC", "", $aPos[0], $aPos[1], $iScreenWidth, $iScreenHeight)

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

    #cs ; Wenn das Menü aktiviert ist, funktioniert das Bewegen des Fensters mit der Maus nicht mehr. Wie gehts richtig???
    $idDummy = GUICtrlCreateLabel("", 0, 0, $iScreenWidth, $iScreenHeight)
    $idContext = GUICtrlCreateContextMenu($idDummy)
    $idExit = GUICtrlCreateMenuItem("Beenden", $idContext)
    GUICtrlSetState($idExit, "_Exit")
    #ce

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iScreenWidth, $iScreenHeight, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    $bDurchlauf = True
    Case Else ;==> darf beim ersten Durchlauf nicht ausgeführt werden
    Select
    Case $iScreenWidthOld <> $iScreenWidth Or $iScreenHeightOld <> $iScreenHeight ;==> nur ausführen, wenn sich die Bildgröße ändert

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

    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    WinMove("Show PIC", "", $aPos[0], $aPos[1], $iScreenWidth, $iScreenHeight)
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iScreenWidth, $iScreenHeight, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)

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

    EndSelect
    EndSwitch

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

    ;WinMove("Show PIC", "", $aPos[0], $aPos[1], $iScreenWidth, $iScreenHeight)
    ;$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    ;$hBitmap = _GDIPlus_BitmapCreateFromGraphics($iScreenWidth, $iScreenHeight, $hGraphic)
    ;$hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)

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

    _GDIPlus_GraphicsDrawImageRect($hBuffer, $hImage, 0, 0, $iScreenWidth, $iScreenHeight)
    $paint = _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iScreenWidth, $iScreenHeight)
    If $paint = False Then Beep(1500, 50) ;nur zum debuggen

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

    _GDIPlus_ImageDispose($hImage)

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

    $iScreenWidthOld = $iScreenWidth
    $iScreenHeightOld = $iScreenHeight
    HotKeySet("{UP}", "_Up")
    HotKeySet("{DOWN}", "_Down")
    EndFunc ;==>_Show

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

    Func _WM_PAINT() ;==> ist das die beste/schnellste Lösung???
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iScreenWidth, $iScreenHeight)
    ConsoleWrite("WM_PAINT: " & $aFileList[$iCounter] & " -> " & $aPos[0] & "/" & $aPos[1] & " -> " & $iScreenHeight & " X " & $iScreenWidth & @CRLF)
    EndFunc ;==>_WM_PAINT

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

    Func _Benchmark()
    Local $begin
    $begin = TimerInit()
    For $i = 1 To $aFileList[0]
    ;0x00780000, 0xFF880000
    _WM_MOUSEWHEEL(Default, Default, 0xFF880000, Default)
    Next
    ConsoleWrite(TimerDiff($begin) / 1000 & @CRLF)
    ;MsgBox(0, "", TimerDiff($begin) / 1000)
    EndFunc ;==>_Benchmark

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

    Func _Down()
    _WM_MOUSEWHEEL(Default, Default, 0xFF880000, Default)
    EndFunc ;==>_Down

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

    Func _Up()
    _WM_MOUSEWHEEL(Default, Default, 0x00780000, Default)
    EndFunc ;==>_Up

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

    Func _WM_MOUSEWHEEL($hWnd, $iMsg, $iWParam, $iLParam)
    ;#forceref $hWnd, $iMsg, $iWParam, $iLParam
    Local $_iWParam
    ConsoleWrite($hWnd & "->" & $iMsg & "->" & $iWParam & "->" & $iLParam & "->>" & BitShift($iWParam, 16) & "->" & $iCounter & @CRLF)
    $_iWParam = BitShift($iWParam, 16) ;mögliche Werte für $iWParam 0x00780000, 0xFF880000

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

    If $_iWParam < 0 Then ; If $iWParam = 0xFF880000 Then
    $iCounter += 1
    If $iCounter > $aFileList[0] Then $iCounter = 1
    Else
    $iCounter -= 1
    If $iCounter < 1 Then $iCounter = $aFileList[0]
    EndIf

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

    _Show()
    EndFunc ;==>_WM_MOUSEWHEEL

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

    Func _FileListToArrayMultiSelect($dir, $searchlist, $Separator, $iFlag = 0)
    Local $aFileList[1] = [0], $aFileList1, $iN, $Num, $search
    $search = StringSplit($searchlist, $Separator)
    If $search[0] > 0 Then
    For $iN = 1 To $search[0]
    $aFileList1 = _FileListToArray($dir, $search[$iN], $iFlag)
    If Not @error Then
    $Num = UBound($aFileList)
    _ArrayConcatenate($aFileList, $aFileList1)
    $aFileList[0] = $aFileList[0] + $aFileList[$Num]
    _ArrayDelete($aFileList, $Num)
    EndIf
    Next
    EndIf
    Return $aFileList
    EndFunc ;==>_FileListToArrayMultiSelect

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

    Func _WM_ACTIVATE()
    Switch WinActive("Show PIC")
    Case 0
    HotKeySet("{UP}")
    HotKeySet("{DOWN}")
    Case Else
    HotKeySet("{UP}", "_Up")
    HotKeySet("{DOWN}", "_Down")
    EndSwitch
    EndFunc ;==>_WM_ACTIVATE

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

    Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam) ;==> Fenster mit Maus bewegen
    If BitAND(WinGetState($hWnd), 32) Then Return $GUI_RUNDEFMSG
    DllCall("user32.dll", "long", "SendMessage", "hwnd", $hWnd, "int", $WM_SYSCOMMAND, "int", 0xF009, "int", 0)
    $aPos = WinGetPos("Show PIC")
    EndFunc ;==>_WM_LBUTTONDOWN

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

    Func _Exit()
    Local $delete
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_Shutdown()
    If FileExists(@TempDir & "\_temp\") Then
    $delete = DirRemove(@TempDir & "\_temp\", 1)
    If $delete = 0 Then MsgBox(16, "Fehler", "Das temporäre Verzeichnis '" & @TempDir & "\_temp\" & "konnte nicht gelöscht werden.")
    EndIf
    Exit
    EndFunc ;==>_Exit

    [/autoit]


    Vielen Dank an alle, die bereit sind, sich freiwillig durch den Text und das Skript zu quälen... :love:


    Sanfte Grüße :D

    Dateien

    ShowPIC.au3 8,78 kB – 296 Downloads
  • Spezielles Fensterdesign, Icon, Button und Inputbox vom Windows-eigenen Programm

    • Friesel
    • 11. Juli 2013 um 20:19
    Zitat von bbm1995

    Ich würde ungern wünschen, wenn dieser Thread im Untergrund verschwindet... Kennt jemand eine Lösung für mein Problem?
    Wäre toll, wenn man eigene Fenster so darstellen könnte anstatt diese "0815"-Rechtecks Fenster


    Da mich das Thema auch interessiert, hab mich gestern nochmal rangesetzt und konnte das Fenster *fast* komplett "emulieren". Ich bin mir mittlerweile ziemlich sicher, dass es sich nicht um einen echten Style handelt, sondern alles von Hand "gebastelt" wurde.
    Warum?
    1. Das Fenster hat keinen Schatten, wie bei GUIs mit WS_POPUP üblich
    2. Fehlende Animation beim Minimieren des Fensters, ebenfalls üblich bei WS_POPUP
    3. Das fehlende Taskbar Icon deutet allerdings auf eine GUI mit dem Ex-Style $WS_EX_TOOLWINDOW hin (Widerspruch zu Punkt 1 und 2?)
    4. Laut AU3Info Tool ist das Fenster sehr viel grösser, als das was man sieht. Das deutet auf eine transparente Child GUI wie in meinem Beispiel hin.
    5. Der abgeschrägte Button unten reagiert auch, wenn man links daneben klickt, was auf eine rechteckige Region hindeutet.
    6. Bei dem Menü dürfte es sich um eine Toolbar handeln, die auf einer weiteren tranparenten Dummy Gui liegt.

    Hier mal ein Screenshot meiner "Nachbildung" inklusive Glasseffekt und Schatten als Bonus:
    [Blockierte Grafik: http://i.imgur.com/x82j0rb.png]
    Das Menü ist noch keine Toolbar, sondern ein Button mir dem Stil "$BS_ICON + $GUI_BKCOLOR_TRANSPARENT" und dem Text als Icon. (hab mal ein bisschen rumprobiert)
    Die Buttons sind schon alle funktionsfähig, aber es fehlt noch der Hover-Effekt.

    Skript folgt, wenn ich fertig bin :whistling:
    ...falls "mein Weg" für dich überhaupt interessant ist ;(

  • Wie WildCards in AutoIt?

    • Friesel
    • 9. Juli 2013 um 22:44

    Mit _FileListToArray kannst du ja nur eine Wildcard angeben, also zB so:

    [autoit]

    $aFileList = _FileListToArray($path, "*.jpg")

    [/autoit]


    Da ich in meinem aktuellen "Projekt" etwas ähnliches benötige, hatte ich mich auch schon auf die Suche gemacht und folgende Funktion gefunden:

    [autoit]

    #include <Array.au3>
    #include <File.au3>

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

    $path = FileSelectFolder("Bilder-Verzeichnis wählen", "")
    If Not $path Then Exit ;==> Kein Verzeichnis, kein Programm

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

    $aFileList = _FileListToArrayMultiSelect($path, "*.gif,*.ico,*.jpg,*.jpeg,*.png,*.bmp", ",", 1) ;==> Beispiel für verschiedene Bildtypen

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

    _ArrayDisplay($aFileList)

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

    Func _FileListToArrayMultiSelect($dir, $searchlist, $Separator, $iFlag = 0)
    Local $aFileList[1] = [0], $aFileList1, $iN, $Num, $search
    $search = StringSplit($searchlist, $Separator)
    If $search[0] > 0 Then
    For $iN = 1 To $search[0]
    $aFileList1 = _FileListToArray($dir, $search[$iN], $iFlag)
    If Not @error Then
    $Num = UBound($aFileList)
    _ArrayConcatenate($aFileList, $aFileList1)
    $aFileList[0] = $aFileList[0] + $aFileList[$Num]
    _ArrayDelete($aFileList, $Num)
    EndIf
    Next
    EndIf
    Return $aFileList
    EndFunc ;==>_FileListToArrayMultiSelect

    [/autoit]


    Hier muß man allerdings alle Typen angeben, die gesucht werden und nicht umgekehrt Typen ausschließen, so wie du es suchst. Kann man aber sicherlich ummodeln, was ich aber hier nicht tun werde... :whistling:
    Funktioniert super und ist auch sehr schnell. Leider weiss ich nicht, wer die Funktion ursprünglich erstellt hat.

  • Spezielles Fensterdesign, Icon, Button und Inputbox vom Windows-eigenen Programm

    • Friesel
    • 7. Juli 2013 um 00:21

    Ich hab mal schnell was mit Hilfe dieses Beitrags von Großvater gebastelt.
    Erstmal nur ein Bild der GUI, weil ich grad echt zu müde bin, noch was vorzeigbares zu coden.

    Die GUI kann mit beliebigen Controls "befüllt" werden, ist durch ziehen mit der Maus zu bewegen (alles, was nicht transparent ist, kann zum Bewegen "gegriffen" werden) und hat sogar Schatten :)
    Wem die standard Controls nicht gefallen, kann natürlich auch was mit GDI+ schnitzen 8)

    [Blockierte Grafik: http://i.imgur.com/H5ks9AV.png]

    Die Oberfläche besteht aus einem Teiltransparentem png, das ist mal ganz schnell und dreckig in Paint.net erstellt habe.
    Ist echt hässlich, aber ich denke, man kann sehen, worauf das hinaus läuft...

    Wenn Bedarf besteht, kann ich gerne morgen den aufbereiteten Code posten...

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™