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
Beiträge 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 -
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: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 -
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 -
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 -
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:
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 -
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 -
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 -
Hier das abgeänderte Skript von UEZ , damit es zumindest lauffähig (unter Win10 mit AutoIt v3.3.16.1) ist.
AutoIt
Alles anzeigen#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💡 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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 .
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 -
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.
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 -
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 -
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
Alles anzeigen#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 EndFuncIch 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 -
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