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

  • VLC noch aktuell? [2024]

    • SOLVE-SMART
    • 28. Januar 2024 um 22:11

    Okay, spannend 🤔 . Mir persönlich wäre VLC dazu zu unbequem und wenn ich an die üblichen Video-Streaming-Dienste denke, erscheint mir eine Videothek via VLC auch nicht gerade schick vom Design her.
    Am Ende deine Entscheidung und vielleicht kennt sich hier noch jemand mit der VLC UDF aus, doch ich bin mir ziemlich sicher das dein Anliegen bereits per Website-Template irgendwo umgesetzt wurde und du dies in der Web-Welt (HTML, CSS und JS) schnell finden und für deine Bedürfnisse anpassen könntest - vorausgesetzt die sind diese "Sprachen" geläufig 😅 .

    Sowas würde ich ehrlich gesagt nicht mit AutoIt machen wollen, je nachdem ob es "gut" aussehen sollte. Es gibt auch hier im Forum GDI+ Experten, doch für mich wäre es nichts.
    Meine Suchbegriffe würden wahrscheinlich sowas sein wie: "video library website template javascript".

    Viele Grüße
    Sven

  • VLC noch aktuell? [2024]

    • SOLVE-SMART
    • 28. Januar 2024 um 20:19

    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

  • NEWBI: WebsiteEingabe mit wd_core.au3 / _WD_ClickElement undefined function Fehler

    • SOLVE-SMART
    • 28. Januar 2024 um 05:13

    Hi mloew (Markus) 👋 ,

    ist das Thema für dich noch relevant? Ich könnte ggf. ein paar Tipps zum Umgang mit dem "au3WebDriver" Projekt geben.

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

    Unabhängig davon eine Einordnung auf das Folgende von dir:

    Zitat von mloew

    Macht es überhaupt Sinn, sich mit xpath und webdriver zu beschäftigen, wenn das noch alles experimentel ist?

    Xpath ist ja zumindest Standard.

    Experimentel ist es nicht. Der Hinweis von water das der WebDriver noch in Entwicklung ist bezog sich sicherlich darauf, dass darauf geachtet werden sollte das der jeweils aktuelle Treiber (Browser) genutzt wird. Zudem das das Projekt "au3WebDriver" (auf GitHub) stetig weiterentwickelt und gepflegt wird und nicht abgeschlossen ist. Dies bedeutet allerdings nicht, dass es nicht stabil wäre, falls dies deine Frage war 🤔 ? Wenn du Aktionen im Browser automatisieren möchtest, mit UI oder ohne (headless mode), ist die Verwendung von WebDriver sicherlich keine schlechte Wahl. Denn Alternativen wie Image- und/oder Pixel-Suche usw. sind recht unflexibel und verhalten sich bei verschiedenen Auflösungen i. d. R. auch fehlerhaft.

    Zum Thema XPath:
    Dies ist nur eine Art Elemente der Seitenstruktur (DOM) zu finden um dann mit ihnen zu interagieren. Es gibt bspw. mit dem "CSS Selector" auch eine weitere sehr weit verbreitete "Locator Strategy", welche für die meisten Beginner in diesem Umfeld etwas einfacher zu verstehen ist und im Umgang ebenfalls einfacher ist. Für komplexere (robustere) Suchen nach einem oder mehreren Elementen im DOM-Baum ist XPath allerdings die bessere Variante. Meiner Ansicht nach machst du nichts falsch, wenn du mit den Developer Tools (F12) des jeweiligen Browsers startest und dir den jeweiligen Selector generieren lässt bzw. diesen einfach herauskopierst. 💡 Dennoch lohnt sich XPath sehr - einmal die Syntax verstanden und man ist mega flexibel und robust in seiner Elementerkennung.

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

    Nun zurück zu meiner Eingangsfrage: Ist das Thema für dich noch relevant?

    Viele Grüße
    Sven

  • AutoIt Cheat Sheet

    • SOLVE-SMART
    • 28. Januar 2024 um 03:54

    Hi Schnuffel ,

    good catch 👀 , Danke dir 👍 .
    Mal schauen ob ich den Account bei Cheatography hervorkramen kann und die Änderung fix machen kann.

    Viele Grüße
    Sven

  • Icon (Symbol) ändern und die Größe beibehalten

    • SOLVE-SMART
    • 5. April 2023 um 14:21
    Zitat von Oscar

    Bei GUICtrlCreateIcon gibt es einen Bug: wenn man keine Icondatei beim Erstellen angibt, wird ein Platzhalter mit den Maßen 0,0 (width, height) erzeugt, und _WinAPI_GetClientRect liefert nicht die korrekten Daten.

    Danke das du meine Annahme (das es ein BUG ist) bestätigst, Oscar 👍 . Danke auch für die Erläuterung warum.

    Viele Grüße
    Sven

  • Icon (Symbol) ändern und die Größe beibehalten

    • SOLVE-SMART
    • 4. April 2023 um 20:45

    Ganz hervorragend Oscar 👍 .
    Die Funktion kommt gleich in meine Snippets (wenn du erlaubst 😇). Bin mir zwar nicht sicher wann ich sie mal nutzen werde, doch "besser man hat als man hätte" 🤭 .

    Kleine Verbesserung/Anmerkung:

    AutoIt
    #include <SendMessage.au3>
    #include <WinAPIHObj.au3>
    #include <WinAPIInternals.au3>

    Diese drei includes sind nicht nötig, für dein angepasstest Skript. Es reicht also wenn "nur" diese eingebunden sind:

    AutoIt
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WinAPIGdi.au3>
    #include <WinAPIShellEx.au3>
    #include <WinAPISysInternals.au3>

    Dies sollte die bzw. eine Lösung für dein Anliegen sein Racer.

    Viele Grüße
    Sven

  • Icon (Symbol) ändern und die Größe beibehalten

    • SOLVE-SMART
    • 4. April 2023 um 16:49

    Ich habe gerade mal ein wenig herum experimentiert und denke es könnte ein BUG sein! Denn mit GUICtrlSetPos($Icon1, 40, 40, 19, 19) als Zeile 30, wird das Icon auf 19x19 gesetzt, doch beim erneutem Button-Klick, wieder auf die icontype Eigenschaft "normal" von GUICtrlSetImage (also auf eine andere Größe). Also das der Style immer überwiegt ist seltsam.

    Zudem konnte ich mit 20x20 GUICtrlSetPos($Icon1, 40, 40, 20, 20) gar keinen Effekt feststellen 🤔 😒 .

    Viele Grüße
    Sven

  • Icon (Symbol) ändern und die Größe beibehalten

    • SOLVE-SMART
    • 4. April 2023 um 16:28

    Hi Racer ,

    mit GUICtrlCreateIcon() vergibst du eine spezifische Größe. Beim button event jedoch (mit GUICtrlSetImage()), setzt du "nur" ein anderes Icon ein (mehr geht in der Funktion auch nicht, ist klar). Dabei fällt die Größenzuteilung weg. Nimm mal in Zeile 13 die "Width" und "Height" Angaben weg und schaue es dir dann an.

    Viele Grüße
    Sven

  • Screenshot - Bereich per Maus auswählen

    • SOLVE-SMART
    • 29. März 2023 um 08:39

    Hier das abgeänderte Skript von UEZ , damit es zumindest lauffähig (unter Win10 mit AutoIt v3.3.16.1) ist.

    AutoIt
    #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
    #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
    #AutoIt3Wrapper_Run_Au3Stripper=y
    #AutoIt3Wrapper_UseUpx=n
    #Au3Stripper_Parameters=/sf /sv /mo /rm /rsln
    
    #include-once
    #include <Clipboard.au3>
    #include <GUIConstantsEx.au3>
    #include <WinAPIConstants.au3>
    #include <WinAPIGdi.au3>
    #include <WinAPISys.au3>
    #include <WindowsConstants.au3>
    
    #Region Example
    ;capture manual coordinates
    FileDelete(@ScriptDir & "\Captured.bmp")
    Global $hHBitmap = _WinAPI_MarkScreenRegionAndCapture(0, False, True, 0, 0, 99, 99)
    _WinAPI_SaveHBITMAPToFile(@ScriptDir & "\Captured.bmp", $hHBitmap)
    _WinAPI_DeleteObject($hHBitmap)
    If FileExists(@ScriptDir & "\Captured.bmp") Then ShellExecute(@ScriptDir & "\Captured.bmp")
    
    ;save the captured bitmap to a file
    FileDelete(@ScriptDir & "\Captured.bmp")
    $hHBitmap = _WinAPI_MarkScreenRegionAndCapture()
    _WinAPI_SaveHBITMAPToFile(@ScriptDir & "\Captured.bmp", $hHBitmap)
    _WinAPI_DeleteObject($hHBitmap)
    If FileExists(@ScriptDir & "\Captured.bmp") Then ShellExecute(@ScriptDir & "\Captured.bmp")
    
    
    ;copy captured bitmap to clipboard
    Switch _WinAPI_MarkScreenRegionAndCapture(1, True)
        Case 1
            MsgBox($MB_ICONINFORMATION, "Information", "Marked region was properly captured to clipboard!", 30)
        Case 0
            MsgBox($MB_ICONERROR, "ERROR", "An error has occured!", 30)
    EndSwitch
    #EndRegion
    
    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _WinAPI_MarkScreenRegionAndCapture
    ; Description ...: Selected area on desktop will be captured and save to clipbord or GDI bitmap handle will be returned.
    ; Syntax ........: _WinAPI_MarkScreenRegionAndCapture([$iFillMode = 0[, $bClipboard = True]])
    ; Parameters ....: $iFillMode           - [optional] an integer value. Default is 0.
    ;                                           0: marked area filled with solid color
    ;                                           1: marked area filled with hatch pattern ($HS_DIAGCROSS)
    ;                                           2: marked area without any fill pattern / color - only red border
    ;                  $bClipboard          - [optional] a boolean value. Default is False. If True then no GDI bitmap handle will be returned.
    ;                                         If false then GDI bitmap handle will be returned.
    ;                  $bManual             - [optional] a boolean value. Default is False. If True manual capturing is activated.
    ;                  $iX1                 - [optional] an integer value. Default is 0. If $bManual is true enter the x1 screen pos.
    ;                  $iY1                 - [optional] an integer value. Default is 0. If $bManual is true enter the Y1 screen pos.
    ;                  $iX2                 - [optional] an integer value. Default is 0. If $bManual is true enter the x2 screen pos.
    ;                  $iY2                 - [optional] an integer value. Default is 0. If $bManual is true enter the y2 screen pos.
    ; Return values .: 0 / 1 / -1 / GDI bitmap handle
    ; Author ........: UEZ
    ; Version .......: 0.92 build 2017-01-22
    ; Modified ......:
    ; Remarks .......: Do not forget to dispose returned GDI bitmap handle for non clipboard mode using _WinAPI_DeleteObject!
    ; Related .......:
    ; Link ..........:
    ; Example .......: Yes
    ; ===============================================================================================================================
    Func _WinAPI_MarkScreenRegionAndCapture($iFillMode = 0, $bClipboard = False, $bManual = False, $iX1 = 0, $iY1 = 0, $iX2 = 0, $iY2 = 0)
        If @OSBuild > 6299 Then ;https://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx
            DllCall("Shcore.dll", "long", "PROCESS_DPI_AWARENESS", 1) ;PROCESS_SYSTEM_DPI_AWARE = 1 (https://msdn.microsoft.com/en-us/library/windows/desktop/dn280512(v=vs.85).aspx)
        Else
            DllCall("User32.dll", "bool", "SetProcessDPIAware")
        EndIf
        Local $iOld = AutoItSetOption("MouseCoordMode", 1)
        If Not $bManual Then
            Local Const $hDesktop = WinGetHandle("[TITLE:Program Manager;CLASS:Progman]")
            Local Const $aFullScreen = WinGetPos($hDesktop) ;should work also on multi screens
            Local Const $iW = $aFullScreen[2], $iH = $aFullScreen[3]
            Local Const $hGUI_Screencapture = GUICreate("", $iW, $iH, $aFullScreen[0], $aFullScreen[1], $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_LAYERED))
            GUISetState(@SW_SHOW, $hGUI_Screencapture)
            Local Const $hDC = _WinAPI_GetDC($hGUI_Screencapture)
            Local Const $hGfxDC = _WinAPI_CreateCompatibleDC($hDC)
            Local Const $hBitmapGDI = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH)
            Local $hObjOld = _WinAPI_SelectObject($hGfxDC, $hBitmapGDI)
            Local $tSize = DllStructCreate($tagSIZE)
            $tSize.x = $iW
            $tSize.y = $iH
            Local $tSource = DllStructCreate($tagPOINT)
            Local $tBlend = DllStructCreate($tagBLENDFUNCTION)
            $tBlend.Alpha = 0xFF
            $tBlend.Format = 1
            Local $tDest = DllStructCreate($tagPOINT)
            $tDest.x = $aFullScreen[0]
            $tDest.y = $aFullScreen[1]
    
            Local Const $hPen = _WinAPI_CreatePen($PS_SOLID, 1, 0x0000FF)
            Local Const $hPen_Orig = _WinAPI_SelectObject($hGfxDC, $hPen)
            Local $hBrush, $iAlpha2, $iFlag
            $iFillMode = $iFillMode > 2 ? 2 : $iFillMode < 0 ? 0 : $iFillMode
            Switch $iFillMode
                Case 0
                    $hBrush = _WinAPI_CreateBrushIndirect($BS_SOLID, 0x808080)
                    $iAlpha2 = 0xA0
                    $iFlag = $ULW_ALPHA
                Case 1
                    $hBrush = _WinAPI_CreateBrushIndirect($BS_HATCHED, 0x808000, $HS_DIAGCROSS)
                    $iAlpha2 = 0x30
                    $iFlag = $ULW_ALPHA
                Case 2
                    $hBrush = _WinAPI_CreateBrushIndirect($BS_HOLLOW, 0x000000)
                    $iAlpha2 = 0xFF ;not needed
                    $iFlag = $ULW_COLORKEY
            EndSwitch
    
            Local $hBrush_Orig = _WinAPI_SelectObject($hGfxDC, $hBrush)
        Else
            If Not BitOr($iX1, $iX2, $iY1, $iY2) Then Return SetError(4, 0, 0)
        EndIf
        Local $aMPos[5], $aMPos_old[4], $tRECT = _WinAPI_CreateRect(0, 0, 0, 0)
        Do
            If $bManual Then
                $aMPos[2] = 1
            Else
                GUISetCursor(16, 1, $hGUI_Screencapture)
                $aMPos = GUIGetCursorInfo($hGUI_Screencapture)
                $aMPos_old[0] = $aMPos[0]
                $aMPos_old[1] = $aMPos[1]
                $aMPos_old[2] = MouseGetPos(0)
                $aMPos_old[3] = MouseGetPos(1)
            EndIf
            Switch $aMPos[2]
                Case 0 ;display crosshair
                    _WinAPI_BitBlt($hGfxDC, 0, 0, $iW, $iH, $hGfxDC, 0, 0, $CAPTUREBLT)
                    _WinAPI_DrawLine($hGfxDC, $tDest.x, $aMPos[1], $iW, $aMPos[1])
                    _WinAPI_DrawLine($hGfxDC, $aMPos[0], $tDest.y, $aMPos[0], $iH)
                    _WinAPI_UpdateLayeredWindow($hGUI_Screencapture, $hDC, $tDest, $tSize, $hGfxDC, $tSource, 0, $tBlend, $ULW_COLORKEY)
                Case 1 ;capture selected region
                    If Not $bManual Then
                        $tBlend.Alpha = $iAlpha2
                        While $aMPos[2] ;mark region
                            GUISetCursor(14, 1, $hGUI_Screencapture) ;WinGetHandle(AutoItWinGetTitle()))
                            $aMPos = GUIGetCursorInfo($hGUI_Screencapture)
                            _WinAPI_BitBlt($hGfxDC, 0, 0, $iW, $iH, $hGfxDC, 0, 0, $CAPTUREBLT) ;clear bitmap
    
                            ;draw rectangle
                            $tRECT.Left = $aMPos_old[0]
                            $tRECT.Top = $aMPos_old[1]
                            $tRECT.Right = $aMPos[0]
                            $tRECT.Bottom = $aMPos[1]
                            _WinAPI_Rectangle($hGfxDC, $tRECT)
                            If $iFillMode <> 2 Then _WinAPI_InvertRect($hGfxDC, $tRECT)
                            _WinAPI_UpdateLayeredWindow($hGUI_Screencapture, $hDC, $tDest, $tSize, $hGfxDC, $tSource, 0, $tBlend, $iFlag)
                            Sleep(10)
                        WEnd
                        _WinAPI_SelectObject($hGfxDC, $hObjOld)
                        _WinAPI_ReleaseDC($hGUI_Screencapture, $hDC)
                        _WinAPI_DeleteDC($hGfxDC)
                        _WinAPI_DeleteObject($hBitmapGDI)
                        _WinAPI_SelectObject($hGfxDC, $hPen_Orig)
                        _WinAPI_DeleteObject($hPen)
                        _WinAPI_SelectObject($hGfxDC, $hBrush_Orig)
                        _WinAPI_DeleteObject($hBrush)
                        GUIDelete($hGUI_Screencapture)
                        ;capture region
                        $aMPos[0] = MouseGetPos(0)
                        $aMPos[1] = MouseGetPos(1)
                    Else
                        $aMPos_old[2] = $iX1
                        $aMPos_old[3] = $iY1
                        $aMPos[0] = $iX2
                        $aMPos[1] = $iY2
                    EndIf
    
                    Local Const $hDC_Region = _WinAPI_GetDC(0)
                    Local Const $hMemDC = _WinAPI_CreateCompatibleDC($hDC_Region)
                    Local Const $iW_Region = Abs($aMPos[0] - $aMPos_old[2]) + 1, $iH_Region = Abs($aMPos[1] - $aMPos_old[3]) + 1
                    Local $hHBitmap_Captured = _WinAPI_CreateCompatibleBitmap($hDC_Region, $iW_Region, $iH_Region)
                    $hObjOld = _WinAPI_SelectObject($hMemDC, $hHBitmap_Captured)
                    _WinAPI_BitBlt($hMemDC, 0, 0, $iW_Region, $iH_Region, $hDC_Region, _
                            $aMPos[0] > $aMPos_old[2] ? $aMPos_old[2] : $aMPos[0], _
                            $aMPos[1] > $aMPos_old[3] ? $aMPos_old[3] : $aMPos[1], BitOR($SRCCOPY, $CAPTUREBLT))
                    Local $hHBitmap_Clipboard = _WinAPI_CopyImage($hHBitmap_Captured, 0, 0, 0, BitOR($LR_COPYDELETEORG, $LR_COPYRETURNORG))
                    _WinAPI_SelectObject($hHBitmap_Captured, $hObjOld)
                    _WinAPI_DeleteDC($hHBitmap_Captured)
                    _WinAPI_ReleaseDC(0, $hDC_Region)
    
                    AutoItSetOption("MouseCoordMode", $iOld)
                    If $bClipboard Then
                        ;put captured region to clipboard
                        If Not _ClipBoard_Open(0) Then
                            _WinAPI_DeleteObject($hHBitmap_Clipboard)
                            Return SetError(1, 0, 0)
                        EndIf
                        If Not _ClipBoard_Empty() Then
                            _WinAPI_DeleteObject($hHBitmap_Clipboard)
                            Return SetError(2, 0, 0)
                        EndIf
                        Local Const $hCP = _ClipBoard_SetDataEx($hHBitmap_Clipboard, $CF_BITMAP)
                        If Not $hCP Or @error Then
                            _WinAPI_DeleteObject($hHBitmap_Clipboard)
                            Return SetError(3, 0, 0)
                        EndIf
                        _ClipBoard_Close()
                        _WinAPI_DeleteObject($hHBitmap_Clipboard)
                        Return 1
                    Else
                        Return $hHBitmap_Clipboard
                    EndIf
            EndSwitch
    
            Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE
                    _WinAPI_SelectObject($hGfxDC, $hObjOld)
                    _WinAPI_ReleaseDC($hGUI_Screencapture, $hDC)
                    _WinAPI_DeleteDC($hGfxDC)
                    _WinAPI_DeleteObject($hBitmapGDI)
                    _WinAPI_SelectObject($hGfxDC, $hPen_Orig)
                    _WinAPI_DeleteObject($hPen)
                    GUIDelete($hGUI_Screencapture)
                    AutoItSetOption("MouseCoordMode", $iOld)
                    Return -1
            EndSwitch
        Until False
    EndFunc   ;==>_WinAPI_MarkScreenRegionAndCapture
    Alles anzeigen

    💡 Hinweis: Ich habe keine detaillierten Tests gemacht, abgesehen vom Start der Anwendung. Ich habe aktuelle #includes hinzugefügt und eine globale (doppelte) Variablen Deklaration entfernt, mehr nicht. Also keine wesentlichen Änderungen.

    Hoffe das bringt dich zumindest etwas weiter 🤞 .

    Viele Grüße
    Sven

  • Autoit für Tablet

    • SOLVE-SMART
    • 29. März 2023 um 08:27

    Ja wie Moombas bereits erläutert hat WhiteHorse, es hängt u. a. vom Geldbeutel ab.
    Ich hatte derzeit ein 13 Zoll Gerät, was richtig, auch geschleppt werden muss 😅 .

    Heute würde ich mir ehrlich gesagt eher ein kleines Notebook kaufen, anstatt ein Tablet, wenn es um programmatische Arbeiten geht.
    Tablets sind meiner Ansicht nach eher für das Surfen im Netz geeignet, ggf. noch für die Unterstützung im Unterricht bspw. oder bei Präsentationen (Übertragung auf größere Monitore/TV).
    Am Ende triffst du die Entscheidung, doch suche doch mal nach Vor- und Nachteilen der Nutzung von Tablets im Bezug auf programmatische Tätigkeiten - da wirst du sicher etwas finden 😀 .

    Viele Grüße
    Sven

  • Autoit für Tablet

    • SOLVE-SMART
    • 28. März 2023 um 22:01

    Hi WhiteHorse,

    ich habe ein ähnliches Szenario mal ein paar Monate versucht/gelebt. Mein damaliges Tablet hatte eine Full-HD Auflösung und die Leistung reichte auch aus, AutoIt ohne Probleme nutzen zu können. Was mich allerdings davon abgebracht hatte, weil es mich sehr nervte war, dass ich ohne richtige Tastatur keinen Spaß an der Entwicklung von Programmen habe. Die Windows interne Tablet-Tastatur war für mich grausam in der Bedienung.

    💡 Also mein Tipp: Wenn du dies tun möchtest, dann empfehle ich ein Tablet mit Tastatur. Bspw. "Microsoft Surface (Pro)" [...] da gibt es diverse gebrauchte und trotzdem leistungsstarke Modelle (je nach dem was du ausgeben willst und kannst).

    Viele Grüße
    Sven

  • Screenshot - Bereich per Maus auswählen

    • SOLVE-SMART
    • 28. März 2023 um 20:11
    Zitat von UEZ

    Ich hatte auch mal was in die Richtung gebastelt: _WinAPI_MarkScreenRegionAndCapture 0.92 build 2017-01-22

    Vielleicht nützlich für dein Anliegen...

    Hi UEZ ,

    dein Link scheint ins Leere zu laufen. Ich komme damit nicht zum verlinkten Thread (weder mit Chrome, noch mit Firefox). Ich habe kurz versucht Google und die Forumssuche dazu zu bemühen, leider erfolglos. Schaust du bitte nochmal, ob du den Link aktualisieren kannst? Danke 🤝 .

    Viele Grüße
    Sven

  • Programm läuft-Anzeige

    • SOLVE-SMART
    • 27. März 2023 um 15:51

    Hi zusammen,

    eigentlich wurden bereits alle mir bekannten Möglichkeiten, welche für den beschriebenen Anwendungsfall relevant sind, aufgelistet/vorgeschlagen 👍 .
    Vielleicht dennoch eine weitere: Logging => Falls du die Aktionen (copy etc.) selbst verwaltest, dann baue doch Log-Statements ein (Log-Einträge die du in eine Log-Datei schreibst). Dann kannst du bei Bedarf reinschauen und musst dich nicht visuell durch Progress-Anzeigen (ToolTip, ProgressBar etc.) ablenken lassen. Du siehst also "bei Bedarf" ob der Prozess irgendwo hängt oder wie weit er ist (abhängig davon wie viel und was du loggst).

    💡 Kleiner Hinweis zu dieser Variante: Die eigentlich Verarbeitungszeit vergrößert sich damit auch etwas, da natürlich der Schreibvorgang in die Datei ein wenig Zeit in Anspruch nimmt. Allerdings für solche unkritischen Anforderungen kein Problem meiner Meinung nach.

    Viele Grüße
    Sven

  • Button / Icons aus DB bzw. Array erstellen

    • SOLVE-SMART
    • 17. März 2023 um 16:03

    Hi gmmg ,

    ist der zweite Parameter iconName, der Funktion GUICtrlCreateIcon() gewollt die Zahl 25 (in Zeile 44) oder nicht?

    Ansonsten ist es auch noch hilfreich, wenn du uns die beiden UDFs noch zu Verfügung stellst, damit man auch wirklich testen kann 😉 .

    AutoIt
    #include <D:\Scripte\MS_AccessCom\Access UDF\Access_UDF.au3>
    #include <D:\Scripte\ArrayMultiColSort\ArrayMultiColSort.au3>

    Viele Grüße
    Sven

  • CSV Merge - zwei Dateien zusammenfügen

    • SOLVE-SMART
    • 16. März 2023 um 10:20

    Gute Wahl gmmg 👍 . Freut mich das dein Problem gelöst ist und wir in diesem Thread mehrere Varianten (Lösungsmöglichkeiten) dazu beleuchtet haben 😀 .

    Viele Grüße
    Sven

  • Farben Sortieren / Gruppieren

    • SOLVE-SMART
    • 15. März 2023 um 07:08
    Zitat von UEZ

    Ich habe ein kleines Tool geschrieben, das eine Textdatei einliest (<Name der Farbe;Hex Code>) und sie in einer Listview farbig darstellt. Manchmal suche ich nach einer bestimmten Farbe und wenn die Liste unsortiert ist, dann ist das nicht so optimal, um die Farbe zu finden.

    Interessanter Anwendungsfalls, Danke dir UEZ .

    Zitat von UEZ

    Außerdem ist das ein interessantes Thema . ;)

    Finde ich gut 😊 .

    Ist die Pixelbreite der einzelnen Farbe bzw. die Darstellung, abhängig von der Gesamtbreite der GUI? Also falls die einzelne Farbe ein Pixel breit sein sollte, skaliert diese Breite bei resize der GUI? Ich habe mir den Code nicht genau angeschaut, muss ich zugeben. Vielleicht könnte ich es auch dort erfassen - sind nun aber nicht gerade nur 50 Zeilen Code, daher frage ich lieber direkt UEZ.

    Viele Grüße
    Sven

  • Auf eine bestimmte Stelle klicken, wenn ein bestimmtes Fenster erscheint

    • SOLVE-SMART
    • 14. März 2023 um 15:27
    Zitat von f705185@rppkn.com

    Wahrscheinlich irritiert den das, dass beide Fenster den gleichen Titel oder so haben.

    Warum sagst du das nicht gleich! Ja das ist sicherlich ein Grund, neben den anderen Hinweis den ich oben geschrieben hatte:

    Zitat

    💡 Im zweiten Parameter "text" welcher bei WinExists, WinActivate und WinWaitActivate optional ist, darf die Klasse nicht rein.

    Zitat von f705185@rppkn.com

    Ich bedanke mich nochmals sehr bei dir für deine Zeit & Mühen!

    Alles klar, vielleicht hat noch jemand anders Zeit und Ambition dir hierbei zu helfen. Man kann auch bei gleichnamigen Titeln, dass "richtige" auswählen, aber ohne es bei mir testen zu können, macht dies für mich keinen Sinn. Daher bin ich raus.

    Alles Gute dir.

    Viele Grüße
    Sven

  • Farben Sortieren / Gruppieren

    • SOLVE-SMART
    • 14. März 2023 um 15:18

    Hi UEZ ,

    das sieht sehr vielversprechend aus, doch weiß ich ehrlich nicht genau welcher Anwendungsfall dahinter steckt bzw. welche es geben kann?
    Hilfst du mir da bitte mal auf die Sprünge, dann kann ich ggf. auch Ideen/Wünsche/Überlegungen einbringen 🤝 .

    Danke dir.

    Viele Grüße
    Sven

  • Auf eine bestimmte Stelle klicken, wenn ein bestimmtes Fenster erscheint

    • SOLVE-SMART
    • 14. März 2023 um 15:08
    Zitat von f705185@rppkn.com

    Folgendes habe ich probiert, vielleicht kannst du ja direkt den Fehler erkennen:

    Also du willst in der Schleife immer und immer wieder AnyDesk in den Vordergrund bringen und dann "Annehmen" klicken, egal ob das bereits passiert ist.
    Das wird so nicht funktionieren.

    💡 Im zweiten Parameter "text" welcher bei WinExists, WinActivate und WinWaitActivate optional ist, darf die Klasse nicht rein.

    Kannst du bitte mal diese Version an Code ausprobieren:

    AutoIt
    #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
    #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
    #AutoIt3Wrapper_Run_Au3Stripper=y
    #AutoIt3Wrapper_UseUpx=n
    #Au3Stripper_Parameters=/sf /sv /mo /rm /rsln
    
    ; ESC = Raus aus der Schleife. Setze die Taste oder Tastenkombination deiner Wahl.
    HotKeySet('{ESC}', '_Exit')
    
    Global $bScriptShouldEnd = False
    
    _Actions()
    
    Exit
    
    Func _Exit()
        $bScriptShouldEnd = True
    EndFunc
    
    Func _Actions()
        Local $mAnyDesk[]
    
        $mAnyDesk.ProcessName  = 'AnyDesk.exe'
        $mAnyDesk.FilePath     = 'C:\Program Files (x86)\AnyDesk\AnyDesk.exe'
        $mAnyDesk.WindowTitle  = 'AnyDesk'
        $mAnyDesk.AcceptButton = '[CLASS:basic_button#9; INSTANCE:1]'
    
        While Not $bScriptShouldEnd
            If Not ProcessExists($mAnyDesk.ProcessName) Then
                Run($mAnyDesk.FilePath)
            EndIf
    
            If Not _IsWindowInForegroundWithinThreeSeconds($mAnyDesk.WindowTitle) Then
                ContinueLoop
            EndIf
    
            ControlClick($mAnyDesk.WindowTitle, '', $mAnyDesk.AcceptButton)
    
            Sleep(500)
        WEnd
    EndFunc
    
    Func _IsWindowInForegroundWithinThreeSeconds($sWindowTitle)
        Local Const $iTimeout = 3
    
        If Not WinWaitActive($sWindowTitle, '', $iTimeout) Then
            Return False
        EndIf
    
        Return True
    EndFunc
    Alles anzeigen

    Ich gehe hier davon aus, dass ein Fenster mit Titel "AnyDesk" aufpoppt und erst wenn dieses aufpoppt/aktiv/im Vordergrund ist, dann wird der Button "Annehmen" gewählt.

    Viele Grüße
    Sven

  • Auf eine bestimmte Stelle klicken, wenn ein bestimmtes Fenster erscheint

    • SOLVE-SMART
    • 14. März 2023 um 14:07

    Falls das folgende nicht den Klick durchführt, dann wechsle im Au3Info Tool mal auf den Reiter Control und nutze ggf. die Advanced Mode (dort doppel-klicken und einfügen).

    ControlClick('AnyDesk', '', '[CLASS:basic_button#9]')

    Allerdings muss ich sagen, dass ich dir bereits im Beitrag #2 gesagt hatte, dass du die Hilfe mal bemühen solltest, denn aus dem Beispiel dort wäre genau dies auch hervorgegangen 🧐 .

    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™