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

Beiträge von TheLuBu

  • Dynamische Funktionen?

    • TheLuBu
    • 12. Oktober 2016 um 08:29

    Leider ist es nicht ganz das, was ich suche :)

    Falls es jemand kennt, ich suche nach einer Möglichkeit ähnlich zu Crystal Reports oder anderen Report-Designern.

    Ich bin allerdings heute Nacht auch auf eine Lösung gekommen.

    Execute() kann leider keine If...ElseIf...Else...EndIf oder Switch Anweisungen ausführen.
    Was man aber tun kann, ist die diese in einer Funktion zu bündeln.

    AutoIt
    Func IIf($bool, $true, $false)
    	If $bool Then Return $true
    	Return $false
    EndFunc   ;==>IIf
    
    
    Func ISwitch($expression, $else = Null, $v1 = Null, $s1 = Null, $v2 = Null, $s2 = Null, $vN = Null, $sN = Null)
    	For $i = 1 To @NumParams
    		If $expression = Eval("v" & $i) Then Return Eval("s" & $i)
    	Next
    	Return $else
    EndFunc   ;==>ISwitch
    Alles anzeigen

    Diese kann dann auch über Execute ausgeführt werden:


    AutoIt
    Execute("IIf(10 = 11, 20, 30)")

    Ich mache mal weiter und poste das Ergebnis, vielleicht wird auch eine UDF draus ;)

    TheLuBu

  • Ping Tool

    • TheLuBu
    • 11. Oktober 2016 um 15:49

    probier mal statt Case $nMsg Case $inp_IP_Adresse

    Ansonsten, wenn du es exakter timen möchtest, schau dir mal WM_Command an:

    https://www.autoitscript.com/autoit3/docs/l…Edit_Create.htm

    Damit solltest du an dein Ziel kommen

    (Input ist nichts anderes als ein einzeiliges Edit-Control ;) )

  • Dynamische Funktionen?

    • TheLuBu
    • 11. Oktober 2016 um 15:36

    Hallo zusammen,

    Ich arbeite derzeit an einem Problem und die Lösung möchte mir nicht so recht einfallen.

    Ich bin auf einen vielversprechenden Ansatz gestoßen:
    https://www.autoitscript.com/forum/topic/17…amic-functions/
    Leider ist es auf das ausgeben von einzelnen Zeilen beschränkt, IF abfragen oder Schleifen sind nicht möglich (soweit ich es zumindest getestet habe)

    Zur Nutzung:

    Der Nutzer soll über eine GUI ein Exportformat festlegen können ( Tabellarisch).
    Dafür ist ein Grundstock an Funktionen, Feldern und Operatoren vorgegeben, weiterhin ist eine Datenquelle vorhanden, auf die zugegriffen werden kann.

    Jetzt soll der Nutzer jeder Spalte eine Überschrift geben können und den Inhalt der Zeile dann eben über kleine Funktionen, z.B:

    AutoIt
    If $sStatus = 1 THEN Return 5 ELSE Return 10 EndIf

    bestimmen können.


    Die Spalte und den Autoit Code speichere ich in einer Datenbank, um die Daten entsprechend abrufen zu können.

    Das meiste ist schon fertig, allerdings fehlt das Herzstück, das aufrufen dieser UDFs.

    Ich habe mir auch schon diverse Plugin-Systeme angesehen, aber die meisten arbeiten nicht mit uncompiliertem AutoIt Code.

    hat jemand von euch schonmal etwas ähnliches geschrieben oder einen Link zu einem Projekt, in dem soetwas genutzt wird?

    Danke schonmal für die Hilfe
    LuBu

  • Umlaute und Sonderzeichen konvertieren

    • TheLuBu
    • 24. April 2014 um 15:37

    Hallo liebe Community,

    Ich arbeite derzeit an einem HTML Converter, leider funktionieren ein paar Dinge nicht.
    In dem zu konvertierenden Text sind einige Sonderzeichen enthalten:
    & #8232; und noch einige mehr, aber für den Anfang soll dieses Zeichen reichen.

    Ich möchte dieses Zeichen jetzt durch den HTML Code ersetzen, da das Zeichen durch AutoIt in ein ? umgewandelt wird.
    Allerdings kann ich ja nicht danach suchen, da das Zeichen eben nicht druckbar in AutoIt ist.

    Ich habe das Zeichen in einer Textdatei, diese lese ich ein und wenn ich mir das Zeichen über

    [autoit]

    AscW($zeichen)

    [/autoit]


    ausgeben lasse, erhalte ich auch die Korrekte Nummer ( 8232 ). Allerdings kann ich nicht danach suchen.

    [autoit]

    StringInStr($read, ChrW(8223))

    [/autoit]

    gibt 0 zurück.

    Hat jemand eine Idee, wie man dieses, und andere Symbole mit AscW > 255 suchen und ersetzen kann?

  • MS SQL.au3

    • TheLuBu
    • 1. August 2013 um 11:54

    Nach langer Zeit mal wieder ein Update:

    Die aktualisierte UDF findet ihr im ersten Beitrag

    Es sind 2 neue Funktionen hinzugekommen,
    zum einen _MSSQL_Logging und _MSSQL_Errorhandler

    _MSSQL_Logging ermöglicht es, die generierten Queries auszugeben, um evtl. Fehler in der Syntax zu finden.
    Die Idee und der Code dazu sind von peethebee
    und seiner Logging UDF

    _MSSQL_Errorhandler erstellt einen Handler für evtl. auftretende Objektfehler, damit das Script weiterlaufen kann.

    Das Logging ist derzeit nicht in allen Funktionen eingebaut, wird aber noch nachgereicht

  • Bug bei ControlMove und Group Controls?

    • TheLuBu
    • 22. Juli 2013 um 10:19

    Hallo liebe Community,
    ich habe ein kleines Problem mit einer GUI, an der ich gerade arbeite.

    Ich habe mehrere Group Controls mit Inhalten, die zur Laufzeit erstellt werden.
    Um das ganze übersichtlich zu halten, sollen die Group Controls samt Inhalt beim Hinzufügen oder entfernen eines neuen Controls verschoben werden.

    Dabei ist mir aufgefallen, das man z.B. einen Button nicht mehr drücken kann, nachdem das Group Control bewegt wurde.
    Anbei mal ein Beispiel, einfach auf OK klicken, um das Group Control zu verschieben.

    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)

    [/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)
    EndSwitch
    WEnd

    [/autoit]

    Ist das ein Bug oder mache ich etwas falsch, wie könnte man das verhindern?

  • Live-Log

    • TheLuBu
    • 18. Juli 2013 um 11:48

    Schau dir mal

    [autoit]

    Stringformat

    [/autoit]

    an :)

  • Projekt NAS-Inport in KIVID/Geograf

    • TheLuBu
    • 18. Juli 2013 um 10:22

    Ohne Bilder ist es recht schwer, dir zu folgen :D
    Kannst du Screenshots davon machen, oder vielleicht sogar eine Bildschirmaufzeichnung, was genau du machen möchtest?

  • MS SQL Abfrage abfangen, wenn kein Ergebnis geliefert wird

    • TheLuBu
    • 18. Juli 2013 um 10:12

    aus meiner MSSQL UDF, etwas umgewandelt ;)

    Spoiler anzeigen
    [autoit]


    Local $SQLQuery = _MSSQL_Query($sqlCon, "select n.nachweis_id, n.nachweisnr, n.vorlaeufigeennr, n.angelegt_am, u.username, n.gueltig_von, n.gueltig_bis, n.relevant, n.entsorgungsmenge_max, n.entsorgungsmenge_init, n.entsorgungsmenge_akt, n.deaktiviert_am, n.geloescht_am, t.behoerdliche_nummer, tr.KUERZEL, t.NAME from nachweis n left join teilnehmer t on n.teilnehmer_id = t.teilnehmer_id left join teilnehmerrolle tr on t.teilnehmerrolle_id = tr.teilnehmerrolle_id left join users u on n.angelegt_durch = u.user_id where n.nachweis_id = " & $Suchbegriff & ";")
    If Not $SQLQuery.EOF Then ; Wenn die Abfrage nicht leer ist
    $aSQLQueryErgebnis = $SQLQuery.GetRows() ; Zeilen abfragen
    Else ; Abfrage enthält keine Daten
    MsgBox(16, "Fehler", "Abfrage lieferte kein Ergebnis")
    EndIf

    [/autoit]

    --EDIT--

    Da du ja sowieso meine UDF benutzt, kannst du auch mit _MSSQL_GetRecords arbeiten :

    Spoiler anzeigen
    [autoit]

    $Columns = "n.nachweis_id, n.nachweisnr, n.vorlaeufigeennr, n.angelegt_am, u.username"
    $Columns &= ", n.gueltig_von, n.gueltig_bis, n.relevant, n.entsorgungsmenge_max"
    $Columns &= ", n.entsorgungsmenge_init, n.entsorgungsmenge_akt, n.deaktiviert_am, n.geloescht_am"
    $Columns &= ", t.behoerdliche_nummer, tr.KUERZEL, t.NAME"
    $Conditions = "left join teilnehmer t on n.teilnehmer_id = t.teilnehmer_id "
    $Conditions &= "left join teilnehmerrolle tr on t.teilnehmerrolle_id = tr.teilnehmerrolle_id "
    $Conditions &= "left join users u on n.angelegt_durch = u.user_id where n.nachweis_id = '" & $Suchbegriff & "'"
    _MSSQL_GetRecord($sqlCon, "nachweis n", $Columns, $Conditions)

    [/autoit]

    Da sind die Fehlerabfragen ja bereits vorhanden

  • RegEx unbekannte Anzahl an wiederholungen

    • TheLuBu
    • 17. Juli 2013 um 08:29

    Ich glaube, da wurde meine Fragestellung falsch verstanden,
    bzw. habt ihr den bisherigen Code mal ausgeführt? :)

    Nochmal zur Verdeutlichung (einfach Copy & Paste ;)

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    $String = '<t tn="bf06685d-5219-4040-8f3f-b867f0e24562" tmk="3"><tis><ti tk="0" tv="Wert1" ta="True" /><ti tk="1" tv="Wert2" ta="True" /><ti tk="2" tv="Wert3" ta="True" /><ti tk="3" tv="Wert4" ta="True" /></tis></t>'
    $Pattern = 'tn="bf06685d-5219-4040-8f3f-b867f0e24562" tmk="(\d+)"><tis><ti tk="(\d+)" tv="([^"]*)'
    $RegEx = StringRegExp($String, $Pattern, 3)
    _ArrayDisplay($RegEx)

    [/autoit]

    Wie ihr seht erhalte ich nur
    1. Den letzten Wert (in diesem Fall 3)
    2. Die ID des 1 Wertes (0)
    3 Und die Bezeichnung (Wert1)

    Was ich aber weiter benötige sind eben auchnoch die ID´s und Bezeichnungen 1|Wert2, 2|Wert3 ... n|Wert n+1

    --EDIT--
    mit folgendem Pattern erhalte ich alle Werte aus dem String, aber ich benötige nur die Werte, die zu der ersten ID passen.

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    $String = '<t tn="bf06685d-5219-4040-8f3f-b867f0e24562" tmk="3"><tis><ti tk="0" tv="Wert1" ta="True" /><ti tk="1" tv="Wert2" ta="True" /><ti tk="2" tv="Wert3" ta="True" /><ti tk="3" tv="Wert4" ta="True" /></tis></t>' & _
    '<t tn="1ac9d371-eadd-4396-ad85-02d54769d6a7" tmk="3"><tis><ti tk="0" tv="ID1" ta="True" /><ti tk="1" tv="ID2" ta="True" /><ti tk="2" tv="ID3" ta="False" /><ti tk="3" tv="ID4" ta="True" /></tis></t>'
    $Pattern = '<ti tk="(\d+)" tv="([^"]*)" ta="([^"]*)"[^>]*'
    $RegEx = StringRegExp($String, $Pattern, 3)
    _ArrayDisplay($RegEx)

    [/autoit]

    --EDIT--
    Ich habe es jetzt geschafft, aber anscheinend kann AutoIt keine wiederholung in einem RegEx anzeigen

    Spoiler anzeigen
    Code
    tn="bf06685d-5219-4040-8f3f-b867f0e24562" tmk="(\d+)"><tis>(?:<ti tk="(\d+)" tv="([^"]*)" ta="([^"]*)"[^>]*>)*


    Liefert eigentlich das richtige zurück (Laut anderen RegExprüfern) In Autoit erhalte ich aber trotzdem nicht die Werte, die ich benötige...
    Ich werde es wohl doch in mehreren Schritten machen müssen.

  • Dynamisches GUI

    • TheLuBu
    • 16. Juli 2013 um 15:35

    Naja, ich habe es mir fast gedacht :D

    Dann bastel ich es eben selbst zurecht :D

  • RegEx unbekannte Anzahl an wiederholungen

    • TheLuBu
    • 16. Juli 2013 um 15:34

    Da bin ich schon wieder ;)

    Diesmal komme ich bei einem RegEx nicht weiter.

    Ich habe folgenden String:

    Spoiler anzeigen
    [autoit]

    [...]<t tn="bf06685d-5219-4040-8f3f-b867f0e24562" tmk="3"><tis><ti tk="0" tv="Wert1" ta="True" /><ti tk="1" tv="Wert2" ta="True" /><ti tk="2" tv="Wert3" ta="True" /><ti tk="3" tv="Wert4" ta="True" /></tis></t>[...]

    [/autoit]


    Vor und nach diesem String können noch weitere Strings mit einer anderen ID und anderen Werten kommen.
    Die ID ist bekannt
    Ich kriege mit meinem RegEx allerdings immernur den ersten Wert heraus.

    Code
    tn="bf06685d-5219-4040-8f3f-b867f0e24562" tmk="(\d+)"><tis><ti tk="(\d+)" tv="([^"]*)

    Könnte jemand einmal drüber sehen und mir sagen, wie ich eine Wiederholung unbekannter Anzahl(Die Werte können bis N weitergehen)
    In dieses RegEx einbaue?

  • Dynamisches GUI

    • TheLuBu
    • 16. Juli 2013 um 13:11

    Hallo Liebe Community,

    Für mein aktuelles Projekt suche ich eine Möglichkeit, dem Benutzer Bedinungen für spezielle Abfragen und Aufgaben selber erstellen zu lassen.

    Die Idee dahinter ist folgende:

    Ich habe eine Datenbank, an welche eine Abfrage gesendet wird.
    Das Ergebnis der Abfrage liegt dann als Array vor.
    Dieses Array soll nun verarbeitet werden und als eine CSV Datei gespeichert werden.
    Welche Datensätze genau mit welchen Bedingungen und/ oder besonderen Formatierungen soll der Benutzer selbst festlegen können.

    Die Idee, wie es funktionieren könnte, habe ich von einem anderen Programm:
    http://screencast.com/t/okDySkzt0

    Mein Problem ist aber, das ich bis jetzt bei solchen GUI Geschichten meist gescheitert bin :D
    Kennt jemand eine UDF oder ein AutoIt Beispiel, das so ähnlich funktioniert?

    Wenn es die Logik des Groupings und das Erstellen und Hinzufügen der neuen Controls bereits gibt, würde mir das natürlich eine Menge arbeit abnehmen :)

    Vielen Dank schonmal für eure Hilfe :)

  • Puzzle - Control Docking

    • TheLuBu
    • 8. Juli 2013 um 15:28

    Hallo liebe Community,

    Ich habe mir überlegt, das ich gerne mal ein Puzzle - Spiel basteln würde, allerdings fehlt mir eine Idee,
    wie ich das aneinanderdocken der verschiedenen Teile realisieren kann.

    Hat jemand etwas ähnliches schonmal programmiert oder hätte einen Ansatz für mich?

    Gibt es einen Style o.Ä, den ich übersehen habe?

    Ich würde es gerne ähnlich dem Koda GUI realisieren, also quasi Links eine Leiste mit den ganzen Teilen und rechts ein Feld, auf die man die verschiedenen Teile ziehen kann, und sollte das andere Teil richtig sitzen, die beiden Teile zu einer Einheit verbinden.

    Würde mich über eine Idee freuen :)

  • SQL-Ergebnis als Variable speichern

    • TheLuBu
    • 5. Juli 2013 um 08:43
    [autoit]

    Func test()
    Local $hQuery, $aRow
    _SQLite_Query($hDB, "SELECT Name FROM Einstellungen;", $hQuery)
    _SQLite_FetchData($hQuery, $aRow)
    $blubber = String($hQuery)
    ConsoleWrite($blubber)
    EndFunc ;==>test

    [/autoit]

    Du fragst nicht die abgefangenen Daten ab sondern das Queryhandle.

    Versuchs mal so:

    [autoit]

    Func test()
    Local $hQuery, $aRow
    _SQLite_Query($hDB, "SELECT Name FROM Einstellungen;", $hQuery)
    _SQLite_FetchData($hQuery, $aRow)
    $blubber = String($aRow[0]) ; Die Zahl in der Klammer gibt die Abgefragte Spalte an (also bei 2 Spalten wäre die erste Spalte 0 und die 2te Spale 1 usw...)
    ConsoleWrite($blubber)
    EndFunc ;==>test

    [/autoit]
  • Performance von SQLite optimieren?

    • TheLuBu
    • 10. Juni 2013 um 14:48

    Ich habe mir grade die Funktion für

    [autoit]

    _SQLite_FetchData

    [/autoit]


    angesehen und sehe ein gewisses Optimierungspotenzial ;)

    Ich bastel mal ein bisschen ;)

    --EDIT--

    Ich habe mich vertan, ich habe ein ReDim in der Funktion gesehen und dort an eine Optimierung gedacht, aber bei genauerer Betrachtung ist es nur eine Umwandlung der übergebenen Variable und keine große, zeitraubende Veränderung.

    Ich glaube aber auch, das dein Weg

    Spoiler anzeigen

    1. Stored function in der DB erstellen, welche das SQL Query erledigt und sämtliche Ergebniszeilen verkettet und in einer einzigen Rückgabvariable speichert.
    2. Stored function in Autoit aufrufen, es sollte nun nur noch ein einziges FetchData nötig sein um einen riesigen String, der die ganze Tabelle enthält zu bekommen
    3. String per Autoit wieder in Zeilen zerlegen und damit das Listview befüllen


    nicht funktioniert.
    1. Es gibt es keine Stored Funktions / Stored Procedures bei SQlite (https://autoit.de/Quelle)
    2. Datenbanken arbeiten Datensatzweise, der Datensatz in der ersten Zeile hat nichts mit dem Datensatz in der 2ten Zeile zu tun, eine Verknüpfung ist also nicht möglich

  • Performance von SQLite optimieren?

    • TheLuBu
    • 10. Juni 2013 um 11:30

    Ich glaube du verfehlst denn Sinn eines RDBMS ;)

    Klar, wenn die Daten in Textformat vorliegen sind sie schneller aus einer Textdatei geparst, als aus einer DB.
    Hinter einer Textdatei steht ja auch kein SQL Server, der die Daten auf-, vor- und abarbeitet ;)
    Das pure Speichern von Daten ist ja nicht der Hauptgedanke eines RDBMS.

    Der Geschwindigkeitsvorteil kommt, sobald du Bedingungen hast.
    Willst du immer alle Datensätze aus der Datenbank abrufen? Wohl eher nicht :D

    Eine einzige WHERE Bedingung sollte den Geschwindigkeitsvorteil eigentlich schon deutlich machen.
    Oder auch, sollte sich deine Datenbank weiterentwickeln, mehrere Tabellen (3te. Normalform etc), JOINS,
    VIEWS wie du schon gesagt hast, Hinzufügen, ändern und Löschen von einzelnen Datensätzen oder auch größeren Datenmengen,
    darin liegt der Vorteil eines RDBMS ;)

    P.S:

    Spoiler anzeigen
    [autoit]


    _SQLite_Query ($hDB, "PRAGMA table_info(" & $tablename & ")", $hQuery)
    while _SQLite_FetchData($hQuery,$aResult) = $SQLITE_OK
    $iResultColumnCount = Number($aResult[0])+1
    $allColumNames &= $aResult[1] & "|"
    WEnd

    [/autoit]

    Du rufst alle Spaltennamen der Tabelle ab und speicherst sie in einem String.

    Spoiler anzeigen
    [autoit]


    _SQLite_Query ( $hDB, "SELECT * FROM " & $tablename, $hQuery )
    _SQLite_FetchNames($hQuery, $allColumNames)
    _ArrayToString($allColumNames)

    [/autoit]

    Selbes Ergebnis, aber 10mal Schneller ;)

    PRAGMA TABLE INFO: 3.01685434320743
    _SQLite_FetchNames: 0.352390055538509

  • Abfrage einer MS SQL 2008 DB mit Autoit

    • TheLuBu
    • 15. Mai 2013 um 08:58

    Hier mal ein Beispiel zu Tabs:

    Spoiler anzeigen
    [autoit]

    $hGui = GUICreate("Test")
    $Tab = GUICtrlCreateTab(1,1,400, 400)
    $tabitem1 = GUICtrlCreateTabItem("1 Tab") ; Ersten Tab erstellen
    $Listview = GUICtrlCreateListView("Listview", 50, 50, 300, 300) ;
    ;~ [...]
    ;~ weitere Controls für den ersten Tab
    ;~ [...]

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

    $tabitem2 = GUICtrlCreateTabItem("2 Tab") ; Zweiten Tab erstellen
    ;~ [...]
    ;~ weitere Controls für den zweiten Tab
    ;~ [...]

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

    GUICtrlCreateTabItem(""); Tab Definition beenden

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

    Guisetstate()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    Exit
    EndSwitch

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

    WEnd

    [/autoit]

    Die Reihenfolge, in der du die Controls anlegst, ist bei den Tabs wichtig.

  • Abfrage einer MS SQL 2008 DB mit Autoit

    • TheLuBu
    • 14. Mai 2013 um 14:16

    Ich hab den Include vergessen :)

    [autoit]

    #include <WindowsConstants.au3>
    #include <GuiConstantsEx.au3>

    [/autoit]

    Entferne die Variablen, die du als Local deklariert hast nochmal und versuche es dann bitte

  • Abfrage einer MS SQL 2008 DB mit Autoit

    • TheLuBu
    • 14. Mai 2013 um 13:02

    also zum auslesen kannst du das hier benutzen

    Spoiler anzeigen
    [autoit]

    $mark = _GUICtrlListView_GetSelectionMark(GUICtrlGetHandle($h_Listview))
    $erste_spalte= _GUICtrlListView_GetItemText(GUICtrlGetHandle($h_Listview), $mark, 0)
    $zweite_spalte= _GUICtrlListView_GetItemText(GUICtrlGetHandle($h_Listview), $mark, 1)
    $dritte_spalte= _GUICtrlListView_GetItemText(GUICtrlGetHandle($h_Listview), $mark, 2)

    [/autoit]

    um herauszufinden, wann ein Item im Listview angeklickt wurde, benötigst du WM_NOTIFY

    Spoiler anzeigen
    [autoit]


    [...]GUI Erstellen [...]
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    While 1

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

    Sleep(100)

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

    WEnd

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $LVN_COLUMNCLICK ; Es wurde auf eine Spalte geklickt
    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    _DebugPrint("$LVN_COLUMNCLICK" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode & @LF & _
    "-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @LF & _
    "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    "-->Param:" & @TAB & DllStructGetData($tInfo, "Param"))
    ; Kein Rückgabewert
    Case $LVN_DELETEITEM ; Ein Item soll gelöscht werden
    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    _DebugPrint("$LVN_DELETEITEM" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode & @LF & _
    "-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @LF & _
    "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    "-->Param:" & @TAB & DllStructGetData($tInfo, "Param"))
    ; Kein Rückgabewert
    Case $LVN_HOTTRACK ; Wird von einem ListView gesendet, wenn der Benutzer die Maus über ein Item bewegt
    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    _DebugPrint("$LVN_HOTTRACK" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode & @LF & _
    "-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @LF & _
    "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    "-->Param:" & @TAB & DllStructGetData($tInfo, "Param"))
    ;~ Return 0 ; Erlaubt dem ListView, seine normale "Verfolgen und Auswählen"-Operation durchzuführen
    ;Return 1 ; Das Item wird nicht ausgewählt
    Case $LVN_KEYDOWN ; Eine Taste wurde gedrückt
    $tInfo = DllStructCreate($tagNMLVKEYDOWN, $ilParam)
    _DebugPrint("$LVN_KEYDOWN" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode & @LF & _
    "-->VKey:" & @TAB & DllStructGetData($tInfo, "VKey") & @LF & _
    "-->Flags:" & @TAB & DllStructGetData($tInfo, "Flags"))
    ; Kein Rückgabewert
    Case $NM_CLICK ; Wird vom ListView gesendet, wenn der Benutzer ein Item mit der linken Maustaste anklickt
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    _DebugPrint("$NM_CLICK" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode & @LF & _
    "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
    "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
    "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
    ; Kein Rückgabewert
    Case $NM_DBLCLK ; Wird vom ListView gesendet, wenn der Benutzer ein Item mit der linken Maustaste doppelklickt
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    _DebugPrint("$NM_DBLCLK" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode & @LF & _
    "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
    "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
    "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
    ; Kein Rückgabewert
    Case $NM_KILLFOCUS ; Das Control hat den Eingabefokus verloren
    _DebugPrint("$NM_KILLFOCUS" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode)
    ; Kein Rückgabewert
    Case $NM_RCLICK ; Wird vom ListView gesendet, wenn der Benutzer ein Item mit der rechten Maustaste anklickt
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    _DebugPrint("$NM_RCLICK" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode & @LF & _
    "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
    "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
    "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
    ;Return 1 ; Verhindert die weitere Standard-Nachrichtenbehandlung
    Return 0 ; Erlaubt die weitere Standard-Nachrichtenbehandlung
    Case $NM_RDBLCLK ; Wird vom ListView gesendet, wenn der Benutzer ein Item mit der rechten Maustaste doppelklickt
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    _DebugPrint("$NM_RDBLCLK" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode & @LF & _
    "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
    "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
    "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
    ; Kein Rückgabewert
    Case $NM_RETURN ; Das Control hat den Eingabefokus und der Benutzer hat die ENTER-Taste gedrückt
    _DebugPrint("$NM_RETURN" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode)
    ; Kein Rückgabewert
    Case $NM_SETFOCUS ; Das Control hat den Eingabefokus erhalten
    _DebugPrint("$NM_SETFOCUS" & @LF & "-->hWndFrom:" & @TAB & $hWndFrom & @LF & _
    "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    "-->Code:" & @TAB & $iCode)
    ; Kein Rückgabewert
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

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

    Func _DebugPrint($s_text, $line = @ScriptLineNumber)
    ConsoleWrite( _
    "!===========================================================" & @LF & _
    "+======================================================" & @LF & _
    "-->Zeile(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _
    "+======================================================" & @LF)
    EndFunc ;==>_DebugPrint

    [/autoit]

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™