AdvanceLcd - UDF für alle Logitech Produkte (G15, G19 etc.)

  • Hallo AutoIt.de,

    lange habe ich gesucht nach einer UDF, um Applets für meine G19 zu schreiben. Leider habe ich dazu nichts gefunden, woraufhin ich beschlossen habe, mir meine eigene UDF zu schreiben.
    Die UDF läuft mit AdvanceLcd, eine DLL um Applets für Logitech Produkte zu erstellen, da mir das normale Logitech SDK zu umständlich erscheint und ich nicht dahinter gekommen bin, wie ich die DLLs mit AutoIt verwende. Des Weiteren ist AdvanceLcd vielseitiger, das heißt, man kann damit nicht nur die G19, sondern auch die G15 und andere Geräte ansprechen.

    Nun aber zur UDF.

    Funktionen:

    Spoiler anzeigen

    UDF Rev. 1:

    Spoiler anzeigen
    [autoit]

    ; Logitech G19 UDF
    ; Autor: Carsten Schneider aka Carsten8
    ; Datum: 24.07.2010
    ; Veröffentlichung: 31.07.2010

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

    ; Diese UDF benötigt die AdvanceLcd (http://www.blitzforum.de/forum/viewtopic.php?p=362484) DLL
    ; sowie installierte Gerätetreiber. Das Copyright von AdvanceLcd besitzt ChristianK von blitzforum.de.

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

    ; #CONSTANTS# ===================================================================================================================
    Global Const $LCD_OK = 0
    Global Const $LCD_ERROR = 1
    Global Const $LCD_ERROR_NOT_INITIALIZED = 2
    Global Const $LCD_ERROR_INVALID_PARAMETER = 3
    Global Const $LCD_ERROR_NOT_FOUND = 4

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

    Global Const $LCD_DEVICE_INVALID = -1
    Global Const $LCD_DEVICE_MONO = 1
    Global Const $LCD_DEVICE_COLOR = 2

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

    Global Const $LCD_EVENT_CONFIGURE = 1
    Global Const $LCD_EVENT_BUTTON = 2

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

    Global Const $LCD_BUTTON_1 = 0x0001
    Global Const $LCD_BUTTON_2 = 0x0002
    Global Const $LCD_BUTTON_3 = 0x0004
    Global Const $LCD_BUTTON_4 = 0x0008

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

    Global Const $LCD_BUTTON_LEFT = 0x0100
    Global Const $LCD_BUTTON_RIGHT = 0x0200
    Global Const $LCD_BUTTON_OK = 0x0400
    Global Const $LCD_BUTTON_CANCEL = 0x0800
    Global Const $LCD_BUTTON_UP = 0x1000
    Global Const $LCD_BUTTON_DOWN = 0x2000
    Global Const $LCD_BUTTON_MENU = 0x4000

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

    Global Const $LCD_PRIORITY_LOW = 1
    Global Const $LCD_PRIORITY_NORMAL = 2
    Global Const $LCD_PRIORITY_HIGH = 3

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

    Global Const $LCD_COLOR_VISIBLE = 0xFFFFFF
    Global Const $LCD_COLOR_INVISIBLE = 0

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

    Global Const $LCD_FONT_DEFAULT = 0
    Global Const $LCD_FONT_BOLD = 1
    Global Const $LCD_FONT_ITALIC = 2
    Global Const $LCD_FONT_UNDERLINE = 4
    ; ===============================================================================================================================

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

    ; #VARIABLEN# ===================================================================================================================
    Global $dll = 0
    Global $callback = -1
    ; ===============================================================================================================================

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

    ; #FUNKTIONEN# ==================================================================================================================
    ;LcdInitialize
    ;LcdDeInitialize
    ;LcdCreateApplet
    ;LcdDeleteApplet
    ;LcdLoadPixmap
    ;LcdCreatePixmap
    ;LcdSetTarget
    ;LcdClear
    ;LcdDrawPixmap
    ;LcdDeletePixmap
    ;LcdWaitActivation
    ;LcdUpdate
    ;LcdSetEventHandler [INSTABIL]
    ;LcdButtonState
    ; ===============================================================================================================================

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdInitialize
    ; Beschreibung ..: Initialisiert AdvanceLcd
    ; Syntax ........: LcdInitialize([$sDLLPath = "advlcd.dll"])
    ; Parameter .....: $sDLLPath - Pfad zur advlcd.dll
    ; Rückgabewerte .: Erfolg - $LCD_OK
    ; Fehler - $LCD_ERROR
    ; Bemerkungen ...:
    ; Verwandt ......: LcdDeInitialize
    ; ===============================================================================================================================
    Func LcdInitialize($sDLLPath = "advlcd.dll")
    $dll = DllOpen($sDLLPath)
    Local $ret = DllCall($dll, "int", "LcdInitialize")
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdInitialize

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdDeInitialize
    ; Beschreibung ..: Deinitialisiert AdvanceLcd
    ; Syntax ........: LcdDeInitialize()
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...: Vorher sollten alle Applets, Pixmaps etc. gelöscht werden.
    ; Verwandt ......: LcdInitialize
    ; ===============================================================================================================================
    Func LcdDeInitialize()
    If $callback <> -1 Then DllCallbackFree($callback)
    Local $ret = DllCall($dll, "int", "LcdDeInitialize")
    If @error Then Return SetError(1, @error, 0)
    DllClose($dll)
    Return $ret[0]
    EndFunc ;==>LcdDeInitialize

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdCreateApplet
    ; Beschreibung ..:
    ; Syntax ........: LcdCreateApplet($sName, [$iDevices = $LCD_DEVICE_COLOR, [$bConfigurable = 0, [$bAutostart = 0]]])
    ; Parameter .....: $sName - Der Name des Applets. Er wird später auf dem LCD und im LCD Manager angezeigt.
    ; $iDevices - Der Gerätetyp, der verwendet werden soll. Siehe Bemerkungen.
    ; $bConfigurable - Gibt an, ob der "Konfigurieren"-Button im LCD Manager anklickbar sein soll.
    ; $bAutostart - Gibt an, ob der LCD Manager das Applet automatisch starten kann.
    ; Rückgabewerte .: Erfolg - Ein Handle des Applets
    ; Bemerkungen ...: $iDevices kann entweder $LCD_DEVICE_MONO oder $LCD_DEVICE_COLOR sein. Wird beides verwendet, so muss
    ; bei späteren Aktionen das Gerät per LcdSelectDevice ausgewählt werden.
    ; Verwandt ......: LcdSelectDevice LcdDeleteApplet
    ; ===============================================================================================================================
    Func LcdCreateApplet($sName, $iDevices = $LCD_DEVICE_COLOR, $bConfigurable = 0, $bAutostart = 0)
    Local $ret = DllCall($dll, "ptr", "LcdCreateAppletA", "str", $sName, "int", $iDevices, "int", $bConfigurable, "int", $bAutostart)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdCreateApplet

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdDeleteApplet
    ; Beschreibung ..:
    ; Syntax ........: LcdDeleteApplet($hApplet)
    ; Parameter .....: $hApplet - Handle des Applets, welches gelöscht werden soll.
    ; Rückgabewerte .:
    ; Bemerkungen ...: Sollte vor LcdDeInitialize aufgerufen werden.
    ; Verwandt ......: LcdCreateApplet LcdDeInitialize
    ; ===============================================================================================================================
    Func LcdDeleteApplet($hApplet)
    Local $ret = DllCall($dll, "int", "LcdDeleteApplet", "ptr", $hApplet)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdDeleteApplet

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdLoadPixmap
    ; Beschreibung ..:
    ; Syntax ........: LcdLoadPixmap($sFile)
    ; Parameter .....: $sFile - Der Pfad zu der Bilddatei, die geladen werden soll.
    ; Rückgabewerte .: Erfolg - Das Handle der Pixmap
    ; Bemerkungen ...: Unterstützte Formate: JPG, PNG, BMP, TIFF und GIF
    ; Verwandt ......: LcdCreatePixmap LcdDeletePixmap
    ; ===============================================================================================================================
    Func LcdLoadPixmap($sFile)
    Local $ret = DllCall($dll, "ptr", "LcdLoadPixmapA", "str", $sFile)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdLoadPixmap

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdCreatePixmap
    ; Beschreibung ..: Erstellt eine neue leere Pixmap
    ; Syntax ........: LcdCreatePixmap([$iWidth = 320, [$iHeight = 240, [$iDevice = $LCD_DEVICE_COLOR]]])
    ; Parameter .....: $iWidth - Breite der Pixmap
    ; $iHeight - Höhe der Pixmap
    ; $iDevice - Typ des Geräts, für das die Pixmap erstellt werden soll.
    ; Rückgabewerte .: Erfolg - Das Handle der Pixmap
    ; Bemerkungen ...:
    ; Verwandt ......: Lcd
    ; ===============================================================================================================================
    Func LcdCreatePixmap($iWidth = 320, $iHeight = 240, $iDevice = $LCD_DEVICE_COLOR)
    Local $ret = DllCall($dll, "ptr", "LcdCreatePixmap", "int", $iWidth, "int", $iHeight, "int", $iDevice)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdCreatePixmap

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdSetTarget
    ; Beschreibung ..: Setzt das aktuelle Renderziel.
    ; Syntax ........: LcdSetTarget($hApplet, $hPixmap)
    ; Parameter .....: $hApplet - Das Handle des Applets, dessen Renderziel gesetzt werden soll.
    ; $hPixmap - Ein Handle zu einer Pixmap, welche das Renderziel sein soll. Bemerkungen beachten!
    ; Rückgabewerte .:
    ; Bemerkungen ...: $hPixmap kann nur eine Pixmap sein, die mit LcdCreatePixmap erstellt wurde.
    ; 0 verwenden, um das Renderziel zurückzusetzen.
    ; Verwandt ......: LcdCreatePixmap
    ; ===============================================================================================================================
    Func LcdSetTarget($hApplet, $hPixmap)
    Local $ret = DllCall($dll, "int", "LcdSetTarget", "ptr", $hApplet, "ptr", $hPixmap)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdSetTarget

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdClear
    ; Beschreibung ..: Leert den Buffer des LCDs.
    ; Syntax ........: LcdClear($hApplet, [$iColor = 0x000000])
    ; Parameter .....: $hApplet - Das Applet, dessen Buffer geleert werden soll.
    ; $iColor - Die Farbe, mit der der Buffer überschrieben werden soll.
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdClear($hApplet, $iColor = 0x000000)
    Local $ret = DllCall($dll, "int", "LcdClear", "ptr", $hApplet, "int", $iColor)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdClear

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdDrawPixmap
    ; Beschreibung ..: Zeichnet eine Pixmap in den Buffer eines Applets.
    ; Syntax ........: LcdDrawPixmap($hApplet, [$hPixmap, [$iX = 0, [$iY = 0, [$iFrame = 0]]]])
    ; Parameter .....: $hApplet - Das Applet, in dessen Buffer die Pixmap gezeichnet werden soll.
    ; $hPixmap - Die Pixmap, die gezeichnet werden soll.
    ; $iX - Die X-Koordinate, der oberen linken Ecke der Pixmap
    ; $iY - Die Y-Koordinate, der oberen linken Ecke der Pixmap
    ; $iFrame - Die Framezahl, sollte die Pixmap mit LcdLoadAnimPixmap erstellt worden sein.
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......: LcdLoadAnimPixmap
    ; ===============================================================================================================================
    Func LcdDrawPixmap($hApplet, $hPixmap, $iX = 0, $iY = 0, $iFrame = 0)
    Local $ret = DllCall($dll, "int", "LcdDrawPixmap", "ptr", $hApplet, "ptr", $hPixmap, "int", $iX, "int", $iY, "int", $iFrame)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdDrawPixmap

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdDeletePixmap
    ; Beschreibung ..: Löscht eine Pixmap
    ; Syntax ........: LcdDeletePixmap($hPixmap)
    ; Parameter .....: $hPixmap - Das Handle der Pixmap, die gelöscht werden soll.
    ; Rückgabewerte .:
    ; Bemerkungen ...: Sollte vor LcdDeInitialize aufgerufen werden.
    ; Verwandt ......: LcdCreatePixmap LcdLoadPixmap LcdDeInitialize
    ; ===============================================================================================================================
    Func LcdDeletePixmap($hPixmap)
    Local $ret = DllCall($dll, "int", "LcdDeletePixmap", "ptr", $hPixmap)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdDeletePixmap

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdWaitActivation
    ; Beschreibung ..: Wartet, bis das Applet aktiviert wird.
    ; Syntax ........: LcdWaitActivation($hApplet)
    ; Parameter .....: $hApplet - Das Handle des Applets, auf wessen Aktivierung gewartet werden soll.
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdWaitActivation($hApplet)
    Local $ret = DllCall($dll, "int", "LcdWaitActivation", "ptr", $hApplet)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdWaitActivation

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdUpdate
    ; Beschreibung ..: Aktualisiert das LCD und zeigt den aktuellen Buffer des Applets an.
    ; Syntax ........: LcdUpdate($hApplet, [$bSync = 0])
    ; Parameter .....: $hApplet - Das Handle des Applet, dessen Buffer angezeigt werden soll.
    ; $bSync - Gibt an, ob gewartet werden soll, bis der Buffer angezeigt wird, oder nicht.
    ; Rückgabewerte .:
    ; Bemerkungen ...: Wenn $bSync True ist, läuft das Script weiter, sobald der Inhalt des Buffers an den LCD Manger gesendet wurde.
    ; Wenn $bSync False ist, läuft das Script erst weiter, wenn der Inhalt des Buffers auf dem LCD angezeigt wird (ca. 30ms langsamer)
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdUpdate($hApplet, $bSync = 0)
    Local $ret = DllCall($dll, "int", "LcdUpdate", "ptr", $hApplet, "int", $bSync)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdUpdate

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdSetEventHandler
    ; Beschreibung ..: Legt eine Funktion als Eventhandler für ein Applet fest.
    ; Syntax ........: LcdSetEventHandler($hApplet, $EventHandler, [$hContext = 0])
    ; Parameter .....: $hApplet - Das Handle des Applets, dessen Eventhandler gesetzt werden soll.
    ; $EventHandler - Name der Funktion, die als Eventhandler dienen soll.
    ; $hContect -
    ; Rückgabewerte .:
    ; Bemerkungen ...: Die Funktion ist sehr instabil und kann zu Abstürzen des Scripts führen.
    ; Die Funktion muss immer folgende Parameter besitzen:
    ; _BeispielCallback($iEvent, $hContext, $iData)
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdSetEventHandler($hApplet, $EventHandler, $hContext = 0)
    If $callback <> -1 Then DllCallbackFree($callback)
    $callback = DllCallbackRegister($EventHandler, "int", "int;ptr;int")
    Local $ret = DllCall($dll, "int", "LcdSetEventHandler", "ptr", $hApplet, "ptr", DllCallbackGetPtr($callback), "ptr", $hContext)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdSetEventHandler

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdButtonState
    ; Beschreibung ..: Ermittelt den Status eines Knopfes des LCDs.
    ; Syntax ........: LcdButtonState($hApplet, $iButton)
    ; Parameter .....: $hApplet - Das Handle des Applets
    ; $iButton - Die ID des Knopfes
    ; Rückgabewerte .:
    ; Bemerkungen ...: $iButton kann, je nach Gerätetyp, eine der folgenden Variablen sein:
    ; $LCD_BUTTON_1
    ; $LCD_BUTTON_2
    ; $LCD_BUTTON_3
    ; $LCD_BUTTON_4
    ;
    ; $LCD_BUTTON_LEFT
    ; $LCD_BUTTON_RIGHT
    ; $LCD_BUTTON_OK
    ; $LCD_BUTTON_CANCEL
    ; $LCD_BUTTON_UP
    ; $LCD_BUTTON_DOWN
    ; $LCD_BUTTON_MENU
    ; Verwandt ......: LcdConfigState
    ; ===============================================================================================================================
    Func LcdButtonState($hApplet, $iButton)
    Local $ret = DllCall($dll, "int", "LcdButtonState", "ptr", $hApplet, "int", $iButton)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdButtonState

    [/autoit]

    Beispiel (einfache Bildschirmlupe ohne Vergrößerung):

    Spoiler anzeigen
    [autoit]

    #include <AdvanceLCD.au3>
    #include <ScreenCapture.au3>

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

    ; Beim Beenden killfunc aufrufen
    OnAutoItExitRegister("killfunc")

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

    ; AdvanceLcd initialisieren
    LcdInitialize()

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

    ; Applet erstellen
    $hApplet = LcdCreateApplet("Bildschirm")

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

    ; LCD als Ziel späterer DrawPixmap Befehle setzen
    LcdSetTarget($hApplet, 0)

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

    While 1
    ; Warten bis das Applet aktiviert wird
    LcdWaitActivation($hApplet)

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

    ; Screenshot der Umgebung der Maus erstellen. Größe optimal für das LCD, Format BMP (beides für bessere Performance)
    $aPos = MouseGetPos()
    _ScreenCapture_Capture(@TempDir & "\screenshot.bmp", $aPos[0] - 160, $aPos[1] - 120, $aPos[0] + 160, $aPos[1] + 120)

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

    ; Bild laden
    $hPixmap = LcdLoadPixmap(@TempDir & "\screenshot.bmp")

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

    ; LCD leeren
    LcdClear($hApplet, 0x000000)

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

    ; Pixmap auf das LCD zeichnen
    LcdDrawPixmap($hApplet, $hPixmap)

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

    ; Änderungen auf dem LCD anzeigen
    LcdUpdate($hApplet, 0)

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

    ; Pixmap wieder löschen
    LcdDeletePixmap($hPixmap)
    WEnd

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

    Func killfunc()
    ; Applet löschen
    LcdDeleteApplet($hApplet)

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

    ; AdvanceLcd deinitialisieren
    LcdDeInitialize()
    EndFunc ;==>killfunc

    [/autoit]

    Todo:

    • Weitere Funktionen einbauen
    • ANSI Funktionen umschreiben für Unicode Unterstützung
    • Evtl. Standardwerte der Parameter der Funktionen setzen
    • Callback Bug beheben
    • Weitere Beispiele schreiben

    Download von AdvanceLcd:
    [DOWNLOAD - Klick mich]
    In dem Archiv findet ihr einen Ordner Binary. Darin befinden sich zwei weitere Ordner, x86 (32-Bit) und x64 (64-Bit). In den Ordnern befinden sich die jeweiligen DLL Dateien, die ihr braucht.

    Wichtig!
    Die ganze UDF ist noch WIP (Work-In-Progress). Das heißt, es können noch Bugs auftreten und es fehlen noch Funktionen, die ich mit der Zeit noch ergänzen werde.

    Sollten Fehler bei euch auftreten oder solltet ihr Verbesserungsvorschläge oder Kritik haben, bitte ich euch, diese hier zu posten.

    Gruß,
    Carsten8

    2 Mal editiert, zuletzt von Carsten8 (1. August 2010 um 14:09)

  • Zwar fehlen noch die meisten Funktionen, aber das was schon da ist geht einwandfrei.

    Habs mal um drei Funktionen erweitert weil ich die noch brauchte. Hier damit die nicht selber reinschreiben brauchst:

    Spoiler anzeigen
    [autoit]

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdDrawText
    ; Beschreibung ..: Schreibt einen Text ins LCD
    ; Syntax ........: LcdDrawText($hApplet, $pString, [$iX = 20, [$iY = 0]])
    ; Parameter .....: $hApplet - Das Applet, dessen Buffer geleert werden soll.
    ; $pString - Der Text als String der angezeigt werden soll.
    ; $iX - Die X-Koordinate, der oberen linken Ecke der Pixmap
    ; $iY - Die Y-Koordinate, der oberen linken Ecke der Pixmap
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdDrawText($hApplet, $pString, $iX = 0, $iY = 0)
    Local $ret = DllCall($dll, "int", "LcdDrawTextA", "ptr", $hApplet, "str", $pString, "int", $iX, "int", $iY)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdDrawText

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdStringWidth
    ; Beschreibung ..: Gibt die Länge eines Sring in Pixel an
    ; Syntax ........: LcdDrawText($hApplet, $pString)
    ; Parameter .....: $hApplet - Das Applet, dessen Buffer geleert werden soll.
    ; $pString - Der Text als String dessen Länge geprüft werden soll.
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdStringWidth($hApplet, $pString)
    Local $ret = DllCall($dll, "int", "LcdStringWidthA", "ptr", $hApplet, "str", $pString)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==> LcdStringWidth

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdSetPriority
    ; Beschreibung ..: Bestimmt die Priorität und ob das Applet im Vordergrund angezeigt werden soll
    ; Syntax ........: LcdSetPriority($hApplet, [$nPriority = "LCD_PRIORITY_NORMAL", [$bForeground = 0]])
    ; Parameter .....: $hApplet - Das Applet, dessen Buffer geleert werden soll.
    ; $nPriority - Die Priorität mit der das Applet ausgeführt wird. (LCD_PRIORITY_LOW, LCD_PRIORITY_NORMAL oder LCD_PRIORITY_HIGH)
    ; $bForeground - Wenn diese Option auf true gestellt ist, wird da Applet in den Vordergrund geholt.
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdSetPriority($hApplet, $nPriority = "LCD_PRIORITY_NORMAL", $bForeground = 0)
    Local $ret = DllCall($dll, "int", "LcdSetPriority", "ptr", $hApplet, "int", $nPriority, "int", $bForeground)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdSetPriority

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    4 Mal editiert, zuletzt von chip (1. August 2010 um 01:15)

  • OMG!
    Es funktioniert :D
    Endlich eine UDF die wirklich richtig funktioniert.
    Riesengroßen Dank.

  • chip: Gibt es auch eine LcdStringWidthW? Dann würde ich diese statt LcdStringWidthA verwenden. Das gleiche gilt für LcdDrawTextW / LcdDrawTextA. (Ersetze dann auch str mit wstr ;) )

  • Soweit ich weiß nicht. Es gibt nur "LcdDrawText" und "LcdDrawTextA" wobei Carsten8 meinte das es ohne "A" öffters Probleme gibt.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Ich hab mal nachgeschaut. Es gibt von allen ...A-Funktionen das Uncicde-Pendant ...W. Das würde ich überall verwenden, da damit eine größere Bandbreite an Zeichen abgedeckt wird.

  • Habs mal probiert. Dann wird der Text nur noch in chinesischen Zeichen angezeigt.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    Einmal editiert, zuletzt von chip (1. August 2010 um 12:27)

  • Ich probiers aus Progandy, danke!

    Edit: Scheint zu funktionieren. Bau ich in die nächste Version mit ein.

    chip: du musst bei den Funktionen anstelle von str den Typ wstr verwenden.

    Edit 2: Ich schreibe jetzt die restlichen Funktionen, vielleicht wirds heut fertig :)

    Einmal editiert, zuletzt von Carsten8 (1. August 2010 um 13:52)

  • hmm...also bei mir geht es nicht so ganz. ich habe die udf hier rauskopiert als au3 gespeichert und in den include ordner geworfen (ja ich weiß, sollte man nicht in den ordner tun, egal^^) habe denn die benötigte dll geladen (x32) und auch in den selben ordner geworfen, dann habe ich das beispiel script von casten8 als au3 gespeichert und es laufen lassen...doch denn kommt n fehler und zwar:

    Spoiler anzeigen

    an dem script habe ich keinerlei änderungen vorgenommen.
    Habe darauf auch das g19 JDownloader Script von chip probiert und da kam der gleiche fehler. mach ich was falsch??

    (Benutze Win XP home SP3, falls das verlangt wird^^)

  • Das hast nichts mit der UDF zu tun. Du hast als das Beispiel kopiert hast diese Funktion vergessen zu kopieren:

    [autoit]

    Func killfunc()
    ; Applet löschen
    LcdDeleteApplet($hApplet)

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

    ; AdvanceLcd deinitialisieren
    LcdDeInitialize()
    EndFunc

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Hast du den die aktuelle Version von Autoit?

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • ok, daran lag es, hatte noch ne ältere beta installiert...hab nun auf die neuste stable geupdatet das script funzt nun auch. problem: Auf meinem display erscheint nichts. Logitech software ist auch auf dem neustem stand

  • Ich habe eine G15 (orange) und bei mir bleibt dein Programm bei der Funktion LcdWaitActivation hängen.
    Weiterhin habe ich in der UDF händisch $iDevice standardmäßig auf $LCD_DEVICE_MONO geändert.
    Habe auch die neuesten Autoit Versionen (Stable & Beta), auch der LCD-Manager ist laut Updater aktuell (3.04.143)
    OS: 64-bit Win 7 --> verwende auch die x64-dll

    Vielleicht weißt du, woran das liegen könnte :huh:

  • schon mal versucht das script als admin zu starten? (rechtsklick als administrator ausführen oder so) weiß nicht ob es daran liegen kann, aber habe erfahrungen gemacht, dass diese funktion sehr viel mist anrichten kann^^

  • So, jetzt läuft es, es war nicht das Admin-Problem, sondern ich musste es erst kompilieren ;)

  • hi leutz,
    ich bin relativ neu in autoit,
    finde es aber der hammer, was hier alles geht ...

    versuch schon seit 2 tagen auf mein lcd zu schreiben.
    keine ahnung was ich falsch mache ..
    so etwas wie eine readme hab ich nicht gefunden ..
    würde die sache erheblich vereinfachen, falls erwünscht ...
    EDIT => Achtung hatte variable $dll bereits verwendet! diese dann in LcdDLL umbenannt.
    -> wo muss die dll hin? EDIT => $sDLLPath einrichten!
    -> was muss ich bei der logitech software einstellen? EDIT => nix
    -> muss ich noch etwas konfigurieren (LCD-Typ, Größe, Farben ...) EDIT=> nur den gerätetyp (1 oder 2)
    -> wo liegt die aktuelle udf EDIT=> die von chip (unten) ist das aktuellste!

    EDIT => Autoit x64 -> nur x86 Funktionen verwenden (beim install), die x86 dll nehmen (läuft bei mir extrem stabli!)

    3 Mal editiert, zuletzt von UPIA (2. Januar 2012 um 15:44)

  • Da Carsten nun schon sehr lange inaktiv ist poste ich hier mal noch die aktuellste letzte Version von ihm die ich zum Testen von ihm erhalten hatte:

    Spoiler anzeigen
    [autoit]

    ; Logitech G19 UDF
    ; Autor: Carsten Schneider aka Carsten8
    ; Datum: 24.07.2010
    ; Veröffentlichung: 31.07.2010

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

    ; Diese UDF benötigt die AdvanceLcd (http://www.blitzforum.de/forum/viewtopic.php?p=362484) DLL
    ; sowie installierte Gerätetreiber. Das Copyright von AdvanceLcd besitzt ChristianK von blitzforum.de.

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

    #region Variablen
    ; #CONSTANTS# ===================================================================================================================
    Global Const $LCD_OK = 0
    Global Const $LCD_ERROR = 1
    Global Const $LCD_ERROR_NOT_INITIALIZED = 2
    Global Const $LCD_ERROR_INVALID_PARAMETER = 3
    Global Const $LCD_ERROR_NOT_FOUND = 4

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

    Global Const $LCD_DEVICE_INVALID = -1
    Global Const $LCD_DEVICE_MONO = 1
    Global Const $LCD_DEVICE_COLOR = 2

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

    Global Const $LCD_EVENT_CONFIGURE = 1
    Global Const $LCD_EVENT_BUTTON = 2

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

    Global Const $LCD_BUTTON_1 = 0x0001
    Global Const $LCD_BUTTON_2 = 0x0002
    Global Const $LCD_BUTTON_3 = 0x0004
    Global Const $LCD_BUTTON_4 = 0x0008

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

    Global Const $LCD_BUTTON_LEFT = 0x0100
    Global Const $LCD_BUTTON_RIGHT = 0x0200
    Global Const $LCD_BUTTON_OK = 0x0400
    Global Const $LCD_BUTTON_CANCEL = 0x0800
    Global Const $LCD_BUTTON_UP = 0x1000
    Global Const $LCD_BUTTON_DOWN = 0x2000
    Global Const $LCD_BUTTON_MENU = 0x4000

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

    Global Const $LCD_PRIORITY_LOW = 1
    Global Const $LCD_PRIORITY_NORMAL = 2
    Global Const $LCD_PRIORITY_HIGH = 3

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

    Global Const $LCD_COLOR_VISIBLE = 0xFFFFFF
    Global Const $LCD_COLOR_INVISIBLE = 0

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

    Global Const $LCD_FONT_DEFAULT = 0
    Global Const $LCD_FONT_BOLD = 1
    Global Const $LCD_FONT_ITALIC = 2
    Global Const $LCD_FONT_UNDERLINE = 4
    ; ===============================================================================================================================

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

    ; #VARIABLEN# ===================================================================================================================
    Global $dll = 0
    Global $callback = -1
    ; ===============================================================================================================================
    #endregion Variablen

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

    ; #FUNKTIONEN# ==================================================================================================================
    ; LcdDeInitialize
    ; LcdInitialize
    ; LcdLastError
    ; LcdAppletActive
    ; LcdAppletEnabled
    ; LcdAppledOpened
    ; LcdButtonState
    ; LcdConfigState
    ; LcdCreateApplet
    ; LcdDeleteApplet
    ; LcdSelectDevice
    ; LcdSetEventHandler [INSTABIL]
    ; LcdSetPriority
    ; LcdUpdate
    ; LcdWaitActivation
    ; LcdClear
    ; LcdDrawLine
    ; LcdDrawOval
    ; LcdDrawRect
    ; LcdEnableAntiAlias
    ; LcdSetColor
    ; LcdSetLineWidth
    ; LcdSetRotation
    ; LcdSetTarget
    ; LcdCreatePixmap
    ; LcdDeletePixamp
    ; LcdDrawPixmap
    ; LcdDrawPixmapRect
    ; LcdLoadAnimPixmap
    ; LcdLoadPixmap
    ; LcdPixmapHeight
    ; LcdPixmapWidth
    ; LcdDeleteFont
    ; LcdDrawText
    ; LcdLoadFont
    ; LcdSetFont
    ; LcdStringHeight
    ; LcdStringWidth
    ; ===============================================================================================================================

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

    #region Library
    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdInitialize
    ; Beschreibung ..: Initialisiert AdvanceLcd
    ; Syntax ........: LcdInitialize([$sDLLPath = "advlcd.dll"])
    ; Parameter .....: $sDLLPath - Pfad zur advlcd.dll
    ; Rückgabewerte .: Erfolg - $LCD_OK
    ; Fehler - $LCD_ERROR
    ; Bemerkungen ...:
    ; Verwandt ......: LcdDeInitialize
    ; ===============================================================================================================================
    Func LcdInitialize($sDLLPath = "advlcd.dll")
    $dll = DllOpen($sDLLPath)
    Local $ret = DllCall($dll, "int", "LcdInitialize")
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdInitialize

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdDeInitialize
    ; Beschreibung ..: Deinitialisiert AdvanceLcd
    ; Syntax ........: LcdDeInitialize()
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...: Vorher sollten alle Applets, Pixmaps etc. gelöscht werden.
    ; Verwandt ......: LcdInitialize
    ; ===============================================================================================================================
    Func LcdDeInitialize()
    If $callback <> -1 Then DllCallbackFree($callback)
    Local $ret = DllCall($dll, "int", "LcdDeInitialize")
    If @error Then Return SetError(1, @error, 0)
    DllClose($dll)
    Return $ret[0]
    EndFunc ;==>LcdDeInitialize

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdLastError
    ; Beschreibung ..: Gibt den letzten aufgetretenen Fehler zurück.
    ; Syntax ........: LcdLastError()
    ; Parameter .....:
    ; Rückgabewerte .: $LCD_OK, $LCD_ERROR, $LCD_ERROR_NOT_INITIALIZED, $LCD_ERROR_INVALID_PARAMETER oder $LCD_ERROR_NOT_FOUND
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdLastError()
    Local $ret = DllCall($dll, "int", "LcdLastError")
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdLastError
    #endregion Library

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

    #region Applet
    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdAppletActive
    ; Beschreibung ..: Mischung aus LcdAppletEnabled und LcdAppletOpened (siehe Bemerkungen)
    ; Syntax ........: LcdAppletActive($hApplet)
    ; Parameter .....: $hApplet - Das Handle des Applets
    ; Rückgabewerte .: Aktiviert - True
    ; Deaktiviert - False
    ; Bemerkungen ...: Gibt nur True zurück, wenn sowohl LcdAppletEnabled als auch LcdAppletOpened True zurück gibt.
    ; Verwandt ......: LcdWaitActivation LcdAppletEnabled LcdAppletOpened
    ; ===============================================================================================================================
    Func LcdAppletActive($hApplet)
    Local $ret = DllCall($dll, "int", "LcdAppletActive", "ptr", $hApplet)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdAppletActive

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdAppletEnabled
    ; Beschreibung ..: Prüft, ob ein Applet aktiviert ist.
    ; Syntax ........: LcdAppletEnabled($hApplet)
    ; Parameter .....: $hApplet - Das Handle des Applets
    ; Rückgabewerte .: Aktiviert - True
    ; Deaktiviert - False
    ; Bemerkungen ...:
    ; Verwandt ......: LcdAppletOpened LcdAppletActive
    ; ===============================================================================================================================
    Func LcdAppletEnabled($hApplet)
    Local $ret = DllCall($dll, "int", "LcdAppletEnabled", "ptr", $hApplet)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdAppletEnabled

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdAppletOpened
    ; Beschreibung ..: Prüft, ob das Applet auf dem LCD angezeigt werden darf oder nicht.
    ; Syntax ........: LcdAppletOpened($hApplet)
    ; Parameter .....: $hApplet - Das Handle des Applets
    ; Rückgabewerte .: Aktiviert - True
    ; Deaktiviert - False
    ; Bemerkungen ...:
    ; Verwandt ......: LcdAppletEnabled LcdAppletActive
    ; ===============================================================================================================================
    Func LcdAppletOpened($hApplet)
    Local $ret = DllCall($dll, "int", "LcdAppletOpened", "ptr", $hApplet)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdAppletOpened

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdButtonState
    ; Beschreibung ..: Ermittelt den Status eines Knopfes des LCDs.
    ; Syntax ........: LcdButtonState($hApplet, $iButton)
    ; Parameter .....: $hApplet - Das Handle des Applets
    ; $iButton - Die ID des Knopfes
    ; Rückgabewerte .:
    ; Bemerkungen ...: $iButton kann, je nach Gerätetyp, eine der folgenden Variablen sein:
    ; $LCD_BUTTON_1
    ; $LCD_BUTTON_2
    ; $LCD_BUTTON_3
    ; $LCD_BUTTON_4
    ;
    ; $LCD_BUTTON_LEFT
    ; $LCD_BUTTON_RIGHT
    ; $LCD_BUTTON_OK
    ; $LCD_BUTTON_CANCEL
    ; $LCD_BUTTON_UP
    ; $LCD_BUTTON_DOWN
    ; $LCD_BUTTON_MENU
    ; Verwandt ......: LcdConfigState
    ; ===============================================================================================================================
    Func LcdButtonState($hApplet, $iButton)
    Local $ret = DllCall($dll, "int", "LcdButtonState", "ptr", $hApplet, "int", $iButton)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdButtonState

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdConfigState
    ; Beschreibung ..: Prüft, ob der "Konfigurieren"-Button im LCD Manager gedrückt wurde.
    ; Syntax ........: LcdConfigState($hApplet)
    ; Parameter .....: $hApplet - Das Handle des Applets
    ; Rückgabewerte .: True, wenn der Button angeklickt wurde, ansonsten False.
    ; Bemerkungen ...:
    ; Verwandt ......: LcdButtonState
    ; ===============================================================================================================================
    Func LcdConfigState($hApplet)
    Local $ret = DllCall($dll, "int", "LcdConfigState", "ptr", $hApplet)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdConfigState

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdCreateApplet
    ; Beschreibung ..: Erstellt ein Applet.
    ; Syntax ........: LcdCreateApplet($sName, [$iDevices = $LCD_DEVICE_COLOR, [$bConfigurable = 0, [$bAutostart = 0]]])
    ; Parameter .....: $sName - Der Name des Applets. Er wird später auf dem LCD und im LCD Manager angezeigt.
    ; $iDevices - Der Gerätetyp, der verwendet werden soll. Siehe Bemerkungen.
    ; $bConfigurable - Gibt an, ob der "Konfigurieren"-Button im LCD Manager anklickbar sein soll.
    ; $bAutostart - Gibt an, ob der LCD Manager das Applet automatisch starten kann.
    ; Rückgabewerte .: Erfolg - Ein Handle des Applets
    ; Bemerkungen ...: $iDevices kann entweder $LCD_DEVICE_MONO oder $LCD_DEVICE_COLOR sein. Wird beides verwendet, so muss
    ; bei späteren Aktionen das Gerät per LcdSelectDevice ausgewählt werden.
    ; Verwandt ......: LcdSelectDevice LcdDeleteApplet
    ; ===============================================================================================================================
    Func LcdCreateApplet($sName, $iDevices = $LCD_DEVICE_COLOR, $bConfigurable = 0, $bAutostart = 0)
    Local $ret = DllCall($dll, "ptr", "LcdCreateAppletW", "wstr", $sName, "int", $iDevices, "int", $bConfigurable, "int", $bAutostart)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdCreateApplet

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdDeleteApplet
    ; Beschreibung ..: Löscht ein Applet.
    ; Syntax ........: LcdDeleteApplet($hApplet)
    ; Parameter .....: $hApplet - Das Handle des Applets
    ; Rückgabewerte .:
    ; Bemerkungen ...: Sollte vor LcdDeInitialize aufgerufen werden.
    ; Verwandt ......: LcdCreateApplet LcdDeInitialize
    ; ===============================================================================================================================
    Func LcdDeleteApplet($hApplet)
    Local $ret = DllCall($dll, "int", "LcdDeleteApplet", "ptr", $hApplet)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdDeleteApplet

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdSelectDevice
    ; Beschreibung ..: Setzt ein Gerät als Ziel zukünftiger Aktionen.
    ; Syntax ........: LcdSelectDevice($hApplet, $iDevice)
    ; Parameter .....: $hApplet - Das Handle des Applets
    ; $iDevice - Der Gerätetyp des Geräts
    ; Rückgabewerte .:
    ; Bemerkungen ...: Nur benötigt für Funktionen, die Gerätespezifisch sind.
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdSelectDevice($hApplet, $iDevice)
    Local $ret = DllCall($dll, "int", "LcdSelectDevice", "ptr", $hApplet, "int", $iDevice)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdSelectDevice

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdSetEventHandler
    ; Beschreibung ..: Legt eine Funktion als Eventhandler für ein Applet fest.
    ; Syntax ........: LcdSetEventHandler($hApplet, $EventHandler, [$hContext = 0])
    ; Parameter .....: $hApplet - Das Handle des Applets
    ; $EventHandler - Name der Funktion, die als Eventhandler dienen soll.
    ; $hContect -
    ; Rückgabewerte .:
    ; Bemerkungen ...: Die Funktion ist sehr instabil und kann zu Abstürzen des Scripts führen.
    ; Die Funktion muss immer folgende Parameter besitzen:
    ; _BeispielCallback($iEvent, $hContext, $iData)
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdSetEventHandler($hApplet, $EventHandler, $hContext = 0)
    If $callback <> -1 Then DllCallbackFree($callback)
    $callback = DllCallbackRegister($EventHandler, "int", "int;ptr;int")
    Local $ret = DllCall($dll, "int", "LcdSetEventHandler", "ptr", $hApplet, "ptr", DllCallbackGetPtr($callback), "ptr", $hContext)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdSetEventHandler

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdSetPriority
    ; Beschreibung ..: Setzt die Anzeigepriorität und den Vordergrundstatus eines Applets.
    ; Syntax ........: LcdSetPriority($hApplet, $iPriority, $bForeground)
    ; Parameter .....: $hApplet - Das Handle des Applets
    ; $iPriority - Die zu setzende Priorität
    ; $bForeground - Der zu setzende Vordergrundstatus
    ; Rückgabewerte .:
    ; Bemerkungen ...: $iPriority kann eine der folgenden Variablen sein: $LCD_PRIORITY_LOW, $LCD_PRIORITY_NORMAL, $LCD_PRIORITY_HIGH
    ; Wenn $bForeground True ist, wird das Applet in den Vordergrund gerufen und ein eventuelles automatisches
    ; Durchwechseln der Applets wird deaktiviert. Wird $bForeground auf False gesetzt, wird das eventuelle
    ; automatische Durchwechseln fortgeführt.
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdSetPriority($hApplet, $iPriority, $bForeground)
    Local $ret = DllCall($dll, "int", "LcdSetPriority", "ptr", $hApplet, "int", $iPriority, "int", $bForeground)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdSetPriority

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdUpdate
    ; Beschreibung ..: Aktualisiert das LCD und zeigt den aktuellen Buffer des Applets an.
    ; Syntax ........: LcdUpdate($hApplet, [$bSync = 0])
    ; Parameter .....: $hApplet - Das Handle des Applets
    ; $bSync - Gibt an, ob gewartet werden soll, bis der Buffer angezeigt wird, oder nicht.
    ; Rückgabewerte .:
    ; Bemerkungen ...: Wenn $bSync True ist, läuft das Script weiter, sobald der Inhalt des Buffers an den LCD Manger gesendet wurde.
    ; Wenn $bSync False ist, läuft das Script erst weiter, wenn der Inhalt des Buffers auf dem LCD angezeigt wird (ca. 30ms langsamer)
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdUpdate($hApplet, $bSync = 0)
    Local $ret = DllCall($dll, "int", "LcdUpdate", "ptr", $hApplet, "int", $bSync)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdUpdate

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdWaitActivation
    ; Beschreibung ..: Wartet, bis das Applet aktiviert wird.
    ; Syntax ........: LcdWaitActivation($hApplet)
    ; Parameter .....: $hApplet - Das Handle des Applets
    ; Rückgabewerte .:
    ; Bemerkungen ...: Siehe LcdAppletActive
    ; Verwandt ......: LcdAppletActive
    ; ===============================================================================================================================
    Func LcdWaitActivation($hApplet)
    Local $ret = DllCall($dll, "int", "LcdWaitActivation", "ptr", $hApplet)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdWaitActivation
    #endregion Applet

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

    #region Graphics
    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdClear
    ; Beschreibung ..: Leert den Buffer des LCDs.
    ; Syntax ........: LcdClear($hApplet, [$iColor = 0x000000])
    ; Parameter .....: $hApplet - Das Handle des Applets
    ; $iColor - Die Farbe, mit der der Buffer überschrieben werden soll.
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdClear($hApplet, $iColor = 0x000000)
    Local $ret = DllCall($dll, "int", "LcdClear", "ptr", $hApplet, "int", $iColor)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdClear

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdDrawLine
    ; Beschreibung ..:
    ; Syntax ........: LcdDrawLine($hApplet, $iX1, $iY1, $iX2, $iY2)
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdDrawLine($hApplet, $iX1, $iY1, $iX2, $iY2)
    Local $ret = DllCall($dll, "int", "LcdDrawLine", "ptr", $hApplet, "int", $iX1, "int", $iY1, "int", $iX2, "int", $iY2)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdDrawLine

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........:
    ; Beschreibung ..:
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdDrawOval($hApplet, $iX, $iY, $iWidth, $iHeight, $bFill)
    Local $ret = DllCall($dll, "int", "LcdDrawOval", "ptr", $hApplet, "int", $iX, "int", $iY, "int", $iWidth, "int", $iHeight, "int", $bFill)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdDrawOval

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........:
    ; Beschreibung ..:
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdDrawRect($hApplet, $iX, $iY, $iWidth, $iHeight, $bFill)
    Local $ret = DllCall($dll, "int", "LcdDrawRect", "ptr", $hApplet, "int", $iX, "int", $iY, "int", $iWidth, "int", $iHeight, "int", $bFill)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdDrawRect

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........:
    ; Beschreibung ..:
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdEnableAntiAlias($hApplet, $bEnable)
    Local $ret = DllCall($dll, "int", "LcdEnableAntiAlias", "ptr", $hApplet, "int", $bEnable)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdEnableAntiAlias

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........:
    ; Beschreibung ..:
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdSetColor($iColor)
    Local $ret = DllCall($dll, "int", "LcdSetColor", "int", $iColor)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdSetColor

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........:
    ; Beschreibung ..:
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdSetLineWidth($hApplet, $fWidth)
    Local $ret = DllCall($dll, "int", "LcdSetLineWidth", "ptr", $hApplet, "float", $fWidth)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdSetLineWidth

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........:
    ; Beschreibung ..:
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdSetRotation($hApplet, $fRotation, $iCenterX, $iCenterY)
    Local $ret = DllCall($dll, "int", "LcdSetRotation", "ptr", $hApplet, "float", $fRotation, "int", $iCenterX, "int", $iCenterY)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdSetRotation

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdSetTarget
    ; Beschreibung ..: Setzt das aktuelle Renderziel.
    ; Syntax ........: LcdSetTarget($hApplet, $hPixmap)
    ; Parameter .....: $hApplet - Das Handle des Applets, dessen Renderziel gesetzt werden soll.
    ; $hPixmap - Ein Handle zu einer Pixmap, welche das Renderziel sein soll. Bemerkungen beachten!
    ; Rückgabewerte .:
    ; Bemerkungen ...: $hPixmap kann nur eine Pixmap sein, die mit LcdCreatePixmap erstellt wurde.
    ; 0 verwenden, um das Renderziel zurückzusetzen.
    ; Verwandt ......: LcdCreatePixmap
    ; ===============================================================================================================================
    Func LcdSetTarget($hApplet, $hPixmap)
    Local $ret = DllCall($dll, "int", "LcdSetTarget", "ptr", $hApplet, "ptr", $hPixmap)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdSetTarget
    #endregion Graphics

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

    #region Pixmap
    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdCreatePixmap
    ; Beschreibung ..: Erstellt eine neue leere Pixmap
    ; Syntax ........: LcdCreatePixmap([$iWidth = 320, [$iHeight = 240, [$iDevice = $LCD_DEVICE_COLOR]]])
    ; Parameter .....: $iWidth - Breite der Pixmap
    ; $iHeight - Höhe der Pixmap
    ; $iDevice - Typ des Geräts, für das die Pixmap erstellt werden soll.
    ; Rückgabewerte .: Erfolg - Das Handle der Pixmap
    ; Bemerkungen ...:
    ; Verwandt ......: Lcd
    ; ===============================================================================================================================
    Func LcdCreatePixmap($iWidth = 320, $iHeight = 240, $iDevice = $LCD_DEVICE_COLOR)
    Local $ret = DllCall($dll, "ptr", "LcdCreatePixmap", "int", $iWidth, "int", $iHeight, "int", $iDevice)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdCreatePixmap

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdDeletePixmap
    ; Beschreibung ..: Löscht eine Pixmap
    ; Syntax ........: LcdDeletePixmap($hPixmap)
    ; Parameter .....: $hPixmap - Das Handle der Pixmap, die gelöscht werden soll.
    ; Rückgabewerte .:
    ; Bemerkungen ...: Sollte vor LcdDeInitialize aufgerufen werden.
    ; Verwandt ......: LcdCreatePixmap LcdLoadPixmap LcdDeInitialize
    ; ===============================================================================================================================
    Func LcdDeletePixmap($hPixmap)
    Local $ret = DllCall($dll, "int", "LcdDeletePixmap", "ptr", $hPixmap)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdDeletePixmap

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdDrawPixmap
    ; Beschreibung ..: Zeichnet eine Pixmap in den Buffer eines Applets.
    ; Syntax ........: LcdDrawPixmap($hApplet, [$hPixmap, [$iX = 0, [$iY = 0, [$iFrame = 0]]]])
    ; Parameter .....: $hApplet - Das Applet, in dessen Buffer die Pixmap gezeichnet werden soll.
    ; $hPixmap - Die Pixmap, die gezeichnet werden soll.
    ; $iX - Die X-Koordinate, der oberen linken Ecke der Pixmap
    ; $iY - Die Y-Koordinate, der oberen linken Ecke der Pixmap
    ; $iFrame - Die Framezahl, sollte die Pixmap mit LcdLoadAnimPixmap erstellt worden sein.
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......: LcdLoadAnimPixmap
    ; ===============================================================================================================================
    Func LcdDrawPixmap($hApplet, $hPixmap, $iX = 0, $iY = 0, $iFrame = 0)
    Local $ret = DllCall($dll, "int", "LcdDrawPixmap", "ptr", $hApplet, "ptr", $hPixmap, "int", $iX, "int", $iY, "int", $iFrame)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdDrawPixmap

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........:
    ; Beschreibung ..:
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdDrawPixmapRect($hApplet, $hPixmap, $iX, $iY, $iSX, $iSY, $iWidth, $iHeight, $iFrame)
    Local $ret = DllCall($dll, "int", "LcdDrawPixmap", "ptr", $hApplet, "ptr", $hPixmap, "int", $iX, "int", $iY, "int", $iSX, "int", $iSY, "int", $iWidth, "int", $iHeight, "int", $iFrame)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdDrawPixmapRect

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........:
    ; Beschreibung ..:
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdLoadAnimPixmap($sFile, $iFrameWidth, $iFrameHeight, $iFrames)
    Local $ret = DllCall($dll, "ptr", "LcdLoadAnimPixmapW", "wstr", $sFile, "int", $iFrameWidth, "int", $iFrameHeight, "int", $iFrames)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdLoadAnimPixmap

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: LcdLoadPixmap
    ; Beschreibung ..:
    ; Syntax ........: LcdLoadPixmap($sFile)
    ; Parameter .....: $sFile - Der Pfad zu der Bilddatei, die geladen werden soll.
    ; Rückgabewerte .: Erfolg - Das Handle der Pixmap
    ; Bemerkungen ...: Unterstützte Formate: JPG, PNG, BMP, TIFF und GIF
    ; Verwandt ......: LcdCreatePixmap LcdDeletePixmap
    ; ===============================================================================================================================
    Func LcdLoadPixmap($sFile)
    Local $ret = DllCall($dll, "ptr", "LcdLoadPixmapW", "wstr", $sFile)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdLoadPixmap

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........:
    ; Beschreibung ..:
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdPixmapWidth($hPixmap)
    Local $ret = DllCall($dll, "int", "LcdPixmapWidth", "ptr", $hPixmap)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdPixmapWidth

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........:
    ; Beschreibung ..:
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdPixmapHeight($hPixmap)
    Local $ret = DllCall($dll, "int", "LcdPixmapHeight", "ptr", $hPixmap)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdPixmapHeight
    #endregion Pixmap

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

    #region Font
    ; #FUNKTION# ====================================================================================================================
    ; Name ..........:
    ; Beschreibung ..:
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdDeleteFont($hFont)
    Local $ret = DllCall($dll, "int", "LcdDeleteFont", "ptr", $hFont)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdDeleteFont

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........:
    ; Beschreibung ..:
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdDrawText($hApplet, $sString, $iX, $iY)
    Local $ret = DllCall($dll, "int", "LcdDrawTextW", "ptr", $hApplet, "wstr", $sString, "int", $iX, "int", $iY)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdDrawText

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........:
    ; Beschreibung ..:
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdLoadFont($sFamily, $iHeight, $iFlags, $sFile)
    Local $ret = DllCall($dll, "ptr", "LcdLoadFontW", "wstr", $sFamily, "int", $iHeight, "int", $iFlags, "wstr", $sFile)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdLoadFont

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........:
    ; Beschreibung ..:
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdSetFont($hApplet, $hFont)
    Local $ret = DllCall($dll, "int", "LcdSetFont", "ptr", $hApplet, "ptr", $hFont)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdSetFont

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........:
    ; Beschreibung ..:
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdStringHeight($hApplet, $sString)
    Local $ret = DllCall($dll, "int", "LcdStringHeightW", "ptr", $hApplet, "wstr", $sString)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdStringHeight

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........:
    ; Beschreibung ..:
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .:
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func LcdStringWidth($hApplet, $sString)
    Local $ret = DllCall($dll, "int", "LcdStringWidthW", "ptr", $hApplet, "wstr", $sString)
    If @error Then Return SetError(1, @error, 0)
    Return $ret[0]
    EndFunc ;==>LcdStringWidth
    #endregion Font

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


    Im vergleich zu der UDF in Startpost sind hier noch weitere ca. 26 Funktionen hinzugekommen.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.