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

Beiträge von Velted

  • Skript mit F10 starten und mit F9 beenden

    • Velted
    • 13. Februar 2024 um 09:57

    Moin,

    Zitat von DivineFaith

    ... Diese Website hat mehrere Dashboards, welche ich mit einem ganz einfachem Autoit Skript, mit hilfe von einfachen MouseMove und MouseClick befehlen durchschalte. Dies funktioniert auch ohne Probleme.

    Wie Moombas schon sagte, wenn es ohne Probleme funktioniert, muss es im Original deutlich anders aussehen. Beruhen die Fehler im eingestellten Beispiel auf mangelnder Erfahrung mit AutoIt oder sind die Auslassungen gewollt?

    (#Persistent erinnert mich stark an AutoHotkey).

  • Problem mit dem Edit-Control

    • Velted
    • 5. Februar 2024 um 18:26

    Schnuffel,

    ich beschäftige mich auch noch mit AHK. Ich kann Dir versichern, dass es nicht am Control liegt.

  • Problem mit dem Edit-Control

    • Velted
    • 5. Februar 2024 um 18:24

    Auf der Suche nach 'künstlichen' Verzögerungen bin ich vorhin auf Folgendes gestoßen:

    Zitat

    Opt WinWaitDelay

    Alters how long a script should briefly pause after a successful window-related operation.
    Time in milliseconds to pause (default=250).

    Das ist doch wohl auch nicht mehr ernst gemeint. Oder arbeiten mit AutoIt nur Menschen, deren Rechner ständig am Anschlag laufen?

  • Problem mit dem Edit-Control

    • Velted
    • 5. Februar 2024 um 18:08

    Kanashius,

    auch mit dem AdlibRegister()läuft das hier nur dann stabil, wenn der time Parameter mit dem Defaultwert (250 ms) arbeitet oder auf mindestens 200 ms gesetzt wird. Im Jahre 2024 ist das für einen normalen Computer eine kleine Ewigkeit. Ich kann mir das nicht erklären und gehe mal von einem Bug aus.

  • Problem mit dem Edit-Control

    • Velted
    • 5. Februar 2024 um 16:54

    Moin,

    hier (Win 10 - AutoIt 3.3.16.1) zeigt sich exakt das beschriebene Verhalten:

    Beim ersten Klick auf den Button bleiben die Ränder des Edits als weiße Linien im Label sichtbar. Wenn ich das Edit vorher disable, braucht es ein Sleep() von mindestens 140 ms, damit die Ränder nicht mehr durchschlagen. Für mich läuft da etwas mit stark angezogener Handbremse.

    AutoIt
    #include-once
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    
    Opt("MustDeclareVars", 1)
    
    Global $idBtn_Anzeigen, $idEdiText, $hGUI_Hauptfenster, $GUI_Msg, $idLbl_Wartehinweis
    
    ; Das Fenster des GUI erstellen.
    $hGUI_Hauptfenster = GUICreate("TEST TEST TEST", 830, 185, -1, -1)
    GUISetBkColor(0x3680FF)
    
    
    ; Das Textfenster (Edit-Control) erstellen.
    $idEdiText = GUICtrlCreateEdit("", 30, 30, 768, 40, BitOR($ES_CENTER, $ES_MULTILINE))
    
    ; Das Label mit dem Wartehinweis erstellen.
    $idLbl_Wartehinweis = GUICtrlCreateLabel("", 214, 23, 372, 89)
    GUICtrlSetBkColor(-1, 0x707070)
    GUICtrlSetState(-1, $GUI_HIDE)
    
    $idBtn_Anzeigen = GUICtrlCreateButton("Label anzeigen.", 250, 128, 310, 40, BitOR($SS_CENTER, $BS_PUSHLIKE))
    GUICtrlSetFont(-1, 12, 400, 0, "Tahoma")
    GUICtrlSetBkColor(-1, 0x00FF00)
    
    
    GUISetState(@SW_SHOW, $hGUI_Hauptfenster)
    
    While 1
    	$GUI_Msg = GUIGetMsg()
    	Switch $GUI_Msg
    		Case $GUI_EVENT_CLOSE     ; Symbol <Fenster schließen>
    			GUIDelete($hGUI_Hauptfenster)
    			ExitLoop
    
    		Case $idBtn_Anzeigen     ; Button <Label anzeigen.>
    			; Das Label für den Wartehinweis anzeigen.
    			GUICtrlSetState($idEdiText, $GUI_DISABLE)
    			Sleep(140)
    			GUICtrlSetState($idLbl_Wartehinweis, $GUI_SHOW)
    			;GUICtrlSetState($idEdiText, $GUI_HIDE)
    
    	EndSwitch
    WEnd
    Exit
    Alles anzeigen
  • Komplette GUI als "Button"

    • Velted
    • 5. Februar 2024 um 11:49
    Zitat von HansJ54

    Ich möchte ein Fenster mit Daten ohne Buttons anzeigen und wenn man irgendwo ins Fenster klickt, sollen die Buttons erscheinen - also vorher versteckt. Und auf Klick auf einen Button sollen diese wieder ausgeblendet werden. Geht das?

    Moin,

    das ließe sich eventuell auch mit einem Contextmenü -> GUICtrlCreateContextMenu mit wenig Aufwand lösen.

  • StringReplace

    • Velted
    • 15. Januar 2024 um 18:16

    Moin,

    ich finde funkey's StringInStr() Lösung sehr gut, weil sie der Funktion von StringReplace() sehr nahe kommt. Ich hatte das verworfen, weil mir nicht eingefallen ist, dass der zweite Parameter von StringReplace() auch eine Positionsangabe sein kann.

    Wenn es aber eine StringSplit() basierte Lösung sein soll, bevorzuge ich meine in Beitrag #5 vorgeschlagene Variante, weil sie ressourcenschonender ist, wenn der String nicht ausschließlich aus dem zu ersetzenden Zeichen besteht.

    AutoIt
    Local $sString = "1234567890123456789012345678901234567890123456789012345678901"
    Local $sSearch = "1" 					; gesuchtes Zeichen
    Local $aRepl[4] = ["1", "a", "j", "t"] 	; Ersetzungszeichen
    
    Local $sInStr = _StringReplaceRandom1($sString, $sSearch, $aRepl)
    Local $sSplit = _StringReplaceRandom2($sString, $sSearch, $aRepl)
    MsgBox(0, "Result", "Original:" & @CRLF & $sString & @CRLF & _
                        "StringInStr:" & @CRLF & $sInStr & @CRLF & _
    					"StringSplit:" & @CRLF & $sSplit)
    
    Func _StringReplaceRandom1($sString, $sSearch, $aRepl)
    	Local $iMax = UBound($aRepl) - 1, $iPos = 0
    	DO
    		$iPos = StringInStr($sString, $sSearch, 0, 1, $iPos + 1)
    		If $iPos Then $sString = StringReplace($sString, $iPos, $aRepl[Random(0, $iMax, 1)], 1)
    	Until $iPos = 0
    	Return $sString
    EndFunc
    
    Func _StringReplaceRandom2($sString, $sSearch, $aRepl)
    	Local $iMax = UBound($aRepl) - 1, $sOut = ""
    	Local $aSplit = StringSplit($sString, $sSearch, 3)
    	For $sSplit In $aSplit
    		$sOut &= $aRepl[Random(0, $iMax, 1)] & $sSplit
    	Next
    	Return StringTrimLeft($sOut, 1)
    EndFunc
    Alles anzeigen

    Guten Rutsch! :party1:

  • StringReplace

    • Velted
    • 15. Januar 2024 um 18:16

    Moin,

    noch eine Möglichkeit: String mit StringSplit(String, "1", 3) aufteilen und mit zufälligen Ersatzzeichen wieder zusammensetzen.

    Guten Rutsch! :party1:

  • StringReplace

    • Velted
    • 15. Januar 2024 um 18:16

    Moin,

    noch eine Möglichkeit: String mit StringSplit(String, "1", 3) aufteilen und mit zufälligen Ersatzzeichen wieder zusammensetzen.

    Guten Rutsch! :party1:

  • Transparente GUI mit Memofunktion

    • Velted
    • 24. Dezember 2023 um 13:23

    Moin,

    noch ein paar Anmerkung zum Weihnachtsfest:

    1. Die Funktion IniRead bietet - wie Du bereits generkt hast - die Möglichkeit, einen Defaultwert vorzugeben. Dieser Wert wird nicht nur dann genutzt, wenn der Schlüssel in der INI-Datei nicht gefunden wird, sondern auch dann, wenn die INI-Datei nicht existiert. An Stelle von -1 solltest Du deshalb den echten Standardwert eintragen.

    2. Es scheint mir bei dem gegebenen Skript recht unwahrscheinlich, dass der Benutzer die Fenstergröße verändern kann. Es sollte deshalb reichen, sich die Fenterposition (X/Y) zu merken.

    3. Wenn Du versuchst, die Werte schon vor dem GUICreate() zu ermitteln, kannst Du sie direkt verwenden und musst das Fenster nicht nachträglich verschieben.

    Frohe Weihnachten und einen gutenRutsch!

  • Transparente GUI mit Memofunktion

    • Velted
    • 23. Dezember 2023 um 14:03

    Moin,

    Deine Funktion _StandardPos versorgt ausschließlich lokale Variable, die außerhalb der Funktion nicht sichtbar sind. Das macht keinen Sinn, wenn Du sie nicht innerhalb der Funktion für ein WinMove benutzt (wie bei _GUIRestorePositions).

    Außerdem wird nach der Funktion unbedingt immer _GUIRestorePositions aufgerufen. Das macht auch keinen Sinn, wenn es die Datei nicht gibt und man nicht die gewünschten Defaultwerte vorgibt.

    Frohes Fest!

  • Weihnachtsgrüße

    • Velted
    • 23. Dezember 2023 um 13:47

    ... dem schließe ich mich an!

    Alles Gute, Velted

  • Erstellte GUI minimiert starten

    • Velted
    • 18. Dezember 2023 um 11:15

    Moin,

    das meinte ich nicht. Hast Du meinen Vorschlag mal ausprobiert?

  • Erstellte GUI minimiert starten

    • Velted
    • 16. Dezember 2023 um 23:06

    Wenn Du einen Parameter in einer Verküpfung definierst, wem wir der wohl übergeben?

  • Erstellte GUI minimiert starten

    • Velted
    • 15. Dezember 2023 um 12:36

    Moin,

    wenn Du den Show-Status beim Start übergibst, kannst Du erst einmal

    AutoIt
    GUISetState(@SW_SHOWDEFAULT, $Fenster)

    probieren. Wenn das nicht hilft, kannst Du versuchen, die Funktion _WinAPI_GetStartupInfo( ) aufzurufen.

    Die Strukturbeschreibung für $tagSTARTUPINFO findest Du in im Include StructureConstants.au3.

  • "?" in Ordner- bzw. Dateinamen

    • Velted
    • 14. Dezember 2023 um 10:59
    Zitat von Musashi

    Kannst Du dein Skript mal posten um nachvollziehen zu können, woher die Fragezeichen kommen ?

    Moin,

    soweit ich es verstehe, werden die Pfade in einem Skript von entsel erstellt. An @Musashi's Vorschlag führt wohl kein Weg vorbei.

  • ArrayFindAll 2DArray

    • Velted
    • 13. Dezember 2023 um 15:38

    Moin,

    weil das konkrete Problem recht einfach mit einem Map-Objekt gelöst werden kann, gibt es noch einen späten Nachschlag:

    AutoIt
    #Include <Array.au3>
    Local $aArray[5][5] = [[0, "Test1", 27, 1, 0], _
    					   [1, "Test1", 27, 4, 2], _
    					   [2, "Test2", 28, 1, 3], _
    					   [3, "Test3", 29, 1, 0], _
    					   [4, "Test4", 29, 4, 1]]
    
    Local $mOfArrays = _SeparateByColumn($aArray, 2)
    
    For $Key In MapKeys($mOfArrays)
    	_ArrayDisplay($mOfArrays[$Key])
    Next
    
    Func _SeparateByColumn(Const $aArr, $iCol)
    	Local $mOut[]
    	Local $iCols = UBound($aArr, 2)
    	For $I = 0 To UBound($aArr) - 1
    		$mOut[$aArr[$I][$iCol]] &= $I & " "
    	Next
    	For $Key In MapKeys($mOut)
    		$aRows = StringSplit(StringStripWS($mOut[$Key], 2), " ", 2)
    		Local $aTmp[UBound($aRows)][$iCols]
    		For $I = 0 To UBound($aRows) - 1
    			For $J = 0 To $iCols - 1
    				$aTmp[$I][$J] = $aArr[$aRows[$I]][$J]
    			Next
    		Next
    		$mOut[$Key] = $aTmp
    	Next
    	Return $mOut
    EndFunc
    Alles anzeigen
  • Den Zeitpunkt des letzten Herunterfahrens auslesen

    • Velted
    • 8. Dezember 2023 um 16:13

    Alina,

    ich würde meinen, dass Microsoft eine recht große Mitverantwortung hat. Ich kenne viele Leute, die nicht wissen, dass so etwas wie 'Schnellstart' überhaupt existiert. Diese Option bei der Istallation ungefragt zu aktivieren, ist schon recht dreist.

    Die Keylogger wird es aber freuen. Einmal ins System integriert wird der Logger immer wieder automatisch mitgeladen, ohne auffällige Veränderungen am System vornehmen zu müssen.

    Frohen 2. Advent für Alle!

    Velted

  • Den Zeitpunkt des letzten Herunterfahrens auslesen

    • Velted
    • 7. Dezember 2023 um 17:11
    Zitat von Alina

    Ich habe folgendes festgestellt.

    Fahre ich den PC ohne die "Großschreibtaste" gedrück zu halten herunten und starte dann neu, stimmt die Zahl nicht, es kommt das vorletzte mal Herunterfahren aus Ausgabe.
    Halte ich beim Herunterfahren die "Großschreibtaste", so simmt es auf die Minute.

    Da sagt mir doch, das es zwischen diesen Beiden Arten des Herunterfahrens ein Unterschied gibt, der meiner Meinung nach nicht zu übersehen sein sollte.
    Ich fahre immer mit der gehaltenden "Großschreibtaste" herunter. Der PC braucht danach nur nein paar Sekunden mehr, was aber nicht mal ein Schluck Kaffee wert ist. ;)

    Och ist das nur bei mir so, weil ich etwas vergessen habe ein/aus zu schalten? *kopfkratzen*

    Alles anzeigen

    Ich bescheibe das mal für ein deutsches Win 10:

    Es geht um die berühmt/berüchtigte Option 'Schnellstart aktivieren'. Die wird von Windows bei einer neuen Installation eingeschaltet, ohne dass der Benutzer gefragt wird. Es soll den Benutzer mit schnellen Startzeiten beeindrucken. Man erkauft sich das aber damit, dass das System nur auf Platte gespeichert im aktuellen Zustand bereitgehalten wird, ohne es richtig zu beenden (syspend to disk bzw.Hibernation).

    Zur Einstellung führt folgender Weg:

    1. System-App 'Einstellungen' öffnen.

    2. 'Netzbetrieb und Energiesparmodus' öffnen.

    3. Rechts auf 'Zusätzliche Energieeinstellungen' klicken.

    4. Links 'Auswählen, was beim Drücken von Netzschaltern geschehen soll' klicken.

    5. Jetzt siehst Du unter den Buttons die Checkbox 'Schnellstart aktivieren (empfohlen)'.

    6. Wenn die angeschaltet aber ausgegraut ist, musst Du oben auf 'Einige Einstellungen sind momentan nicht verfügbar' klicken.

    7. Jetzt solltest Du den Schnellstart abschalten können.

    Wenn man sich den etwas unübersichtlichen Weg in Ruhe betrachtet, scheint Microsoft das Abschalten nicht zu mögen.

    Mach damit, was Du willst!

    Velted

  • AOD SQLlite?

    • Velted
    • 5. Dezember 2023 um 09:39

    Moin,

    kannst Du einen Link auf die Anwendungsdoku einstellen oder die zu SQLite gehörenden Teile zitieren?

    Edit:

    Zitat von MojoeB

    Ich habe heute den kompletten connectingstring direkt ins letzte Feld geschrieben, dort auch den Driver definiert.

    Würdest Du mal zeigen, was Du eingetragen hast?

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™