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

Beiträge von Moombas

  • FFplay AutoitKonsole auslesen

    • Moombas
    • 13. Mai 2024 um 13:53

    Auch passen da einige Local/Global Zuweisungen nicht.

    Vom Prinzip würde ich denken das es so funktionieren müsste, bin mir aber nicht sicher da ich wie gesagt nicht testen kann:

    AutoIt
    Opt('MustDeclareVars', 1)
    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <GuiEdit.au3>
    
    Global $PID_ff, $Time
    Global $hGUI = GUICreate("Spieldauer anzeigen", 1000, 500, -1, -1)
    Global $StartButton = GUICtrlCreateButton("Video wählen", 10, 10, 100, 30)
    Global $laufendeabspielzeit = GUICtrlCreateInput("", 120, 15, 100, 20, $ES_READONLY)
    Global $Filmdauer = GUICtrlCreateInput("", 230, 15, 100, 20, $ES_READONLY)
    
    Global $Edit1 = GUICtrlCreateEdit("", 10, 50, 980, 440)
    GUICtrlSetData(-1, "")
    _GUICtrlEdit_SetLimitText($Edit1, -1) ;kein Limit -1
    
    GUISetState(@SW_SHOW, $hGUI)
    
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                 Exit
    
            Case $StartButton
    			 $PID_ff = _Filmlaenge()
    
    		Case $laufendeabspielzeit
    
    		Case $Filmdauer
    
    		Case $Edit1
    
    		Case Else ;Die Zeit aktualisieren - ggf. zu häufig (10* je Sek.), bitte prüfen
    			 if not ProcessExists('ffprobe.exe') then Continueloop
    			 $Time = StringRegExp(StdoutRead($PID_ff), '^\d*.\d{2}', $STR_REGEXPARRAYMATCH)[0]
    			 If StringinStr($Time, 'A-V:') then GUICtrlSetData($laufendeabspielzeit, $Time)
        EndSwitch
        sleep(100); Offset für nicht zu häufiges Abfragen
    WEnd
    
    
    Func _Filmlaenge()
    Local $sFilmlaenge, $line, $filmlength = ""
    Local Const $sinput = @ScriptDir & "\film1.mp4" ; FileOpenDialog("Wähle ein Video aus", @ScriptDir, "Datei (*.mp4;*.*;*;)", 1)
    Local Const $iPID   = Run(@ComSpec & ' /c ffplay -stats ' & """" & $sinput & """", @ScriptDir, @SW_HIDE, $STDOUT_CHILD)
    Local Const $cmd    = 'ffprobe.exe ' & '"' & $sinput & '"' & ' 2>&1 | findstr Duration' ; ermittelt die Filmlänge des Filmes
    Local Const $handle = Run(@ComSpec & ' /c ' & $cmd, '', @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    
    	While True
    		$line = StdoutRead($handle)
    		If @error Then ExitLoop
    		$filmlength &= StringStripWS($line, 8)
    
    		$line &= StdoutRead($handle)
    	WEnd
    	ProcessWaitClose($handle)
    
    	$sFilmlaenge = StringRegExpReplace($filmlength, ".*Duration:(\d+:\d+:\d+).*", "$1") ; Extrahiere die Filmlänge
    	GUICtrlSetData($Filmdauer, $sFilmlaenge)
    
    	Return $iPID
    EndFunc
    Alles anzeigen
  • FFplay AutoitKonsole auslesen

    • Moombas
    • 13. Mai 2024 um 13:23

    Es ist so bekloppt wenn man nicht selber was zum Testen hat -.-

    Aber auf jedenfall macht Zeile 52 für mich keinen Sinn, da $line kein handle oder pid ist auf die man mit stdoutread zugreifen könnte, sondern nur Text.

  • FFplay AutoitKonsole auslesen

    • Moombas
    • 13. Mai 2024 um 12:28

    Musst du das nicht in deiner Schleife ändern/einbauen (Zeile 52)?

    AutoIt
    $Time = StringRegExp(StdoutRead($handle), '^\d*.\d{2}', $STR_REGEXPARRAYMATCH)[0]
    GUICtrlSetData($Edit1, $Time)
  • FFplay AutoitKonsole auslesen

    • Moombas
    • 13. Mai 2024 um 11:31

    Um aus deinem String nur die vorderen Zahlen zu bekommen, kannst du Stringsplit oder RegEx nutzen.

    AutoIt
    Opt('MustDeclareVars', 1)
    Global Const $String = '0.88 A-V: -0.021 fd= 0 aq= 9KB vq= 11KB sq= 0B f=0/0'
    
    Consolewrite(Stringsplit($String, ' ')[1] & @CRLF)
    AutoIt
    Opt('MustDeclareVars', 1)
    #include <Array.au3>
    Global Const $String = '0.88 A-V: -0.021 fd= 0 aq= 9KB vq= 11KB sq= 0B f=0/0'
    
    Consolewrite(StringRegExp($String, '^\d*.\d{2}', $STR_REGEXPARRAYMATCH)[0] & @CRLF)
  • Ordnerverzeichnis auslesen und in Array speichern, anschließendes weiterverarbeiten

    • Moombas
    • 13. Mai 2024 um 08:14

    Ich möchte eine Grundsatzfrage in den Raum werfen: Was willst du erreichen?

    Warum ich diese Frage stelle: Es gibt ggf. bessere Möglichkeiten als das über Mouseclicks zu lösen, wo du hier mit Koordinaten arbeiten musst, die auch noch Fehleranfällig sind (geänderte Bildschirmauflösung um nur mal 1 Beispiel zu nennen).

    Schau mal hier: https://wiki.mozilla.org/Firefox/Comman…le_profile_name

    Außerdem fehlt mir das .exe in Zeile 14 und der Pfad sollte in " gesetzt werden, also so: Run('"C:\Program Files\Mozilla Firefox\firefox.exe" -P')

    Aber ich denke du kannst das alles ohne Klicks aber über die CMD lösen und damit wesentlich besser und ohne die ganzen sleeps etc.

    QuD example:

    AutoIt
    #include <MsgBoxConstants.au3>
    #include <WinAPIFiles.au3>
    #include <File.au3>
    #include <Array.au3>
    
    ; Verzeichnis mit den Firefox-Portable-Ordnern
    Global Const $firefoxPortableDir = "R:\1\"
    
    ; Hotkey definieren
    HotKeySet("!e", "_ende")
    
    ; DIR-Liste erstellen und alphabetisch sortieren
    Global $dirList = _FileListToArray($firefoxPortableDir, "*", $FLTA_FOLDERS)
    _ArraySort($dirList, 1, 1) ; 1 für aufsteigende Sortierung, 0 für absteigende Sortierung, Start bei 1 mit der Sortierung, um in 0 die Anzahl zu erhalten
    
    For $Row = 1 to $dirList[0]
    	RunWait('"C:\Program Files\Mozilla Firefox\firefox" -no-remote -CreateProfile "' & $dirList[$Row] & '"')
    Next
    MsgBox($MB_ICONINFORMATION, "Fertig", "Profile wurden erfolgreich erstellt!")
    
    ; Funktion zum Beenden des Skripts
    Func _ende()
        Exit
    EndFunc
    Alles anzeigen

    Auf error handling konnte ich jetzt nicht eingehen, da ich nicht weiß was Firefox zurück gibt wenn es nicht geklappt hat das Profil zu erstellen, da ich es hier aktuell nicht testen kann.

  • Verknüpfungen erstellen

    • Moombas
    • 10. Mai 2024 um 08:57

    Eine Sache würde ich noch ändern:
    Eine finale Prüfung ob die Verknüpfungen wirklich erstellt wurden (das die Schleife durchläuft ist leider kein Erfolgsindikator).
    Man könnte das ganz noch weiter aufdröseln und direkt Listen welche Fehlgeschlagen sind aber ich denke das wäre hier zu viel des guten.

    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 <File.au3>
    #include <MsgBoxConstants.au3>
    
    _Main()
    
    Func _Main()
    Local $aFolders, $sLinkName, $sLink
    Local 		$iFails 			= 0
    Local Const $sFirefoxExe        = 'C:\Program Files\Mozilla Firefox\firefox.exe'
    Local Const $sSourceFolder      = 'E:\Portable\Browser\Firefox\'
    Local Const $sDestinationFolder = @DesktopDir & '\Firefox Profile\'
    
        If Not FileExists($sDestinationFolder) Then
            DirCreate($sDestinationFolder)
        EndIf
    
        ; Liste der Unterordner im Quellverzeichnis
        $aFolders = _FileListToArray($sSourceFolder, '*', $FLTA_FOLDERS)
    
        ; Schleife über alle Unterordner
        For $i = 1 To $aFolders[0]
            $sLinkName = $aFolders[$i] & '.lnk'
            $sLink     = $sDestinationFolder & $sLinkName
    
            ; Verknüpfung erstellen
            If FileCreateShortcut($sFirefoxExe, $sLink, $sFirefoxExe, '-P "' & $sLinkName & '"') <> 1 then $iFails += 1
        Next
    
    	If $iFails = 0 then 
    		MsgBox($MB_ICONINFORMATION, 'Fertig', 'Verknüpfungen wurden erstellt und im Zielverzeichnis abgespeichert.')
    	Else
    		MsgBox($MB_ICONWARNING    , 'Fertig', $iFails & ' Verknüpfungen konnten nicht erstellt und im Zielverzeichnis abgespeichert werden.')
    	EndIf
    EndFunc
    Alles anzeigen
  • Verknüpfungen erstellen

    • Moombas
    • 10. Mai 2024 um 08:19

    Das habe ich mir gedacht und deswegen dazu geschrieben.

  • Verknüpfungen erstellen

    • Moombas
    • 10. Mai 2024 um 07:58

    Dreh mal die Anführungszeichen um und da passt so oder so was nicht mit deiner Zeichensetzung (dein gepostetes Resultat kann da übrigens auch nicht stimmen!):

    "C:\Program Files\Mozilla Firefox\firefox.exe" & "'-P '" & "Onlineshop" -> C:\Program Files\Mozilla Firefox\firefox.exe'-P 'Onlineshop

    Versuchs mal so:

    '"C:\Program Files\Mozilla Firefox\firefox.exe" -P "' & 'Onlineshop' & '"' -> "C:\Program Files\Mozilla Firefox\firefox.exe" -P "Onlineshop"

    Nur mal als kurzer Blick ohne mir den Rest im Detail angeschaut zu haben.

  • WebDriver Projekt "au3WebDriver": Umfrage welche Browser/Driver du automatisierst/steuerst/testest?

    • Moombas
    • 10. Mai 2024 um 07:49

    Das ist klar, aber meistens möchte man ja etwas automatisieren, was nun mal viel genutzt wird.
    Und automatisiert wird in Unternehmen (ob per Tools oder GPO) und bisher war bei mir in den Unternehmen hauptsächlich Chrome oder Firefox im Einsatz. Da ichim engl. Forum aber nicht angemeldet bin, kann ich nicht mit abstimmen ;)

  • WebDriver Projekt "au3WebDriver": Umfrage welche Browser/Driver du automatisierst/steuerst/testest?

    • Moombas
    • 8. Mai 2024 um 12:34

    SOLVE-SMART : Sollte man das nicht eher anhand der Nutzung machen (https://de.statista.com/statistik/date…und%20Tablets).)?

    Also prio: 1. Chrome, 2. Edge, 3. Firefox

  • GUI - dynamische Button mit Daten aus DB erstellen

    • Moombas
    • 3. Mai 2024 um 13:21

    Ok, bin immer kein großer freund (außer bei GUI) von globalen Variablen und aus "geisterhand" wird eine solche geändert/verwendet.

  • GUI - dynamische Button mit Daten aus DB erstellen

    • Moombas
    • 3. Mai 2024 um 12:41

    Aber $sName wird doch nie gefüllt.

    Auch Zeile 15 macht keinen Sinn.

  • USB Gerät Power source Infos auslesen

    • Moombas
    • 2. Mai 2024 um 14:32

    @Bi-Nu: Gerade getestet am privaten PC (W11) mit meinem privaten (unmanaged) Smartphone: Keine Akkustatusanzeige o.ä.

    Und ich bekomme dort auch keine Daten zum Powerstate.

  • USB Gerät Power source Infos auslesen

    • Moombas
    • 2. Mai 2024 um 09:07

    Ggf. nicht, weil es ein verwaltetes Gerät ist ;)

    Aber das Prinzip soll nur zeigen wie du ggf. an die Infos kommst: per powershell was du wiederum über autoit dann ausführen kannst

  • USB Gerät Power source Infos auslesen

    • Moombas
    • 30. April 2024 um 15:25

    Über PS das richtige Gerät finden (bei mir ein Nokia 5.3, der freindlyname muss komplett bekannt sein) und die Daten dazu auswerfen:

    get-pnpdevice -class usbdevice -friendlyname 'Nokia 5.3' | Select-object -Property InstanceId | Get-pnpdeviceproperty

    Teste mal bitte welche Daten für dein Windowsphone hier zurück kommen, da sich meine Geräte unterschiedlich verhalten und Android hier keinen Akkustand mit zurückgibt und ich (zum Glück) kein Windows Phone hier habe.

  • USB Gerät Power source Infos auslesen

    • Moombas
    • 30. April 2024 um 14:50

    Im Prinzip musst du mit Win32_PortableBattery arbeiten, ich habe aber aktuell noch nichts gefunden diese in PS oder autoit aufzurufen.

  • USB Gerät Power source Infos auslesen

    • Moombas
    • 30. April 2024 um 13:06

    SOLVE-SMART : Hast doch mit deinem Link geholfen. Mit den Rückgabewerten der Funktion lässt sich über Monitoring das durchaus bewerkstelligen.

  • GUI - dynamische Button mit Daten aus DB erstellen

    • Moombas
    • 30. April 2024 um 12:53

    Kannst du das nicht auch ohne Switch machen?
    Das müsste ohne die Art und Weise zu ändern doch so gehen (Achtung wirklich kein schöner Code, nur zur Veranschaulichung):

    AutoIt
    Opt('MustDeclareVars', 1)
    #include <GUIConstantsEx.au3>
    #include <MsgBoxConstants.au3>
    
    Global $MainGUI, $SecGUI
    Example()
    
    Func Example()
            Opt("GUICoordMode", 2)
            Opt("GUIResizeMode", 1)
            Opt("GUIOnEventMode", 1)
    
            $MainGUI = GUICreate("Parent1")
            GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents")
            GUISetOnEvent($GUI_EVENT_MINIMIZE, "SpecialEvents")
            GUISetOnEvent($GUI_EVENT_RESTORE, "SpecialEvents")
    
            GUICtrlCreateButton("Second GUI", 10, 30, 50)
            GUICtrlSetOnEvent(-1, "OKPressed")
    
            GUISetState(@SW_SHOW)
    
            ; Just idle around
            While 1
                    Sleep(10)
            WEnd
    EndFunc   ;==>Example
    
    Func OKPressed()
    		$SecGUI = GUICreate("Second")
    		GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents")
            GUISetOnEvent($GUI_EVENT_MINIMIZE, "SpecialEvents")
            GUISetOnEvent($GUI_EVENT_RESTORE, "SpecialEvents")
    
            GUICtrlCreateButton("Cancel", 0, -1)
            GUICtrlSetOnEvent(-1, "CancelPressed")
    
            GUISetState(@SW_SHOW)
    EndFunc   ;==>OKPressed
    
    Func CancelPressed()
    	GUIDelete(@GUI_WinHandle)
    EndFunc   ;==>CancelPressed
    
    Func SpecialEvents()
            Select
                    Case @GUI_CtrlId = $GUI_EVENT_CLOSE
    						if @GUI_WinHandle = $MainGUI then
    							Exit
    						Else
    							GUIDelete(@GUI_WinHandle)
    						Endif
    
                    Case @GUI_CtrlId = $GUI_EVENT_MINIMIZE
                            MsgBox($MB_SYSTEMMODAL, "Window Minimized", "ID=" & @GUI_CtrlId & " WinHandle=" & @GUI_WinHandle)
    
                    Case @GUI_CtrlId = $GUI_EVENT_RESTORE
                            MsgBox($MB_SYSTEMMODAL, "Window Restored", "ID=" & @GUI_CtrlId & " WinHandle=" & @GUI_WinHandle)
    
            EndSelect
    EndFunc   ;==>SpecialEvents
    Alles anzeigen

    Sprich, du könntest immer im onevent mode bleiben.

  • USB Gerät Power source Infos auslesen

    • Moombas
    • 30. April 2024 um 07:55
    Zitat von SOLVE-SMART

    Update2: Für was brauchst du die Info? Wenn du ein Smartphone an den Rechner/Laptop anschließt, ist es doch immer Battery/Akku als Quelle oder nicht?

    Wenn man deinen Link sich anschaut, gibt es da garnicht so viele Möglcihkeiten für Power-Source (AC und Battery), dann nur mit mehr jeweiligen Hintergrundinfos z.B. ob das Gerät gerade geladen wird oder nicht etc..

  • GUI - dynamische Button mit Daten aus DB erstellen

    • Moombas
    • 29. April 2024 um 15:58
    Zitat von SOLVE-SMART

    Genau, siehe Antwort #26.

    Stimmt Zeile 60 würde sich hier anbieten, diesen um einen $Offset zu erweitern:

    AutoIt
    ;Zeile 44-45:
    Global Const $XOffset = 30
    Global Const $YOffset = 30
    
    ;Zeile 59-60:
    	$iButtonX = $iButtonXStep + $iPosX * ($iButtonWidth  + $iButtonXStep) + ($XOffset - $iButtonXStep) ; Falls man die 15 die schon gesetzt sin mit beachten will, sonst
    	$iButtonY = $iButtonYStep + $iPosY * ($iButtonHeight + $iButtonYStep) + ($YOffset - $iButtonYStep) ; das - des Buttonstep weg lassen

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™