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

Beiträge von Friesel

  • Einzelne Werte im Array nacheinander im Seitenquelltext einer Webseite suchen

    • Friesel
    • 21. August 2013 um 01:01

    Moin!

    Da alle Informationen aus dem Quelltext bezogen werden können, halte ich deinen Ansatz mit der seperaten Datei für ziemlich umständlich.

    Es gibt natürlich etliche Methoden die Daten auszulesen.
    In diesem Skript werden alle verfügbaren Spielanalysen pro Spieltag auf einmal geladen (erste/dritte Liga funktioniert ebenfalls):

    [autoit]

    #include <Array.au3> ;==> wird nur zur Anzeige der Arrays benötigt
    #include <String.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $sHTMLSourceSpieltag, $aAllePartien

    [/autoit][autoit][/autoit][autoit]

    ;$sHTMLSourceSpieltag = InetRead("http://www.kicker.de/news/fussball/bundesliga/spieltag/1-bundesliga/2013-14/spieltag.html", 1) ;erste Liga
    ;$sHTMLSourceSpieltag = InetRead("http://www.kicker.de/news/fussball/3liga/spieltag/3-liga/2013-14/spieltag.html", 1) ;dritte Liga
    $sHTMLSourceSpieltag = InetRead("http://www.kicker.de/news/fussball/2bundesliga/spieltag/2-bundesliga/2013-14/spieltag.html", 1) ;2te Liga
    $sHTMLSourceSpieltag = BinaryToString($sHTMLSourceSpieltag, 1)

    [/autoit][autoit][/autoit][autoit]

    $aAllePartien = StringRegExp($sHTMLSourceSpieltag, '<td><a class="link" href="(.*)">Analyse</a></td>', 3) ;==> es gibt auch "Spielbericht", die Seite enthält aber keine Wertungen
    ;_ArrayDisplay($aAllePartien) ;==> das Array enthält die Links zu allen Spielanalysen

    [/autoit][autoit][/autoit][autoit]

    _AnalyseIt()

    [/autoit][autoit][/autoit][autoit]

    Func _AnalyseIt()
    Local $iPartie, $sHTMLSourcePartie, $aMannschaften, $aAufstellungBlock, $iTeam, $aSpieler
    For $iPartie = 0 To UBound($aAllePartien) - 1
    $sHTMLSourcePartie = InetRead('http://www.kicker.de' & $aAllePartien[$iPartie])
    $sHTMLSourcePartie = BinaryToString($sHTMLSourcePartie, 1) ;UMLAUTE!!!
    $sHTMLSourcePartie = StringReplace($sHTMLSourcePartie, '&nbsp;', ' ') ;==> "geschützte" Leerzeichen entfernen

    [/autoit][autoit][/autoit][autoit]

    ;==> liest ALLE Spieler in ein Array
    ;$aSpieler1 = StringRegExp($sHTMLSourcePartie, '.html">([\wÄäÖöÜüßÁÀáàÉÈéè\-. ]*)</a> \((\d,*\d*)\)', 3) ;==> "ÄäÖöÜüßÁÀáàÉÈéè" -> weitere Umlaute bei Bedarf einfügen
    ;_ArrayDisplay($aSpieler1)

    [/autoit][autoit][/autoit][autoit]

    ;==> trennt nach Mannschaften. Jede Mannschaft hat ihr eigenes Array (siehe Titel bei _ArrayDisplay Zeile 35)
    $aMannschaften = StringRegExp($sHTMLSourcePartie, '<th class="first alignleft">([\wÄäÖöÜüß\-. ]*)</th>', 3)
    _ArrayDisplay($aMannschaften, "Partie Nr. " & $iPartie + 1)

    [/autoit][autoit][/autoit][autoit]

    $aAufstellungBlock = _StringBetween($sHTMLSourcePartie, '<div><b>Aufstellung:', '<div class="sep13"></div>') ;==> Ein Block pro Mannschaft

    [/autoit][autoit][/autoit][autoit]

    For $iTeam = 0 To 1 ;oder 0 To Ubound($aAufstellungBlock) - 1
    $aSpieler = StringRegExp($aAufstellungBlock[$iTeam], '.html">([\wÄäÖöÜüßÁÀáàÉÈéè\-. ]*)</a> \((\d,*\d*)\)', 3) ;==> "ÄäÖöÜüßÁÀáàÉÈéè" -> weitere Umlaute bei Bedarf einfügen
    _ArrayDisplay($aSpieler, $aMannschaften[$iTeam])
    Next
    Next
    EndFunc ;==>_AnalyseIt

    [/autoit]


    Sanfte Grüße :D

  • Windows Standardschrift auslesen

    • Friesel
    • 19. August 2013 um 18:33

    Moin!

    Alle benötigten Informationen solltest du in folgendem Registry Schlüssel auslesen können:

    Code
    HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics

    Um Controls an die verwendete Schriftart/-größe anzupassen gibt es schon die UDF StringSize, die auch ziemlich gut funktioniert...


    Sanfte Grüße :D

  • Ich weis nicht wie ich Controlclick anwenden muss

    • Friesel
    • 16. August 2013 um 08:37

    Moin!

    Viel eleganter und vor allem sauberer läßt sich CCleaner über die command-line steuern.
    Hier findest du eine liste der verfügbaren Parameter: CCleaner command-line parameters

    Um zum Beispiel CCleaner im Hintergrund mit den voreingestellen Optionen auszuführen, genügt folgender Befehl:

    [autoit]

    ShellExecute("~Dein Installations Pfad~\CCleaner.exe", "/AUTO")

    [/autoit]


    Falls du mehrere Aktionen ausführen willst, solltest du diese Zeile benutzen:

    [autoit]

    ShellExecuteWait("~Dein Installations Pfad~\CCleaner.exe", "/AUTO")

    [/autoit]


    Sanfte Grüße :D

  • Filefindfirstfile findet bestimmte .lnk nicht

    • Friesel
    • 11. August 2013 um 19:12
    Zitat von chakratos

    Richtig den 2. pfad meinte ich leider erkennt mein Programm es nicht wenn sich Dateien in diesem Ordner befindens


    Den Pfad solltest du eigendlich mit dem Macro @DesktopDir ansprechen können:

    [autoit]

    ConsoleWrite(@DesktopDir)

    [/autoit]


    Ansonsten sieh dir mal die restlichen Macros an, ob was für dich dabei ist. Wenn da nichts passendes ist, kannst du den Pfad ja auch "von Hand" übergeben...

    *edit*
    James: Jo, ist mir auch grad aufgefallen, dass ich das falsche Macro genommen hab. Copy/Paste Fail ;(

    @DesktopCommonDir ist natürlich richtig...

  • Filefindfirstfile findet bestimmte .lnk nicht

    • Friesel
    • 11. August 2013 um 17:59
    Zitat von chakratos


    [...] die dateien wurden auf dem desktop angezeigt waren aber eigentlich garnicht da sondern in einem anderen desktop ordner unter Benutzer/öffentlich [...]


    Windows 7: Pfad zum Desktop

  • Filefindfirstfile findet bestimmte .lnk nicht

    • Friesel
    • 11. August 2013 um 16:37

    Moin!

    Ich würde die Funktion _FileListToArray verwenden. Damit hast du sofort die Namen aller Dateien in einem praktischen Array, das du dann weiter verarbeiten kannst.

    Auf jeden Fall kannst folgendes Snippet zum debuggen nehmen, um zu sehen, ob irgend eine Datei nicht erkannt wird:

    [autoit]

    #include<Array.au3>
    #include <File.au3>

    [/autoit][autoit][/autoit][autoit]

    $lnk = _FileListToArray(@DesktopDir)
    _ArrayDisplay($lnk)

    [/autoit]


    Sanfte Grüsse :D

  • frage zu ping- shutdown

    • Friesel
    • 9. August 2013 um 09:32
    Zitat von xsibit666

    Wieso traurige warheit ? Und warum gruselig ?

    Da hab ich vieleicht ein bisschen überreagiert, sorry.
    Tatsache ist aber, dass Leerzeichen in Dateinamen und Pfaden lästig sind und nur zu Problemen führen (und auch schon mal zu Missverständnissen - siehe oben).
    Kannst ja mal nach "leerzeichen im pfad" googeln oder auch dieses Forum danach durchsuchen, dann verstehst du evtl. was ich meine.

  • frage zu ping- shutdown

    • Friesel
    • 8. August 2013 um 15:54
    Zitat von misterspeed
    [autoit]

    ShellExecute ("restart twonky server.exe")

    [/autoit]


    Das funktioniert so ganz sicher nicht, denn Shellexecute erwartet Parameter als Funktionsparameter. Davon ab kennt Windows keinen Befehl namens "restart", kann also überhaupt nicht klappen.


    Ich denke, die traurige Wahrheit ist, dass "restart twonky server.exe" eine einzige Datei mit Leerzeichen im Dateinamen ist. Ist zwar erlaubt, aber echt gruselig ;(

  • frage zu ping- shutdown

    • Friesel
    • 8. August 2013 um 05:40
    Zitat von xsibit666

    [...] das script springt trotz ausgefürter ping zum 2ten teil [...]

    Ist logisch, weil ExitLoop die For/Next Schleife verläßt.

    Zitat von xsibit666

    [...] und will das script mit shutdown enden [...]

    Ist auch logisch, weil auch im Falle von $bAwake = True nur die Anweisung Sleep(60000) nicht ausgeführt wird.
    Der Rest wird ganz normal abgearbeitet, weil es sich nicht innerhalb der If/Then Abfrage befindet.

    Du weißt schon, dass du durch bloßes Einrücken keine Schleife erzeugst? :rofl:
    Sorry, nur ein kleiner Scherz auf deine Kosten...

    Die If/Then Abfrage muß natürlich so aussehen:

    [autoit]

    If $bAwake = False Then
    Sleep(60000)
    ShellExecute("restart twonky server.exe")
    Sleep(3000)
    Shutdown(64); nach dem Aufwachen oder bei erfolgreichen Pings erstmal schlafen, bevor wieder geprüft wird, das lässt dir Zeit das Script zu beenden, sofern notwendig
    EndIf

    [/autoit]


    Das Skript selber habe ich nicht getestet, aber es sieht beinahe so aus, als könnte es funktionieren :whistling:


    Sanfte Grüße :D

  • GUIRegisterMsg($WM_KEYDOWN, ...) funktioniert nicht. KEYUP geht.

    • Friesel
    • 4. August 2013 um 06:20

    Dieses Subclassing ist ne tolle Sache. Kannte ich bisher noch garnicht :thumbup:

    Allerdings wird nun die Tastatur systemweit überwacht.
    Man sollte also am Anfang der Funktion _KeyProc noch den Status des Programmfensters abfragen.

    Etwas in der Art:

    [autoit]

    If WinActive($GUI) = 0 Then Return

    [/autoit]
  • GUIRegisterMsg($WM_KEYDOWN, ...) funktioniert nicht. KEYUP geht.

    • Friesel
    • 4. August 2013 um 01:36
    Zitat von mchope57

    Bei Friesel hat es geklappt, hab auch gegoogelt aber nichts dazu gefunden.


    Also dieses Skript hier funtioniert bei mir auch nicht, Das liegt aber an der Enter-Taste.
    Wenn du zB die Leertaste (0x20) abfragst funktionierts. Allerdings musst du außerdem noch MsgBox durch ConsoleWrite ersetzen, weil die Message Box die Abfrage blockiert.

    Da musst du dir wohl nen Workaround mit HotKeySet oder GUISetAccelerators zusammenklöppeln...

    *edit*
    WM_COMMAND abfangen wäre hier erste Wahl, würde ich sagen...

    [autoit]

    Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    ;ConsoleWrite("|$hWnd: " & $hWnd & " |$Msg: " & $Msg & " |$wParam: " & $wParam & " |$lParam: " & $lParam & @CRLF)
    Switch $wParam
    Case 0
    ConsoleWrite("Enter wurde losgelassen." & @CRLF)
    Case 1
    ConsoleWrite("Enter wurde gedrück." & @CRLF)
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]
  • INI Benutzerinfo in Script integrieren

    • Friesel
    • 1. August 2013 um 12:29

    Moin!

    Du kannst die Passwörter in der INI mit dem Befehl _StringEncrypt verschlüsseln.
    Dann steht zwar das Passwort zum Entschlüsseln im Klartext im Skript, aber wenn du das noch zusätzlich mit Obfuscator kompilierst, ist es relativ sicher.


    Sanfte Grüße :D

  • Shellexecute und RUN unter Windows 7

    • Friesel
    • 1. August 2013 um 11:12

    Wie siehts mit folgenden Varianten aus:

    [autoit]

    Run("C:\ProgrammPfad\Programm.exe" & " " & "C:\Temp\SPS.d3l")
    ShellExecute("C:\ProgrammPfad\Programm.exe", "C:\Temp\SPS.d3l")
    Run("explorer.exe" & " " & "C:\Temp\SPS.d3l")
    ShellExecute("explorer.exe", "C:\Temp\SPS.d3l")

    [/autoit]

    Was passiert, wenn du folgendes genau so im Command Prompt startest bzw, wenn du die Zeile ins Adressfeld des Explorers (nicht IE) einfügst und <Enter> drückst?
    Nuja, das sollte gehn, ich würde es aber trotzdem mal durchführen :whistling:

    Code
    "C:\Temp\SPS.d3l"
  • Problem mit FileSetTime

    • Friesel
    • 31. Juli 2013 um 11:50
    Zitat von ky1

    Gibt es Alternativen zu FileSetTime, z.B. über die Kommandozeile?


    Also wenn wirklich nichts geht, hätte ich noch ne relativ alberne Lösung, die aber funktioniert.
    Systemdatum mit _SetDate ändern (evtl. auch _SetTime wenns ganz genau sein soll), Dateien in ein neues Verzeichnis kopieren, wodurch diese das zuvor geänderte Systemdatum als Erstelldatum übernehmen, Systemdatum zurückstellen.
    Wie gesagt, ist ein bisschen albern und mit nem gewaltigen Holzhammer, aber als letzten Ausweg kann mans in Betracht ziehen :whistling:

    Spoiler anzeigen
    [autoit]

    #RequireAdmin

    [/autoit] [autoit][/autoit] [autoit]

    #include <Date.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $sRealDatum = @MDAY & "." & @MON & "." & @YEAR
    $aRealDatum = StringSplit($sRealDatum, ".", 2)

    [/autoit] [autoit][/autoit] [autoit]

    $sZielDatum = "01.04.1999"
    $aZielDatum = StringSplit($sZielDatum, ".", 2)

    [/autoit] [autoit][/autoit] [autoit]

    $bZielDatum = _SetDate($aZielDatum[0], $aZielDatum[1], $aZielDatum[2])
    If $bZielDatum <> 1 Then MsgBox(0, "Fehler", "Fehler beim Ändern des SystemDatums")

    [/autoit] [autoit][/autoit] [autoit]

    $sPath = "C:\<Dein Fotoverzeichnis>"
    $sSource = $sPath & "\Orginaldatei.jpg"
    $sDestination = $sPath & "\NeuesVerzeichnis" & "\Orginaldatei.jpg"
    $bCopy = FileCopy($sSource, $sDestination, 9)
    If $bCopy <> 1 Then MsgBox(0, "Fehler", "Fehler beim Kopieren der Datei" & @CRLF & $sDestination)

    [/autoit] [autoit][/autoit] [autoit]

    $bRealDatum = _SetDate($aRealDatum[0], $aRealDatum[1], $aRealDatum[2])
    If $bRealDatum <> 1 Then MsgBox(0, "Fehler", "Fehler beim Ändern des SystemDatums")

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit]


    *edit*
    Bin eben noch über 'nen anderen Befehl gestolpert den ich aber noch nicht getestet habe: _Date_Time_SetFileTime
    Falls der aber auch Ärger macht, gibs immer noch meine Methode... 8)


    Sanfte Grüße :D

  • Nur .jpg - Dateien finden

    • Friesel
    • 28. Juli 2013 um 12:19

    Moin!

    Ich würde _FileListToArray verwenden.


    Als "Gerüst" solltest du folgende Befehle verwenden:

    [autoit]

    #include <File.au3> ; benötigt für _FileListToArray

    [/autoit][autoit][/autoit][autoit]

    ; Quellverzeichnis wählen
    $sPathSource = FileSelectFolder("Ordner wählen", "", 6)
    ; alle vorhandenen JPG's in Array einlesen
    $aScan = _FileListToArray($sPathSource, "*.jpg")
    ; Zielverzeichnis wählen
    $sPathTarget = FileSelectFolder("Ordner wählen", "", 7)
    ; Dateien kopieren
    For $i = 1 To $aScan[0]
    $sPathSourceFull = $sPathSource & "\" & $aScan[$i]
    $bMove = FileMove($sPathSourceFull, $sPathTarget, 9) ;==> bestehende Dateien werden ungefragt überschrieben (Flag 8 oder 0 für nicht überschreiben)
    Next

    [/autoit]
  • RegEx für Dateinamen mit Jahresangaben

    • Friesel
    • 28. Juli 2013 um 00:30

    Es wäre von Vorteil gewesen, wenn du einen "echten" oder zumindest einen repräsentativen Datensatz angegeben hättest, aber so ist es leider (wie so oft) nur ein Stochern im Dunkeln...
    Wird der String Zeilenweise geliefert, oder wie in meinem Beispiel alle Zeilen in einer Variablen?

    *edit*
    Sorry, da hab ich wohl ein bisschen zu sehr quergelesen :S
    Habe echt übersehen, dass es sich hier um Dateinamen handelt.

    Wie auch immer, hier mal zwei Beispiele für beide Fälle mit StringSplit:
    Nuja, vieleicht kannst du ja trotzdem mit Stringsplit was anfangen:

    Spoiler anzeigen
    [autoit]

    #include <array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;==> Zeilenweise
    $sString = "Dätéi Nôme 08/15 (2012) {Info Bla Bla}"

    [/autoit] [autoit][/autoit] [autoit]

    $aSplit = StringSplit($sString, "({")
    _ArrayDisplay($aSplit, "Zeilenweise")

    [/autoit] [autoit][/autoit] [autoit]

    _GetIt()

    [/autoit] [autoit][/autoit] [autoit]

    ;==> All in one mit Zeilenumbruch als Trenner
    $sString = "Dateiname1 (2012) {Info}" & @CRLF & _
    "Datèiname 2 {Info Bla}" & @CRLF & _
    "Dateinôme 08/15 (01/04/2012)" & @CRLF & _
    "Datéina me4 {Info} (01.04.2012)" & @CRLF & _
    "Dateinäm e5" & @CRLF & _
    "D ateinöme6"

    [/autoit] [autoit][/autoit] [autoit]

    $aSplit = StringSplit($sString, "({" & @CRLF)
    _ArrayDisplay($aSplit, "All in one")

    [/autoit] [autoit][/autoit] [autoit]

    _GetIt()

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetIt()
    Local $iCount, $sSpalte, $aLabels[3] = ["Dateiname:" & @TAB, "Jahr:" & @TAB & @TAB, "Info:" & @TAB & @TAB]
    Do
    $iCount += 1

    [/autoit] [autoit][/autoit] [autoit]

    If StringInStr($aSplit[$iCount], ")") Then
    $sStripped = StringTrimRight(StringStripWS($aSplit[$iCount], 2), 1) ; überflüssge Zeichen entfernen
    $sSpalte &= $aLabels[1] & $sStripped & @CRLF
    ElseIf StringInStr($aSplit[$iCount], "}") Then
    $sStripped = StringTrimRight(StringStripWS($aSplit[$iCount], 2), 1) ; überflüssge Zeichen entfernen
    $sSpalte &= $aLabels[2] & $sStripped & @CRLF
    ElseIf $aSplit[$iCount] <> "" Then
    $sStripped = StringStripWS($aSplit[$iCount], 2) ; überflüssge Zeichen entfernen
    $sSpalte &= $aLabels[0] & $sStripped & @CRLF
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $aSplit[$iCount] = "" Or $iCount = $aSplit[0] Then
    MsgBox(0, "", $sSpalte)
    $sSpalte = ""
    EndIf
    Until $iCount = $aSplit[0]
    EndFunc ;==>_GetIt

    [/autoit]
  • Desktop Hintergrund wechseln

    • Friesel
    • 27. Juli 2013 um 18:31
    Zitat von Chaspel

    Wie wärs mit mit einer Abkühlung im Pool? :D


    Abgemacht! Ich bring' die Getränke, du den Pool 8)

  • Desktop Hintergrund wechseln

    • Friesel
    • 27. Juli 2013 um 17:53
    Zitat von Chaspel

    Wie kann ich das einstellen, dass das Bild immer als Angepasst eingebunden wird?

    Das sollte über die Option WallpaperStyle zu regeln sein:

    Hab ein englisches Windows, aber das zu übersetzen schaft man auch mit Vorschulenglisch :D
    Fill = 10
    Fit = 6
    Stretch = 2

    [autoit]

    RegWrite('HKEY_CURRENT_USER\Control Panel\Desktop', 'WallpaperStyle', 'REG_SZ', 6)

    [/autoit]


    Zitat von Chaspel

    Wünsche noch ein schönes heißes Sommerwochenende


    Schön und heiß schliessen sich leider gegenseitig aus...ich geh kaputt hier ;(

  • RegEx für Dateinamen mit Jahresangaben

    • Friesel
    • 27. Juli 2013 um 16:56

    Hallo!

    Im Sinne der heiligen Vielfalt, hier mein Vorschlag:

    Einen Regex Pattern hab ich dir zwar nicht zu bieten, aber wenn deine Daten immer genau so angeortnet sind, wie du es oben vorgibst, funktioniert meine Lösung auch.

    Voraussetzung ist, dass jede Zeile durch einen Zeilenumbruch abgeschlossen ist.
    Getrennt wird entweder bei einem Leerzeichen oder bei am Zeilenende. Danach gibt es einen leeren Eintrag im Array, der sich als Delimiter zwischen den Datensätzen eignet.

    Der String muß so aussehen, wie du es vorgegeben hast. Sollten dort noch andere Informationen enthalten sein, funktioniert es nicht. Ich gehe ausserdem davon aus, dass das Datum immer von normalen und die Info immer von geschweiften Klammern umschlossen ist.

    Die Auswertung in der Funktion GetIt() ist nur provisorisch und schnell mal hingeschmiert. Die Reihenfolge von (Jahr) und {Info} ist beliebig, da der Typ erkannt wird. Aber da wird dir bestimmt was eleganteres einfallen...

    Spoiler anzeigen
    [autoit]

    #include <array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $sString = "Dateiname1 (2012) {Info}" & @CRLF & _
    "Dateiname2 {Info}" & @CRLF & _
    "Dateiname3 (2012)" & @CRLF & _
    "Dateiname4 {Info} (2012)" & @CRLF & _
    "Dateiname5"

    [/autoit] [autoit][/autoit] [autoit]

    $aSplit = StringSplit($sString, " " & @CRLF)
    _ArrayDisplay($aSplit)

    [/autoit] [autoit][/autoit] [autoit]

    _GetIt()

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetIt()
    Local $iCount, $sSpalte, $aLabels[3] = ["Dateiname:" & @TAB, "Jahr:" & @TAB & @TAB, "Info:" & @TAB & @TAB]
    Do
    $iCount += 1

    [/autoit] [autoit][/autoit] [autoit]

    If StringInStr($aSplit[$iCount], "(") Then
    $sStripped = stringtrimright(StringTrimLeft($aSplit[$iCount], 1), 1)
    $sSpalte &= $aLabels[1] & $sStripped & @CRLF
    ElseIf StringInStr($aSplit[$iCount], "{") Then
    $sStripped = stringtrimright(StringTrimLeft($aSplit[$iCount], 1), 1)
    $sSpalte &= $aLabels[2] & $sStripped & @CRLF
    ElseIf $aSplit[$iCount] <> "" Then
    $sSpalte &= $aLabels[0] & $aSplit[$iCount] & @CRLF
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $aSplit[$iCount] = "" Or $iCount = $aSplit[0] Then
    MsgBox(0, "", $sSpalte)
    $sSpalte = ""
    EndIf
    Until $iCount = $aSplit[0]
    EndFunc ;==>_GetIt

    [/autoit]


    Sanfte Grüße :D

  • Einfache Lösung für das Abspielen eines mp4-Videos

    • Friesel
    • 23. Juli 2013 um 23:17

    Neben dem was PainTain schreibt, mußt du auch die Benutzung von Leerzeichen beachten.

    Hab mal ein kurzes Skript zur Erklärung geschrieben (Anmerkungen aufmerksam lesen):

    [autoit]

    $vlc = '"' & RegRead("HKLM\Software\VideoLAN\VLC\", "InstallDir") & '\vlc.exe' & '"' ;==> sorgt für "Allgemeingültigkeit (außer natürlich, VLC wurde portabel "installiert")
    If @error Then
    MsgBox(0, "Fehler!", "VLC Installationsverzeichnis nicht gefunden!")
    Exit
    EndIf

    [/autoit][autoit][/autoit][autoit]

    $film = '"' & @ScriptDir & "\video\For_hes_a_jolly_good_fellow.mp4" & '"' ;==> Ohne '"' werden Pfade mit Leerzeichen nicht erkannt (Pfade werden am Leerzeichen abgeschnitten)
    $parameter = " -vvv " ;==> Leerzeichen beachten

    [/autoit][autoit][/autoit][autoit]

    ConsoleWrite($vlc & $parameter & $film) ;==> TIP: funktioniert etwas nicht, Konsolenausgabe in Cmd Line einfügen, Enter drücken und Fehlermeldungen lesen

    [/autoit][autoit][/autoit][autoit]

    ShellExecuteWait($film) ; funktioniert, ruft aber das Programm auf, das im System dem Dateitypen zugeortnet ist (dein Default-Player)
    ShellExecuteWait($vlc & $parameter & $film) ; funktioniert nicht ==> siehe Beitrag von misterspeed unterhalb
    RunWait($vlc & $parameter & $film) ; funktioniert

    [/autoit][autoit][/autoit][autoit]

    ; nachdem das VLC Fenster geschlossen wurde, kann hier weiterer Code verarbeitet werden...
    ; TIP: VLC Menü -> Extras -> Einstellungen -> Einstellungen zeigen -> alle -> Wiedergabeliste -> Abspielen und Beenden -> Haken setzen
    ; ==> VLC wird nach Abspielen des Videos/der Wiedergabeliste automatisch beendet und dein Programm wird fortgesetzt

    [/autoit][autoit][/autoit][autoit]

    Exit

    [/autoit]

    Nachtrag:

    Der Parameter für Vollbild ist -f bzw. --fullscreen

    [autoit]

    $parameter = " -f " ;==> Leerzeichen beachten

    [/autoit]

    *edit*
    natürlich hat misterspeed unterhalb mal wieder recht :thumbup:
    Mir gings aber in erster Linie darum, den Unterschied zwischen den beiden Befehlen bei Verwendung der gleichen Befehlszeile zu zeigen.
    An ein funktionierendes Äquivalent für ShellExecuteWait hatte ich schlichtweg nicht mehr gedacht...

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™