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. SOLVE-SMART

Beiträge von SOLVE-SMART

  • Automatischer Login via Edge nicht möglich

    • SOLVE-SMART
    • 11. November 2024 um 16:47

    Der Output sieht okay aus. Das der eine Error kommt ist klar, da der XPath falsch ist.

    Im folgenden Script mal eine Variante die funktionieren sollte (XPath in Zeile 49), wenn man die entsprechenden Abhängigkeiten des WebDrivers (bzw. des Projektes au3WebDriver) eingebunden/included hat.

    AutoIt
    #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 4 -w 5 -w 6 -w 7
    #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
    
    #include-once
    #include "wd_helper.au3"
    #include "wd_core.au3"
    
    Global $_WD_DRIVER
    Global $sDesiredCapabilities
    
    $_WD_DEBUG = $_WD_DEBUG_Full
    
    Global $url      = "https://autoit.de/wcf/login"
    Global $user     = "benutzernamen"
    Global $password = "Passwort1234"
    
    SetupEdge()
    
    _WD_Startup()
    _WD_ConsoleVisible(True)
    
    Global $sSession = _WD_CreateSession($sDesiredCapabilities)
    
    _WD_Navigate($sSession, $url)
    _WD_LoadWait($sSession, 1500)
    
    Sleep(500)
    
    Global $sSelector = "//input[@id='username']"
    _WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, $sSelector)
    ConsoleWrite("+ @error = " & @error & @CRLF)
    Global $sElement_user = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, $sSelector)
    
    If @error = $_WD_ERROR_Success Then
    	_WD_ElementAction($sSession, $sElement_user, 'value', $user)
    	Sleep(500)
    EndIf
    
    $sSelector = "//input[@id='password']"
    _WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, $sSelector)
    ConsoleWrite("+ @error = " & @error & @CRLF)
    $sElement_user = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, $sSelector)
    
    If @error = $_WD_ERROR_Success Then
    	_WD_ElementAction($sSession, $sElement_user, 'value', $password)
    	Sleep(500)
    EndIf
    
    Global $sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@type='submit']")
    
    If @error = $_WD_ERROR_Success Then
    	_WD_ElementAction($sSession, $sElement, 'click')
    EndIf
    
    MsgBox(48, 'Warten', 'Mit okay beendet sich die Session und der WebDriver.')
    
    _WD_DeleteSession($sSession)
    _WD_Shutdown()
    
    Exit
    
    Func SetupEdge()
    	Local $iPort = _WD_GetFreePort(5555, 5600)
    	If @error Then Return SetError(@error, @extended, 0)
    
    	_WD_Option('Port', $iPort)
    	_WD_Option('DriverParams', '--port=' & $iPort & ' --verbose --log-path="' & @ScriptDir & '\msedge.log"')
    	_WD_Option('Driver', 'msedgedriver.exe')
    
    	$sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"unhandledPromptBehavior": "ignore", ' & _
    			'"ms:edgeOptions": {"excludeSwitches": ["enable-automation"], ' & _
    			'"useAutomationExtension": false, "args": ["start-maximized"]}}}}'
    
    EndFunc
    Alles anzeigen
    Zitat von Chris_

    Ergebnis war das gleiche, der Browser schließt sich wieder.

    Alles klar, Danke Chris_ . Und was genau ist nun dein Problem? Willst du das sich der Browser nicht wieder schließt? Denn sobald deine Aktionen durchgeführt sind, also der Beispiel-Login, ist der Ablauf für den WebDriver gelaufen/fertig und dann folgt "Delete existing session" und "Kill the web driver console app".

    ❓ Ist deine Erwartung das der Browser dann offen bleibt oder wie?
    ⚠ Falls ja, dann nein so ist es nicht gedacht!

    Aber: Du kannst bspw. "_WD_DeleteSession($sSession)" weglassen, richtig. Unsauber aber geht. Du kannst auch bevor das Teardown folgen sollte, eine MsgBox anzeigen lassen (siehe Beispiel-Code diesen Posts hier in Zeile 55) und erst wenn diese bestätigt wird, beendet sich deine WebDriver Automation.

    Konsequenzen hat das Weglassen von _WD_DeleteSession nicht wirklich. Die Chrome- oder Edge-Daten, welche du für die Session benötigst, werden i.d.R. in TEMP geschrieben und dort kannst du sie entweder selbst wieder löschen oder sie werden bei "korrekten" Abbau der Session (Variante mit der MsgBox) automatisch gelöscht.

    -----------------------------------

    Ich hoffe dies hilft dir 🤝 .

    💡 Du kannst dich allerdings auch in eine bestehende Browser-Sitzung, des normalen Browsers (nicht des Browser-Drivers), in der du deine Tabs hast usw., verbinden.
    Siehe dazu FAQ im WebDriver Wiki .

    Viele Grüße
    Sven

  • Automatischer Login via Edge nicht möglich

    • SOLVE-SMART
    • 11. November 2024 um 10:48

    Hi Chris_ , willkommen im Forum hier 👋 ,

    stelle doch bitte mal debug full ein $_WD_DEBUG = $_WD_DEBUG_Full in deinem Skript und führe es aus. Dann lass uns den Output der Konsole zukommen und wir können dir ggf. besser/genauer sagen wo dein Problem liegen könnte.

    Es ist schon so, dass die Reihenfolge der beiden Funktionen für den Teardown (für das saubere Abräumen der Ressourcen) so ist:

    AutoIt
    _WD_DeleteSession($sSession) ; Delete existing session.
    _WD_Shutdown()               ; Kill the web driver console app.

    So ist es u. a. auch in der wd_demo.au3 des Projektes zu sehen.
    Also stelle bitte mal so um, dass du dein Fehlverhalten mit MSEdge wieder bekommst und schicke uns den Output.

    Ich habe dein Skript mal ein klein wenig umgestellt - nix großes - doch es trägt ein wenig zur Übersicht bei:

    AutoIt
    #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 4 -w 5 -w 6 -w 7
    #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
    
    #include-once
    #include "C:\Store\Repositories\GitHub\autoit-webdriver-boilerplate\lib\au3WebDriver\wd_helper.au3"
    #include "C:\Store\Repositories\GitHub\autoit-webdriver-boilerplate\lib\au3WebDriver\wd_core.au3"
    
    Global $_WD_DRIVER
    Global $sDesiredCapabilities
    
    $_WD_DEBUG = $_WD_DEBUG_Full
    
    Global $url      = "https://autoit.de/wcf/login/?url=https%3A%2F%2Fautoit.de%2F"
    Global $user     = "benutzernamen"
    Global $password = "Passwort1234"
    
    SetupEdge()
    
    _WD_Startup()
    _WD_ConsoleVisible(True)
    
    Global $sSession = _WD_CreateSession($sDesiredCapabilities)
    
    _WD_Navigate($sSession, $url)
    _WD_LoadWait($sSession, 1500)
    
    Sleep(500)
    
    _WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@id='username']")
    ConsoleWrite("+ @error = " & @error & @CRLF)
    Global $sElement_user = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@id='username']")
    
    If @error = $_WD_ERROR_Success Then
    	_WD_ElementAction($sSession, $sElement_user, 'value', $user)
    	Sleep(500)
    EndIf
    
    _WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@id='password']")
    ConsoleWrite("+ @error = " & @error & @CRLF)
    $sElement_user = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@id='password']")
    
    If @error = $_WD_ERROR_Success Then
    	_WD_ElementAction($sSession, $sElement_user, 'value', $password)
    	Sleep(500)
    EndIf
    
    Global $sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//*[@id='btn_login']")
    
    If @error = $_WD_ERROR_Success Then
    	_WD_ElementAction($sSession, $sElement, 'click')
    EndIf
    
    _WD_DeleteSession($sSession)
    _WD_Shutdown()
    
    Exit
    
    Func SetupEdge()
    	Local $iPort = _WD_GetFreePort(5555, 5600)
    	If @error Then Return SetError(@error, @extended, 0)
    
    	_WD_Option('Port', $iPort)
    	_WD_Option('DriverParams', '--port=' & $iPort & ' --verbose --log-path="' & @ScriptDir & '\msedge.log"')
    	_WD_Option('Driver', 'msedgedriver.exe')
    
    	$sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"unhandledPromptBehavior": "ignore", ' & _
    			'"ms:edgeOptions": {"excludeSwitches": ["enable-automation"], ' & _
    			'"useAutomationExtension": false, "args": ["start-maximized"]}}}}'
    EndFunc
    Alles anzeigen

    Persönlich würde ich es anders strukturieren, doch dies spielt erstmal keine Rolle. Bin gespannt was dein Konsolen-Output sagen wird.

    Viele Grüße
    Sven

  • MySQL select Abfrage multiple

    • SOLVE-SMART
    • 4. November 2024 um 20:17

    Hi wuff100 👋 ,

    einfacher wäre es, wenn du uns dein Tabellen-Schema (CREATE TABLE Statement) mal zeigst, dann wissen wir wie deine Tabelle aufgebaut ist und können besser antworten. Ich habe dich so verstanden, dass deine Tabelle mindestens die folgenden Spalten hat: ID, Nummer, Ordner.

    Somit sieht dein SELECT Statement um nur die ID abzufragen so aus:

    SQL
    SELECT	ID
    FROM   	webtable
    WHERE	Nummer = '123456'

    Wenn du nun bspw. die ID und den Ordner haben möchtest sieht das Statement so aus:

    SQL
    SELECT	ID, Ordner
    FROM   	webtable
    WHERE	Nummer = '123456'

    Und wenn du nur die ID, in Abhängigkeit der Nummer und des Ordners haben möchtest, dann ist das Statement folgendes:

    SQL
    SELECT	ID
    FROM   	webtable
    WHERE	Nummer = '123456'
    	AND	Ordner = 'MeinOrdnerName'

    Ich hoffe dies hilft. Das nächste Mal bitte mit dem Tabellen-Schema, dies schließt Missverständnisse (fast) aus 🤝 .

    Viele Grüße
    Sven

  • Persönliche Weiterbildung bzgl. IT, Programmierung und Co.

    • SOLVE-SMART
    • 24. Oktober 2024 um 09:30

    Mars Danke für dein Statement dazu. Je nach IT-Teilbereich können Papers schon recht hilfreich sein, daher go ahead und viel Erfolg damit.

    BugFix Danke auch die für dein Statement. Bei solchen Plattformen (bei den drei oben genannten) gibt es eine breite Community von erfahrenen Entwicklern welche die Artikel auch bewerten/beurteilen und weiter verbreiten. Sodass die von dir beschriebene Gefahr stark reduziert ist. Dennoch ja, ausschließen kann man dies nie.

    Allgemein:
    Mich interessiert auch nur, ob Blogging Plattformen genutzt werden und warum oder eben nicht.
    Das es weitere Weiterbildungsmaßnahmen gibt, welche zusätzlich (oder sogar stattdessen) genutzt werden könnten/sollten, ist mir klar.

    Danke euch ... mal schauen ob es weitere Meinungen/Einschätzungen gibt 😀 .

    Viele Grüße
    Sven

  • Persönliche Weiterbildung bzgl. IT, Programmierung und Co.

    • SOLVE-SMART
    • 23. Oktober 2024 um 16:56

    Hi zusammen 👋 ,

    mich interessiert:

    1. Wie ihr euch weiterbildet bzw. über Programmiersprachen, Frameworks und IT-Trends auf dem Laufenden haltet?
    2. Ob ihr selbst publiziert, Blogs/Artikel schreibt etc.?

    Würde mich freuen wenn ihr an der Umfrage teilnehmt.
    Danke und weiterhin eine gute Zeit dear community 😊 .

    Viele Grüße
    Sven

  • Unit Testing in Autoit

    • SOLVE-SMART
    • 17. Oktober 2024 um 13:09

    Danke dir MojoeB für die Erläuterung. Verstehe ... .
    Ich drücke die Daumen das du bald wieder mit GIT in Berührung kommst, denn es macht die Entwicklung so viel besserer/sicherer in gewisser Hinsicht.

    Bis später dann.

    Viele Grüße
    Sven

  • Unit Testing in Autoit

    • SOLVE-SMART
    • 17. Oktober 2024 um 11:25

    Danke sodinoel und danke MojoeB 🤝 .

    MojoB: Nutzt du eine Versionsverwaltung wie Git bspw.? Denn was du beschreibst lässt sich mit Git recht einfach vermeiden. Also Änderungen nochmal einsehen und nachvollziehen was ggf. das Problem sein kann. Meist einfacher als sich durch diverse Code-Stellen einzeln durchzudebuggen.

    Bald wird es übrigens für VSCode einen richtigen AutoIt-Debugger (javascript based) geben, mit dem man wie in den meisten anderen Sprachen seine Anwendung ordentlich debuggen kann. Die üblichen die wir derzeit haben (direkt mit AutoIt geschrieben), haben mich nie überzeugt um ehrlich zu sein.
    Aber dies nur als Randnotiz 😅 .

    Viele Grüße
    Sven

  • Kennt jemand eine Open Source Werkstattverwaltungssoftware?

    • SOLVE-SMART
    • 16. Oktober 2024 um 18:08
    Zitat von Schnuffel

    wenn du nichts findest, schreit das ja geradezu nach einem Gemeinschaftsprojekt. ^^

    Hust, hust 😂 , ... die Hoffnung stirbt zuletzt.

    Angenehm Schnuffel dich wieder aktiver hier zu sehen, auch wenn ich es selbst eher wenig bin 😅 .

    ----------------------

    Zur Frage:
    Leider nein BugFix , doch einige Vorschläge (links) sehen recht vielversprechend aus.

    Zitat von Schnuffel

    Darf die Software was kosten oder soll sie Freeware sein?

    BugFix schrieb zwar "Open Source", doch das heißt nicht automatisch das es kostenfrei, lizenzfrei usw. ist - daher gute Frage Schnuffel.
    Ich denke es ist kostenfreie Software unter MIT Lizenz (oder ähnlich) gewünscht, doch das wird uns BugFix sicher noch erläutern.

    Viele Grüße
    Sven

  • Vorstellung

    • SOLVE-SMART
    • 16. Oktober 2024 um 18:02
    Zitat von Musashi

    Doch ! Frauen werden, wie allseits bekannt, nie älter als 39 ;) .

    Er ist und bleibt charmant unser @Musashi 😊 .

    ---------------

    Von mir ebenfalls ein herzliches willkommen sodinoel 👋 .
    Ich bin zuversichtlich das du uns/unsere Community mit deinen Erfahrungen bereichend kannst.

    Viele Grüße
    Sven

  • Webdriver und POST-Request (mit Datenpaket) ... wie ?

    • SOLVE-SMART
    • 25. September 2024 um 15:12

    Bin froh das es verständlich gewesen ist. Dennoch kannst du gern diesbzgl. weitere Fragen stellen. Bin im Thema WebDriver recht gut aufgestellt und kann bei Bedarf (wenn es die Zeit hergibt) gern unterstützen.

    Viele Grüße
    Sven

  • Webdriver und POST-Request (mit Datenpaket) ... wie ?

    • SOLVE-SMART
    • 25. September 2024 um 10:00

    In aller Schnelle Schmunke :
    2024-09-25-winhttp-vs-au3webdriver.mp3

    Kurz Audio, damit ich mir nicht die Finger wund tippe.

    Viele Grüße
    Sven

  • Benutzerinteraktion via Console

    • SOLVE-SMART
    • 25. September 2024 um 08:55
    Zitat von hipfzwirgel

    Eine Inputbox habe ich schon getestet, sieht aber echt schlecht aus...

    Soll heißen das Design der InputBox gefällt dir nicht oder die InputBox an sich geht nicht?

    Vorschlag:
    Du lässt den Nutzer das Öffnen des Programms doch sowieso schon mit Parametern zu. Warum dann nicht einen weiteren Parameter der die Option ...

    Zitat von hipfzwirgel

    eine Bios-Option (Minimal lenght) das Löschen des Biospasswortes verhindert

    ... deaktiviert. Fertig 😅 .

    Viele Grüße
    Sven

  • Webdriver und POST-Request (mit Datenpaket) ... wie ?

    • SOLVE-SMART
    • 25. September 2024 um 08:19

    Hi Schmunke 👋 ,

    ich fürchte da ist einiges durcheinander oder ich muss zumindest einige Rückfragen stellen.
    Ich melde mich im Laufe des Tages, jetzt passt es nicht.

    Viele Grüße
    Sven

  • SQL Fragen

    • SOLVE-SMART
    • 24. September 2024 um 16:46

    Alles klar 👌 .

    Dann mache ich mir nicht die Mühe um den Rest zu beschreiben bzw. zu zeigen, auch gut.

    Vielleicht für das nächste Mal, wenn du erneut so'n Fall hast wie dein zweites Szenario. Da ist es nicht nur das Kombinieren von Tabellen und Spalten sondern das Durchlaufen der Daten mit mit einem "Cursor". Damit kannst du Teilergebnisse innerhalb der Loop finden und nutzen, für weitere Queries und diese dann zu einem Gesamtergebnis kummulieren. Also einfach ausgedrückt, eine Schleife, aber in ANSI SQL (was auch Firebird Standard ist), ist dies anders benannt, umständlicher als man es kennt - aber es geht 😅 .

    Viele Grüße
    Sven

  • SQL Fragen

    • SOLVE-SMART
    • 24. September 2024 um 11:15

    Hi BugFix 👋 ,

    Zitat von BugFix

    Ich möchte den Kunden zugebuchte Geräte abfragen:

    Hier schon mal (endlich 😅), der erste Teil. Bitte passe die Werte wieder an deinen Tabelleninhalte an, denn dies sind die generierten Werte von ChatGPT. Es geht eigentlich nur um den 3. Block, die beiden davor sind nur zur Herleitung. Falls du es mit https://sqliteonline.com/ direkt nachstellen willst. Die Daten sind bereits in der Datenbank vorhanden (sqlite.db ==> GitHub link oben).

    Code
    -- all
    SELECT      *
    FROM        kunden
    
    -- active customer
    SELECT		k.kundennr, *
    FROM 		kunden k
    WHERE 		k.kundennr < 9
    	AND 	k.adressgrp in ('A12345', 'B23456', 'C34567', 'D45678', 'E56789')
        AND     k.PLZ <> ''
    
    -- devices of active customers (by serien and artikel)
    SELECT		k.kundennr, s.artikelnr, s.text1 'Artikel', s.herstsernr, s.lilidat 'Liefdat', s.kennung, a.wgr, a.nm_himinr
    FROM 		kunden k
    JOIN		serien s
    	ON		k.kundennr = s.kundennr
    JOIN		artikel a
    	ON		s.artikelnr = a.artikelnr
    WHERE 		k.kundennr < 9
    	AND 	k.adressgrp in ('A12345', 'B23456', 'C34567', 'D45678', 'E56789')
        AND     k.PLZ <> ''
    Alles anzeigen

    Zur Erklärung:
    Ein Join, inner join aber man kann "inner" weglassen, gibt dir die Schnittmenge zweier (oder mehrerer) Tabellen auf Grund der zugehörigen Spalten. Diese Verbindung wird mit "ON" definiert. Nun kannst du auf Grund der Aliasse "k" für Kunden, "s" für Serien usw. im SELECT einzelne Spalten der jeweiligen Tabelle auflisten. Die WHERE Klausel verhält sich ganz normal wie bei deinen bisherigen Abfragen, nur das du darauf achten solltest, die richtigen Aliasse zu nutzen.

    Ebenfalls wichtig ist, bei "outer joins" wie (left outer join oder right outer join)), ist die Reihenfolge von wo du nach wo gehst in den Tabellenbeziehungen relevant. In deinen Fall hier egal, da ein inner join genutzt wird. Siehe bitte die Grafik (Join ist verlinkt).

    -----------------------

    Für das zweite Szenario brauche ich noch etwas Zeit. Melde mich wieder.
    Hoffe aber erstmal, dass dies passt und verständlich ist 🤞 .

    Viele Grüße
    Sven

  • SQL Fragen

    • SOLVE-SMART
    • 23. September 2024 um 16:40

    Hi BugFix 👋 ,

    ich kann noch nicht alles bis zum Ende durchlesen und berücksichtigen - Antwort folgt also noch. Jedoch habe ich per ChatGPT zu den CREATE TABLE Statements passende INSERT INTO Statements generieren lassen. Diese sind hier einzusehen, damit du, ich oder anderer Helfende direkt mit diesen Daten arbeiten können.

    Au3Forums/autoit-de/88398-sql-fragen at main · Sven-Seyfert/Au3Forums
    This repository is used for helping people in the german and english AutoIt forums. - Sven-Seyfert/Au3Forums
    github.com


    Einfach die sqlite.db via https://sqliteonline.com/ laden und dort dann die entsprechenden Queries ausführen. So zumindest meine naive Annahme ohne (wie gesagt) alles bewertet/gesichtet zu haben.

    Viele Grüße
    Sven

  • ShellExecute: Fehler beim Öffnen einer PDF

    • SOLVE-SMART
    • 20. September 2024 um 09:54

    +1 zum Statement von AspirinJunkie .

    Hi JB72ger 👋 ,

    auch wenn du bereits gut beschrieben hast, dass du die vorangegangenen Dinge des Threads berücksichtigt hast, zeigt uns der Code doch ggf. etwas mehr.

    Mal ganz wild gefragt 😅 :
    Kannst du die Umgebung (mit Acrobat Reader DC) irgendwie bereit stellen? Per Docker oder Cloud Instanz oder so? Dann könnten wir direkt dort testen.
    ==> Ja, dies ist mit Kanonen auf Spatzen schießen, in diesem Fall, da wirklich nur 'ne Kleinigkeit. Doch heutzutage haben "die Leute" manchmal versteckte Services von denen man gar nichts ahnt.

    💡 Wenn nicht, wovon ich ausgehe, dann bleibt es bei der Code-Anfrage - Danke.

    Viele Grüße
    Sven

  • Ballontipp bei Programmstart anzeigen an definierter Stelle

    • SOLVE-SMART
    • 19. September 2024 um 21:07

    Hi water , hi Kanashius 👋 ,

    beide eure Ansätze finde ich gut, wobei ich das Beispiel von Water doch besser finde. UDF eingebunden und "die richtigen Funktionen" genutzt, fertig.
    Wenn man die GUIToolTip.au3 nicht kennt, nutzen möchte etc., ist deine Variante Kanashius meiner Meinung nach eine gute Alternative.

    -- Alle Wege führen nach Rom --

    Angenehmen Abend euch allen noch.

    Viele Grüße
    Sven

  • Ballontipp bei Programmstart anzeigen an definierter Stelle

    • SOLVE-SMART
    • 18. September 2024 um 21:10

    Hi hipfzwirgel , hi Schnuffel 👋 ,

    deine "stumpfe" Variante funktioniert wunderbar Schnuffel .
    Sie hat nur die kleine Einschränkung, dass während der 10 Sekunden die GUI nicht verwendbar ist.
    Also eine Interaktion mit dem Button (ich nehme an da kommen noch mehr dazu) nicht möglich ist, da ja das Skript durch das Sleep() blockiert ist.

    Daher habe ich mit deinen Werten aus WinGetPos() und ControlGetPos() eine Variante mit einem Timer gebastelt.
    Somit kann während der Anzeige auch noch die GUI "bedient" werden, falls dies gewünscht ist. Wenn nicht, dann bitte Variante 1 nutzen 😅 .

    AutoIt
    #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
    #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
    
    #include-once
    #include <GUIConstantsEx.au3>
    #include <ListBoxConstants.au3>
    #include <WindowsConstants.au3>
    
    _Main()
    
    Func _Main()
    	Local $hGUI    = GUICreate('My GUI list')
        Local $cList   = GUICtrlCreateList('', 64, 32, 121, 97, BitOR($WS_VSCROLL, $LBS_USETABSTOPS))
                         GUICtrlSetLimit(-1, 200) ; To limit horizontal scrolling.
                         GUICtrlSetData(-1, '||1. Item')
        Local $idClose = GUICtrlCreateButton('my closing button', 64, 160, 175, 25)
    
    	GUISetState(@SW_SHOW)
    
        Local $mGui[]
              $mGui.Data = WinGetPos($hGUI)
              $mGui.XPos = $mGui.Data[0]
              $mGui.YPos = $mGui.Data[1]
    
        Local $mListControl[]
              $mListControl.Data   = ControlGetPos('', '', $cList)
              $mListControl.XPos   = $mListControl.Data[0]
              $mListControl.YPos   = $mListControl.Data[1]
              $mListControl.Height = $mListControl.Data[3]
    
        Local $mToolTip[]
              $mToolTip.XPos = $mGui.XPos + $mListControl.XPos + 48
              $mToolTip.YPos = $mGui.YPos + $mListControl.YPos + $mListControl.Height - 48
    
        ToolTip('Beispieltext', $mToolTip.XPos, $mToolTip.YPos, 'INFO', 1, 1)
    
        Local Const $iSecondsToWait = 5 * 1000
        Local $bShouldBallonTipBeDisplayed = True
        Local $hTimer = TimerInit()
    
    	While True
            If $bShouldBallonTipBeDisplayed Then
                If TimerDiff($hTimer) >= $iSecondsToWait Then
                    ToolTip('')
                    $bShouldBallonTipBeDisplayed = False
                EndIf
            EndIf
    
    		Switch GUIGetMsg()
    			Case $GUI_EVENT_CLOSE
    				ExitLoop
    			Case $idClose
    				MsgBox('', '', 'the closing button has been clicked', 2)
    				ExitLoop
    		EndSwitch
    	WEnd
    
        GUIDelete($hGUI)
    EndFunc
    Alles anzeigen

    Einen angenehmen Abend euch noch 🤝 .


    Viele Grüße
    Sven

  • Select Cas in einem Intervall

    • SOLVE-SMART
    • 18. September 2024 um 14:17

    Ja der Thread (von dir) kam mir auch gleich in den Sinn. War mir unsicher ob du dies warst, aber ja ... no worries ==> KI && AutoIt <> "vollends kompatibel" 😂 .

    Viele Grüße
    Sven

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™