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

Beiträge von WhiteHorse

  • Statistik und Ini

    • WhiteHorse
    • 17. Juli 2024 um 19:32
    Zitat von MojoeB
    C
    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Date.au3>
    #include <Array.au3>
    
    Global $ini = @ScriptDir & '\Stats.ini'
    Global $sections
    
    ; GUI erstellen
    $MainMenu = GUICreate("Anrufe Legende", 939, 569, 223, 141)
    $LabelMainMenu = GUICtrlCreateLabel("Anrufe Legende", 369, 16, 201, 29)
    GUICtrlSetFont(-1, 15, 800, 0, "MS Sans Serif")
    $GroupRechts = GUICtrlCreateGroup("", 640, 56, 289, 481)
    $InfoStatistik = GUICtrlCreateEdit("", 648, 72, 273, 457, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_BORDER))
    GUICtrlSetFont(-1, 10, 800, 0, "DejaVu Sans Mono")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $GroupMitte = GUICtrlCreateGroup("", 336, 88, 273, 169)
    $ButtonSchliessen = GUICtrlCreateButton("Schließen", 359, 180, 227, 57)
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    GUICtrlSetCursor(-1, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $GroupMitteStats = GUICtrlCreateGroup("", 336, 264, 273, 273)
    $ComboStatsWahl = GUICtrlCreateCombo("", 344, 304, 257, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetCursor(-1, 0)
    $LabelStats = GUICtrlCreateLabel("Statistik wählen", 424, 280, 111, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $ButtonLoeschen = GUICtrlCreateButton("Löschen", 520, 496, 75, 25)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x800000)
    GUICtrlSetCursor(-1, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    
    ; Funktionen
    
    Func LoadSections()
        $sections = IniReadSectionNames($ini)
        If @error Then
            MsgBox(0, "Fehler", "Die INI-Datei konnte nicht gelesen werden.")
            Exit
        EndIf
    
        GUICtrlSetData($ComboStatsWahl, "")
        For $i = 1 To $sections[0]
            Local $Datum = IniRead($ini, $sections[$i], "Datum", "")
            If $Datum <> "" Then
                GUICtrlSetData($ComboStatsWahl, $Datum, True)
            EndIf
        Next
    EndFunc
    
    Func DisplayStats($section)
        Local $DatumStats = IniRead($ini, $section, "Datum", "default")
        Local $AnrufeStats = IniRead($ini, $section, "Anrufe", "default")
        Local $VerpassteAnrufeStats = IniRead($ini, $section, "Verpasste Anrufe", "default")
        Local $ZurueckgerufenStats = IniRead($ini, $section, "Zurückgerufen", "default")
        Local $NameStats = IniRead($ini, $section, "Name", "default")
        Local $WeggedruecktStats = IniRead($ini, $section, "Weggedrückt", "default")
    
        Local $data = StringFormat("            STATISTIK\r\n\r\n\r\nDatum: "&$DatumStats&"\r\n\r\n\r\nAnrufe: "&$AnrufeStats&"\r\n\r\n\r\nVerpasste: "&$VerpassteAnrufeStats&"\r\n\r\n\r\nPlatzhalter:\r\n\r\n\r\nZurückgerufen: "&$ZurueckgerufenStats&"\r\n\r\n\r\nName: "&$NameStats&"\r\n\r\n\r\nPlatzhalter:\r\n\r\n\r\nWeggedrückt: "&$WeggedruecktStats&"\r\n\r\n")
        GUICtrlSetData($InfoStatistik, $data)
    EndFunc
    
    Func DeleteStats($section)
        IniDelete($ini, $section)
        LoadSections()
        GUICtrlSetData($InfoStatistik, "")
    EndFunc
    
    ; Initialisierung
    LoadSections()
    
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
            Case $ButtonLoeschen
                Local $selectedDate = GUICtrlRead($ComboStatsWahl)
                If $selectedDate <> "" Then
                    For $i = 1 To $sections[0]
                        If IniRead($ini, $sections[$i], "Datum", "") = $selectedDate Then
                            DeleteStats($sections[$i])
                            ExitLoop
                        EndIf
                    Next
                EndIf
            Case $ComboStatsWahl
                Local $selectedDate = GUICtrlRead($ComboStatsWahl)
                If $selectedDate <> "" Then
                    For $i = 1 To $sections[0]
                        If IniRead($ini, $sections[$i], "Datum", "") = $selectedDate Then
                            DisplayStats($sections[$i])
                            ExitLoop
                        EndIf
                    Next
                EndIf
            Case $ButtonSchliessen
                Exit
        EndSwitch
    WEnd
    Alles anzeigen

    Das sollte das ziel sein oder ? ^^

    Danke so habe ich mir das vorgestellt ich danke dir
    und Moombas

  • Statistik und Ini

    • WhiteHorse
    • 17. Juli 2024 um 15:11

    Ich bin aktuell noch unterwegs und probiere es dann sobald ich zuhause bin Danke 😊👍


    Ich habe das in ein Edit gepackt weil so habe ich das gleich alles in einer zeile mit Umbruch sonst hätte ich jedes Label Positionieren müssen 😅

  • Statistik und Ini

    • WhiteHorse
    • 16. Juli 2024 um 20:50

    Hallo ich stehe vor ein Problem und weiß nicht, wie ich es umsetzen soll.


    Ich habe ich mir eine Anrufstatistik gebastelt diese wird automatisch gefüttert in einer ini Datei

    jetzt habe ich mir den Spaß gemacht und habe mir eine GUI erstellt die mir diese Statistik besser und genauer anzeigt, Script teile ich hier gleich


    die Statistik wird aufgezeichnet, sobald man sein Programm startet darum geht es aber nicht es geht nur um das Auslesen und das Datum in die Combobox eintragen sowie rechts in das Edit Fenster nach jedem Start wird eine neue Section in der ini datei geschrieben Anrufe Name sowie Datum usw das Datum taucht nur einmal in jeder section auf


    Ich möchte ganz gerne das wenn man die GUI hier startet er schaut in die ini Datum 13.07.2024 14.07.2024 15.07.2024. 16.07.2024 und jedes Datum hat andere Werte und diese werte Sollen in das Edit und in der Combo steht dann das Datum damit man auch einen verlauf hat


    Hier mein beispiel Script:


    AutoIt
    $ini = @ScriptDir & 'Stats.ini'
    
    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    
    #include <Date.au3>
    
    ;Varialen
    Global $StatsZahlListe				= 1												;kann ggf überarbeitet werden weiß garnicht mehr wieso ich das hier an der Stelle geschrieben habe
    Local Const $sIniSection			= $StatsZahlListe
    Global $DatumStats					= IniRead($ini, $sIniSection, "Datum", "default")
    Global $AnrufeStats					= IniRead($ini, $sIniSection, "Anrufe", "default")
    Global $VerpassteAnrufeStats 		= IniRead($ini, $sIniSection, "Verpasste Anrufe", "default")
    Global $ZurueckgerufenStats 		= IniRead($ini, $sIniSection, "Zurückgerufen", "default")
    Global $NameStats 					= IniRead($ini, $sIniSection, "Name", "default")
    Global $WeggedruecktStats 			= IniRead($ini, $sIniSection, "Weggedrückt", "default")
    
    
    
    
    
    
    
    
    #Region MainMenu erstellung
    $MainMenu = GUICreate("Anrufe Legende", 939, 569, 223, 141)
    
    $LabelMainMenu = GUICtrlCreateLabel("Anrufe Legende", 369, 16, 201, 29)
    GUICtrlSetFont(-1, 15, 800, 0, "MS Sans Serif")
    
    
    $GroupRechts = GUICtrlCreateGroup("", 640, 56, 289, 481)
    
    
    $InfoStatistik = GUICtrlCreateEdit("", 648, 72, 273, 457, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_BORDER))
    GUICtrlSetData(-1, StringFormat("            STATISTIK\r\n\r\n\r\nDatum: "&$DatumStats&"\r\n\r\n\r\nAnrufe: "&$AnrufeStats&"\r\n\r\n\r\nVerpasste: "&$VerpassteAnrufeStats&"\r\n\r\n\r\nPlatzhalter:\r\n\r\n\r\nZurückgerufen: "&$ZurueckgerufenStats&"\r\n\r\n\r\nName: "&$NameStats&"\r\n\r\n\r\nPlatzhalter:\r\n\r\n\r\nWeggedrückt: "&$WeggedruecktStats&"\r\n\r\n"))
    GUICtrlSetFont(-1, 10, 800, 0, "DejaVu Sans Mono")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    
    $GroupMitte = GUICtrlCreateGroup("", 336, 88, 273, 169)
    
    
    $ButtonSchliessen = GUICtrlCreateButton("Schließen", 359, 180, 227, 57)
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    GUICtrlSetCursor (-1, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    
    
    $GroupMitteStats = GUICtrlCreateGroup("", 336, 264, 273, 273)
    
    
    $ComboStatsWahl = GUICtrlCreateCombo("", 344, 304, 257, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "");hier sollten die Datums angezeigt werden jedes Datum hat ihr eigenes Abteil bedeutet das Datum kommt nur einmal in der Kompletten Statistik vor
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetCursor (-1, 0)
    
    
    $LabelStats = GUICtrlCreateLabel("Statistik wählen", 424, 280, 111, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    
    
    $ButtonLoeschen = GUICtrlCreateButton("Löschen", 520, 496, 75, 25)		;Wenn Datum gewählt wurde in der Combo und man klickt auf Löschen soll die Statistik die gewählt wurde gelöscht werden aus der InI
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x800000)
    GUICtrlSetCursor (-1, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    
    GUISetState(@SW_SHOW)
    
    
    Global $Ergebnis = 0
    #EndRegion MainMenu erstellung
    
    
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			Exit
    
    
    
    		Case $ButtonLoeschen
    			;Funktion noch nicht umgesetzt ???
    
    
    		Case $ComboStatsWahl
    
    
    
    		Case $ButtonSchliessen
    			Exit
    
    	EndSwitch
    WEnd
    Alles anzeigen

    Ich teile hier auch nochmal die ini Datei vielleicht hat jemand eine Idee?

    Stats.7z

  • Autoit Einstellungen backup

    • WhiteHorse
    • 2. Juli 2024 um 15:07

    Vielen Dank 😊👍

  • Autoit Einstellungen backup

    • WhiteHorse
    • 2. Juli 2024 um 07:17

    Hallo,


    Ich hätte eine frage gibt es eine möglichkeit ein backup von autoit zu machen?

    Ich möchte demnächst mein PC neu machen und müsste alles von Autoit neu einstellen?

    Ich habe sachen eingestellt wenn ich autoit schließe das er den Code gefaltet lässt wenn ich wieder das Programm starte


    Wäre nice wenn ihr mir sagen könnt ob das geht und wie das geht ich habe auch offnene projekte die mir oben in der Kopfzeile angezeigt werden die würden ja auch verschwinden wäre gut zu wissen wenn es eine Datei gäbe die ich dann nur in den neuen Ordner verschiebe und alle Einstellungen werden übernommen


    Oder reicht es wenn ich den ganzen Ordner kopiere und in das neue system einfüge?


    Gruß Whitey

  • Skript mit F10 starten und mit F9 beenden

    • WhiteHorse
    • 12. Februar 2024 um 16:17

    Um erstmal dein Hotkey Problem zu lösen, würde ich es so umsetzen.

    AutoIt
    HotKeySet("{F10}", "_start")
    HotKeySet("{F9}", "_stop")
    
    While 1
    	Sleep (200)
    WEnd
    
    Func _start ()
    	MsgBox ("", "Info", "Skript läuft")
    EndFunc
    
    Func _stop ()
    	MsgBox ("", "Info", "Skript wurde gestoppt und wird geschlossen")
    	Exit
    EndFunc
    Alles anzeigen
  • VLC noch aktuell? [2024]

    • WhiteHorse
    • 1. Februar 2024 um 18:47

    MojoeB danke dir

    Ich muss erstmal sehen wie ich das alles umsetze da ich über die vlc Commandozeile noch nie gearbeitet habe, wusste garnicht das vlc sowas hat.

    danke für deine umsetzung :)

  • VLC noch aktuell? [2024]

    • WhiteHorse
    • 28. Januar 2024 um 22:52

    Aktuell arbeite ich nur mit C++

    und wie gesagt kann auch ein anderer Player sein muss nicht VLC sein, habe nur gesehen das es die Voraussetzung erfüllt die ich erwarte / benötige :D

    vom Design wäre AutoIt nicht so schlimm, mal schauen was es sich so machen lässt ^^

    Gruß Whitey

  • VLC noch aktuell? [2024]

    • WhiteHorse
    • 28. Januar 2024 um 21:33
    Zitat von SOLVE-SMART

    Hi WhiteHorse ,

    muss es wirklich der VLC Player sein? Was möchtest du ganz genau tun und erreichen?

    Wenn es nur darum gehen sollte, ein Video zu einer bestimmten Zeit abzuspielen, dann kannst du es bspw. auch per Browser machen.
    💡 Möglicher Ablauf mit AutoIt:

    • Trigger deiner Wahl (bestimmte Zeit, HotKey ...)
    • Browser mit Video-Datei als Parameter starten (ShellExecute/Run ... @ComSpec)
    • kurz auf Browser warten (WinWait etc.)
    • F11 für den Vollbild-Modus

    Wenn du Steuerelemente haben willst bzw. brauchst, welche du ebenfalls mit AutoIt steuern möchtest, dann wird es etwas komplizierter, allerdings nicht viel.
    Dann rate ich, bei diesem skizzierten Szenario, dann doch zusätzlich Javascript mit einzusetzen (oder einfach nur ein paar HTML5 TAGs), fertig.

    Also je nachdem was dein Ziel ist, kannst du mit mehreren Varianten dahin gelangen. Wenn es unbedingt VLC Player sein muss, dann wäre interessant warum 😅 ?

    Viele Grüße
    Sven

    Alles anzeigen

    Hey, SOLVE-SMART

    Eigentlich möchte ich eine Videothek für mich basteln, ich mach gerne Videos, Let's Plays und möchte mir da gerne was aufbauen. Wichtig ist auch, wenn ein Video beendet wurde und es war noch nicht zu Ende, dass es sich auch die Videoposition speichert und beim nächsten mal dort weiter abspielt, wo das Video geschlossen wurde. Was auch ein weiterer Punkt ist, wenn das eine Video zu Ende ist, dass das nächste gestartet wird (wie eine Playlist) :)
    mit VLC wusste ich, dass die Position sich gemerkt wird und wegen einer Playlist hätte ich mal schauen müssen.

    Aber wenn du mir da was empfehlen kannst, dann bin ich gerne offen für Vorschläge :)

    Gruß Whitey

  • VLC noch aktuell? [2024]

    • WhiteHorse
    • 28. Januar 2024 um 18:53
    Zitat von Kanashius

    Keine Ahnung, ob die UDF noch funktioniert, ich kenn sie nicht. VLC ist was interfaces angeht aber eig. recht konsistent und aendert nicht so viel, wenns also nicht grad Fenster emulation ist, funktioniert es vmtl. noch.

    Bei deinem Script solltest du direkt ne Fehlermeldung bekommen, weil $item nicht existiert. Ausserdem solltest du $vlc auch mal was zuweisen, wenn du es spaeter verwenden willst (z.B. den Rueckgabewert von _GUICtrlVLC_Create???).

    Vielleicht solltest du dir nochmal die Basics vom Programmieren anschauen, also wie Variablen funktionieren,...


    Ich habe vieles schon auf anderen Seiten probiert und es kommt bei einigen Fehlermeldungen.

    Bei einigen kam dann bloß eine weiße Seite mit einem X in der Linken ecke, aber abgespielt wurde nichts, deswegen frage ich ob noch jemand damit arbeitet oder ob es einfach zu alt ist und einfach nicht mehr benutzt wird, ansonsten suche ich mir was anderes.

    Ich weiß $item hat kein genaues Ziel, ich habe es einfach aus der VLC.au3 herauskopiert. Es ist jetzt einfach nur ein billiges Beispiel gewesen, ich wollte einfach nur ein kleinen anfang haben wie überhaupt der Anfang mit dem VLC.au3 gemacht wird.

  • VLC noch aktuell? [2024]

    • WhiteHorse
    • 28. Januar 2024 um 11:22

    Hallo, ich möchte gerne ein Video mit dem VLC Player über Autoit abspielen.

    Meine Frage ist, wie spreche ich das an?

    VLC GUI Vorlage erstellen

    VLC Video mit Pfad angeben

    VLC Video Play

    Einige berichte die ich gefunden habe über Google sind so alt, dass sie überhaupt nicht mehr funktionieren. Vielleicht hat jemand schonmal damit was gebastelt und kann mir weiterhelfen und kann mir sagen wie ich das angehen muss. Ich habe auch ein kleines Beispiel, vielleicht kann mir einer anhand des Beispiels geholfen werden.


    So habe ich erstmal angefangen.

    Code
    #include <VLC.au3>
    
    Global $vlc
    
    _GUICtrlVLC_Create(0, 0, @DesktopWidth, @DesktopHeight)
    _GUICtrlVLC_Add($vlc, "Long Version gut.mp4")
    _GUICtrlVLC_Play($vlc, $item)
  • msvcp140.dll

    • WhiteHorse
    • 12. Dezember 2023 um 22:55
    Zitat von Schnuffel

    am Besten beide installieren für 32- und 64- bit (Paket 2015 - 2022)

    https://aka.ms/vs/17/release/vc_redist.x86.exe

    https://aka.ms/vs/17/release/vc_redist.x64.exe

    Jetzt klappt es, Top danke dir :):thumbup:


    Ich verlinke hier noch die zweite Datei, die mir fehlte, da dieses sehr häufig vorkommt das beide fehlen.
    Damit die anderen, wenn mal wieder so ein Fall ist auch Bescheid wissen.

    vcruntime140.dll ist meist auch eine Datei die bei einigen fehlt, ich habe sie hier von dieser https://de.dll-files.com/vcruntime140.dll.html Seite heruntergeladen, zu beachten ist das es hier auch 32 und 64 bit gibt.

    Diese Datei wird einfach in bei dem Ordner system32 abgelegt.
    Ihr braucht nur Windows taste und R drücken und dort system32 eingeben und in diesen Ordner muss die Datei abgelegt werden Fertig :)

    viel spass.

    Gruß Whitey

  • msvcp140.dll

    • WhiteHorse
    • 11. Dezember 2023 um 12:36
    Zitat von Moombas

    Es kann sein das deine kopierte Datei eine Datei ist, die zum falschen Bit-System (32/64) gehört.
    Das solltest du nochmal prüfen. Auch haben diese dann unterschiedliche Speicherorte.

    • C:\Windows\SysWOW64\
    • C:\Windows\System32\

    Aber in der Regel ist eine fehlende dll nur ein Symptom von anderen Problem(en). Daher halte ich nicht viel davon plump die dll Dateien zu kopieren.

    Hast du das richtige Visual C++ runter geladen und installiert?

    Beide sind 64 bit das habe ich schon beachtet ;)

    Ich geh mal davon aus das ich die richtige Visual installiert habe die seite wurde mir angeboten du kannst mir aber nochmal eine schicken und ich installiere diese auch vielleicht klappt es dann :)

  • msvcp140.dll

    • WhiteHorse
    • 11. Dezember 2023 um 09:15

    Hallo, ich habe ein mini pc bekommen und wollte den für die Autofahrt benutzen habe Win 10 drauf gespielt und und und


    Problem ist ich habe autoit darauf installiert

    Da kam immer die meldung das 2 dll Dateien fehlten wenn ich autoit öffnen wollte, eine davon habe ich schon behoben nur leider komme ich bei der meldung nicht weiter msvcp140.dll fehlt.

    Ich habe die von meinem Hauptcomputer kopiert und in das system32 auf dem mini pc abgelegt, nun bekomme ich eine neue Meldung (0x000007b).


    Microsoft visual habe ich auch schon installiert leider kommt immer noch die meldung

    SciTE ist auch installiert

    Vielleicht hatte jemand von Euch auch schonmal den Fall und hat es irgendwie hin bekommen.


    Gruß Whitey

  • Windows 10 Updates

    • WhiteHorse
    • 24. November 2023 um 16:53
    Zitat von GML

    Empfehlen kann ich WuMgr: WuMgr auf Github/download. Damit lassen sich nicht nur die Updates blockieren (dauerhaft, zumindest unter Win10 getestet), sondern auch trotzdem selektiv einzelne Updates durchführen.

    MfG

    :* Ich danke dir, Ich war eigentlich immer für Win 7, aber da Steam bald nicht mehr unter Win 7 läuft, bin ich jetzt ca. 1 Jahr bei Win 10 und die Updates nerven mich massiv, da sie mir mehr Probleme bereiten als nutzen.

    Ich besitze ein Bomben Antivirenprogramm und das reicht mir zu. ^^

  • Suche für Liste

    • WhiteHorse
    • 24. November 2023 um 16:46
    Zitat von Kanashius
    AutoIt
    Func _msgbox($iIndex)
        MsgBox(64, "Info", $arActions[$iIndex][0]&" >> At list index "&$iIndex&" was pressed.")
    EndFunc
    
    Func _testmoin()
        MsgBox(64, "Info", "Test Moin")
    EndFunc
    
    Func _justdo()
        MsgBox(64, "Info", "Just Do")
    EndFunc
    Alles anzeigen

    hey, ich hab noch ein kleines Problem gefunden in dem Code, das ist mir jetzt leider erst aufgefallen

    und zwar, wenn ich den Namen suche zb. Test Moin und ich den in der liste aufrufe, dann führt er die Funktion Func _msgbox($iIndex) aus, er soll aber dennoch die Func _testmoin () abrufen sie gehört ja schließlich zu ihr und nicht zu Func _msgbox($iIndex) wenn ich nicht in die Suche schreibe und gleich auf den Namen klicke, dann führt er auch die richtige Funktion auf.

    Wäre dir sehr dankbar, wenn du mir das noch ggf. fixen kannst :)

    Gruß Whitey

  • Suche für Liste

    • WhiteHorse
    • 23. November 2023 um 18:23
    Zitat von Kanashius

    Hi,

    so würde ich das umsetzen.

    Ein Array mit allen Actions (2D mit Name zum anklicken, Function zum Aufrufen und ein Bool, ob der Index übergeben werden soll.

    Wenn man sich für WM_COMMAND Messages registriert, wird die Methode unten aufgerufen, wenn mit einem Control interagiert wird; Hier das anklicken in der Listbox und das Tippen im Inputfeld.

    Die Funktionen _ActionListSelect($iIndex=Default) und _FilterList($sSearch="") werden dann aufgerufen. Sie sind aber gleichzeitig auch so gestaltet, dass sie auch manuell aufgerufen werden können.

    Das mach ich z.B. um am Anfang die Liste zu füllen.

    AutoIt
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <ListBoxConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    
    Global $iWidth = 800, $iHeight = 600, $iSpace = 10, $iCtrlHeight = 25
    Global $arActions = [["Msgbox 1", "_msgbox", True], ["Msgbox 2", "_msgbox", True], ["Msgbox 3", "_msgbox", True], _
                         ["Msgbox 4", "_msgbox", True], ["Msgbox 5", "_msgbox", True], ["Msgbox 6", "_msgbox", True], _
                         ["Msgbox 7", "_msgbox", True], ["Msgbox 8", "_msgbox", True], ["Test Moin", "_testmoin", False], _
                         ["Just do", "_justdo"]]
    
    $hGui = GUICreate("Search test", $iWidth, $iHeight)
    GUISetFont(10, 800, 0, "MS Sans Serif")
    
    
    GUICtrlCreateLabel("Suche: ", $iSpace, $iSpace+5, 45, $iCtrlHeight-5)
    $iInputSearch = GUICtrlCreateInput("", 45+$iSpace*2, $iSpace, ($iWidth-45)-3*$iSpace, $iCtrlHeight)
    $hInputSearch = GUICtrlGetHandle($iInputSearch)
    GUICtrlSetCursor (-1, 5)
    
    $iListActions = GUICtrlCreateList("", $iSpace, $iSpace*2+$iCtrlHeight, $iWidth-2*$iSpace, $iHeight-3*$iSpace-$iCtrlHeight, BitOR($WS_BORDER, $WS_VSCROLL))
    $hListActions = GUICtrlGetHandle($iListActions)
    _FilterList()
    GUICtrlSetCursor (-1, 0)
    
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    GUISetState(@SW_SHOW)
    
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
        EndSwitch
    WEnd
    
    Func _msgbox($iIndex)
        MsgBox(64, "Info", $arActions[$iIndex][0]&" >> At list index "&$iIndex&" was pressed.")
    EndFunc
    
    Func _testmoin()
        MsgBox(64, "Info", "Test Moin")
    EndFunc
    
    Func _justdo()
        MsgBox(64, "Info", "Just Do")
    EndFunc
    
    ; Error: 1 -> Illegal index argument
    ; Error: 2 -> No item selected
    ; Error: 3 -> Index not specified in action array
    Func _ActionListSelect($iIndex=Default)
        If $iIndex<>Default Then
            ; Check if the index is a number and in range
            If Not IsInt($iIndex) Or $iIndex<0 Or $iIndex>=_GUICtrlListBox_GetCount($iListActions) Then Return SetError(1, 0, -1)
            _GUICtrlListBox_SetCurSel($iListActions, $iIndex)
        EndIf
        $iIndex = _GUICtrlListBox_GetCurSel($iListActions)
        If $iIndex<0 Then Return SetError(2, 0, -1)
        _GUICtrlListBox_SetCurSel($iListActions, -1)
        If Not $iIndex<UBound($arActions) Then SetError(3, 0, -1)
        If $arActions[$iIndex][1]<>"" Then
            If $arActions[$iIndex][2]<>"" Or $arActions[$iIndex][2] Then
                Call($arActions[$iIndex][1], $iIndex)
            Else
                Call($arActions[$iIndex][1])
            EndIf
        EndIf
    EndFunc
    
    Func _FilterList($sSearch="")
        _GUICtrlListBox_BeginUpdate($iListActions)
        _GUICtrlListBox_ResetContent($iListActions)
        If $sSearch="" Then
            For $i=0 To UBound($arActions)-1 Step 1
                _GUICtrlListBox_AddString($iListActions, $arActions[$i][0])
            Next
        Else
            For $i=0 To UBound($arActions)-1 Step 1
                If StringInStr($arActions[$i][0], $sSearch, 0) Then _GUICtrlListBox_AddString($iListActions, $arActions[$i][0])
            Next
        EndIf
        _GUICtrlListBox_EndUpdate($iListActions)
    EndFunc
    
    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
        Local $iIDFrom = _WinAPI_LoWord($iwParam), $iCode = _WinAPI_HiWord($iwParam)
        Switch $ilParam
            Case $hInputSearch
                Switch $iCode
                    Case $EN_CHANGE
                        _FilterList(GUICtrlRead($iInputSearch))
                EndSwitch
            Case $hListActions
                If $iCode=$LBS_NOTIFY Then
                    _ActionListSelect()
                    If @error Then
                        Switch @error ; 1 cannot happen; no index provided
                            Case 2
                                MsgBox(16, "Error", "No Action was selected!")
                            Case 3
                                MsgBox(16, "Error", "There is no Action for the index of the selected item!")
                        EndSwitch
                    EndIf
                EndIf
        EndSwitch
        Return $GUI_RUNDEFMSG
    EndFunc
    Alles anzeigen

    Ich hoffe, das hilft dir weiter.

    Mfg, Kanashius

    Alles anzeigen

    Top ich danke dir :klatschen: :thumbup:

  • Suche für Liste

    • WhiteHorse
    • 22. November 2023 um 20:33

    Hallo, ich möchte gerne eine Suche erstellen, habe dies aber auch noch nie gemacht und habe nichts Passendes gefunden, was mir weiterhelfen kann. Da die Namen in einer Liste stehen, die mit einem Inputfeld gesucht werden sollen, sobald man die ersten Buchstaben eingibt.

    Beispiel ich gebe den Namen Msgbox 5 in das Inputfeld ein, dann sollen die anderen Namen aus der Liste verschwinden und nur noch Msgbox 5 ist in der Liste zu finden.

    Ich habe mal eine Test GUI erstellt

    und habe auch in den Code beschrieben wie, was passieren soll und gemacht werden soll. Nur leider weiß ich gar nicht, wie man bei einer Suchfunktion überhaupt vorgeht.

    Auf jeden Fall soll jeder Name, der in der Liste steht, eine eigene Funktion aufrufen.

    Vielleicht habt ihr Ideen oder könnt mir auf die Sprünge helfen. Ich lerne gerne dazu ^^


    C
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1_1 = GUICreate("Suche Test", 616, 438, 192, 124)
    $Suche = GUICtrlCreateInput("", 240, 32, 121, 21)
    GUICtrlSetCursor (-1, 5)
    $Label1 = GUICtrlCreateLabel("Suche", 272, 8, 47, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $SuchergebnisseBox = GUICtrlCreateList("", 56, 80, 121, 67)
    GUICtrlSetData(-1, "Msgbox 1|Msgbox 2|Msgbox 3|Msgbox 4|Msgbox 5|Msgbox 6|Msgbox 7|Msgbox 8|Test Moin") ;Gibt es hier eine Möglichkeit, das besser anzuordnen. Da es vorkommen kann das etliche Namen noch dazu kommen und die liste im Code zu lang wird?
    GUICtrlSetCursor (-1, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
                
            Case $SuchergebnisseBox
    
        EndSwitch
    WEnd
    
    
    ;Funktion ist nur eine Vorbereitung von mir, weiß aber nicht, ob das überhaupt so funktioniert?
    Func 
        ;hier ggf. mit einem If Befehl arbeiten???
        ;ich möchte jede MsgBox einzeln ansteuern im Code, ist einfacher für mich.
    MsgBox ("", "INFO", "Ich komme von Msgbox 1") ;Diese Nachricht soll erst erscheinen, wenn ich in der GUI den Namen in das Inputfeld eingegeben habe und ich auf den Namen in der Liste geklickt habe!
    
    MsgBox ("", "INFO", "Ich komme von Msgbox 2") ;Diese Nachricht soll erst erscheinen, wenn ich in der GUI den Namen in das Inputfeld eingegeben habe und ich auf den Namen in der Liste geklickt habe!
    
    MsgBox ("", "INFO", "Ich komme von Msgbox 3") ;Diese Nachricht soll erst erscheinen, wenn ich in der GUI den Namen in das Inputfeld eingegeben habe und ich auf den Namen in der Liste geklickt habe!
    
    MsgBox ("", "INFO", "Ich komme von Msgbox 4") ;Diese Nachricht soll erst erscheinen, wenn ich in der GUI den Namen in das Inputfeld eingegeben habe und ich auf den Namen in der Liste geklickt habe!
    
    MsgBox ("", "INFO", "Ich komme von Msgbox 5") ;Diese Nachricht soll erst erscheinen, wenn ich in der GUI den Namen in das Inputfeld eingegeben habe und ich auf den Namen in der Liste geklickt habe!
    
    MsgBox ("", "INFO", "Ich komme von Msgbox 6") ;Diese Nachricht soll erst erscheinen, wenn ich in der GUI den Namen in das Inputfeld eingegeben habe und ich auf den Namen in der Liste geklickt habe!
    
    MsgBox ("", "INFO", "Ich komme von Msgbox 7") ;Diese Nachricht soll erst erscheinen, wenn ich in der GUI den Namen in das Inputfeld eingegeben habe und ich auf den Namen in der Liste geklickt habe!
    
    MsgBox ("", "INFO", "Ich komme von Msgbox 8") ;Diese Nachricht soll erst erscheinen, wenn ich in der GUI den Namen in das Inputfeld eingegeben habe und ich auf den Namen in der Liste geklickt habe!
    
    MsgBox ("", "INFO", "Ich komme von Test Moin") ;Diese Nachricht soll erst erscheinen, wenn ich in der GUI den Namen in das Inputfeld eingegeben habe und ich auf den Namen in der Liste geklickt habe!
    
    EndFunc
    Alles anzeigen
  • Windows 10 Updates

    • WhiteHorse
    • 22. November 2023 um 20:14
    Zitat von BugFix

    Vergiß es. Mit dem nächsten Sicherheits-Update, dass du ja wohl doch mal zum Selbstschutz drauf ziehst, wird auch diese "Lücke" wieder geschlossen.

    ;(

    kann man nicht die Pausezeit irgendwie hochstellen auf 25000 Tage von mir aus ^^ das reicht dicke zu

  • Windows 10 Updates

    • WhiteHorse
    • 22. November 2023 um 13:34
    Zitat von oh-ha

    Hier sind noch so einige Möglichkeiten aufgeführt, diese sind Versionsabhängig.

    Automatische Updates deaktivieren oder auf manuell setzen Windows 10

    ich habe es jetzt mit dem Programm O&O ShutUp10 geschafft nun sollte endlich ruhe sein ^^

    danke für dein Link ich hätte sonst nie das Programm gefunden :)

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™