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

Beiträge von ruby

  • FFplay AutoitKonsole auslesen

    • ruby
    • 14. Mai 2024 um 09:08

    Hi Moombas,

    auch Dir danke für Deine Mühe.

  • FFplay AutoitKonsole auslesen

    • ruby
    • 13. Mai 2024 um 19:56

    Hi Kanashius,

    man bist Du gut.
    Wahnsinn da werde ich mich ersteinmal durcharbeiten müssen.
    Melde mich dann noch einmal.
    Erst einmal vielen vielen Dank.

  • FFplay AutoitKonsole auslesen

    • ruby
    • 13. Mai 2024 um 15:59

    ja, die Whileschleife lauft bis zum Schluss.

    Tja, bei der MsgBox kommt nichts an.

    Schade das Du das anhand eine mp4 Datei nicht testen kannst.

  • FFplay AutoitKonsole auslesen

    • ruby
    • 13. Mai 2024 um 14:58

    Ok danke, aber die GUI schliesst sich immer noch.

    Habe festgestellt wenn man Opt('MustDeclareVars', 1) auskommentiert oder auf 0 bleibt die GUI sichtbar.

    Vieleicht noch einmal zu Verständniss:
    In dem Input $laufendeabspielzeit soll die laufende Abspielzeit dargestellt werden.
    In dem Input $Filmdauer wird die gesamte Filmdauer dargestellt die ich ja schon mit ...

    AutoIt
    Global $sFilmlaenge = StringRegExpReplace($filmlength, ".*Duration:(\d+:\d+:\d+).*", "$1") ; Extrahiere die Filmlänge
    GUICtrlSetData($Filmdauer, $sFilmlaenge) 

    ... erfasse.

    Dann steht im Inputfeld $Filmdauer: 01:47:31

    Vielleicht sollten wir überprüfen ob überhaupt die Konsole im Editfeld ausgegeben wird, deswegen habe ich das Editfeld zur Kontrolle gemacht als Zwischenschritt, wird später wieder entfernt.
    Aber da kommt nichts an.

    Hier die Daten die in der Konsole geschrieben werden:

    Code
    ffplay version 2023-04-12-git-1179bb703e-full_build-http://www.gyan.dev Copyright (c) 2003-2023 the FFmpeg developers
    built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
    configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
    libavutil 58. 6.100 / 58. 6.100
    libavcodec 60. 9.100 / 60. 9.100
    libavformat 60. 4.101 / 60. 4.101
    libavdevice 60. 2.100 / 60. 2.100
    libavfilter 9. 5.100 / 9. 5.100
    libswscale 7. 2.100 / 7. 2.100
    libswresample 4. 11.100 / 4. 11.100
    libpostproc 57. 2.100 / 57. 2.100
    nan : 0.000 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0 
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Eigene-Programme\von-ulf\Filmarchiv-2024\autoit\film1.mp4':
    Metadata:
    major_brand : isom
    minor_version : 1
    compatible_brands: isomavc1
    creation_time : 2020-12-01T10:10:09.000000Z
    Duration: 01:47:31.39, start: 0.000000, bitrate: 427 kb/s
    Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 480x256 [SAR 1:1 DAR 15:8], 360 kb/s, 29.95 fps, 29.95 tbr, 2396 tbn (default)
    Metadata:
    creation_time : 2020-12-01T10:10:09.000000Z
    handler_name : Ì?
    vendor_id : [0][0][0][0]
    Stream #0:1[0x2](und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 64 kb/s (default)
    Metadata:
    creation_time : 2020-12-01T10:11:09.000000Z
    handler_name : Ì?
    vendor_id : [0][0][0][0]
    -0.02 A-V: -0.100 fd= 0 aq= 9KB vq= 21KB sq= 0B f=0/0 
    0.02 A-V: -0.096 fd= 0 aq= 9KB vq= 21KB sq= 0B f=0/0 
    0.05 A-V: -0.049 fd= 0 aq= 9KB vq= 20KB sq= 0B f=0/0 
    0.10 A-V: -0.046 fd= 0 aq= 9KB vq= 20KB sq= 0B f=0/0 
    0.13 A-V: -0.025 fd= 0 aq= 8KB vq= 20KB sq= 0B f=0/0 
    0.16 A-V: -0.027 fd= 0 aq= 9KB vq= 20KB sq= 0B f=0/0 
    0.20 A-V: -0.028 fd= 0 aq= 9KB vq= 20KB sq= 0B f=0/0 
    0.24 A-V: -0.015 fd= 0 aq= 9KB vq= 19KB sq= 0B f=0/0 
    Alles anzeigen

    usw.

    Das geht so lange wie der Film lang ist.
    In der letzte Zeile steht = 6446.60 A-V: -5.189 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0

    Es sollen ja nur die Werte vor A-V: im Inputfeld $laufendeabspielzeit dann ausgegeben werden.

  • FFplay AutoitKonsole auslesen

    • ruby
    • 13. Mai 2024 um 13:09

    Wenn ich das mache wird die GUI geschlossen und die Ausgabe an der Konsole brechen nach ca. 1 Sekunde ab, owohl der ffplay Player weiterläuft.

  • FFplay AutoitKonsole auslesen

    • ruby
    • 13. Mai 2024 um 11:49

    Hallo Moombas,

    vielen Dank,

    ja, aber ich muss doch erst einmal an die Daten von der Konsole rankommen.

    Führe ich das zum testen aus: GUICtrlSetData($Edit1, StdoutRead($iPID)) werden kein Daten in das Editfeld übertragen.

    Die Zahlen vor A-V: ändern sich auch ständig wie oben schon erwähnt.

  • FFplay AutoitKonsole auslesen

    • ruby
    • 13. Mai 2024 um 10:48

    Hallo,

    ich habe folgendes Problem, vielleicht könnt Ihr mir helfen.
    Ich habe diesen Code mit dem ich per ffprobe die Duration der mp4 ermittle und in das Imputfeld $sFilmlaenge schreibe.
    Mit ffplay stelle ich das Video dar.

    AutoIt
    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <GuiEdit.au3>
    
    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)
    Local $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
    			_Filmlaenge()
    
    		Case $laufendeabspielzeit
    
    		Case $Filmdauer
    
    		Case $Edit1
    
        EndSwitch
    WEnd
    
    
    Func _Filmlaenge()
    
    	Global $sinput = @ScriptDir & "\film1.mp4" ; FileOpenDialog("Wähle ein Video aus", @ScriptDir, "Datei (*.mp4;*.*;*;)", 1)
    
    	Local $iPID = Run(@ComSpec & ' /c ffplay -stats ' & """" & $sinput & """", @ScriptDir, @SW_HIDE, $STDOUT_CHILD)
    
    	$filmlength = ""
    
    	Local $cmd = 'ffprobe.exe ' & '"' & $sinput & '"' & ' 2>&1 | findstr Duration' ; ermittelt die Filmlänge des Filmes
    
    	$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)
    		GUICtrlSetData($Edit1, StdoutRead($line))
    
    	WEnd
    
    	ProcessWaitClose($handle)
    
    	Global $sFilmlaenge = StringRegExpReplace($filmlength, ".*Duration:(\d+:\d+:\d+).*", "$1") ; Extrahiere die Filmlänge
    	GUICtrlSetData($Filmdauer, $sFilmlaenge)
    
    ;~ 	GUICtrlSetData($Edit1, StdoutRead($iPID))
    
    EndFunc
    Alles anzeigen

    Mein Problem ist, das ich die Daten in der Autoikonsole, die, während das Video läuft, nicht erfassen kann.
    Als Test wollte ich dies in dem Editfeld darstellen, funktioniert aber nicht.

    Mein Anliegen ist, dass ich nur Zahlen vor A-V: erfassen will und in das Imputfeld $laufendeabspielzeit einlese.
    Sinn und Zweck ist, das man dann im Inputfeld laufendeabspielzeit  die bereits abgelaufende Zeit des Videos sieht.
    Wenn man die rechte/linke Pfeiltaste drückt springt das Video 10 Sekunden vor/zurück.
    Man kann auch mit der rechten Maustaste sich durch das Video bewegen.

    Ausschnitt aus der Autoitkonsole:

    Code
    0.88 A-V: -0.021 fd= 0 aq= 9KB vq= 11KB sq= 0B f=0/0 
    0.93 A-V: -0.021 fd= 0 aq= 9KB vq= 10KB sq= 0B f=0/0 
    0.97 A-V: -0.018 fd= 0 aq= 9KB vq= 8KB sq= 0B f=0/0 
    1.02 A-V: -0.017 fd= 0 aq= 9KB vq= 8KB sq= 0B f=0/0 
    1.07 A-V: -0.016 fd= 0 aq= 9KB vq= 7KB sq= 0B f=0/0 
    1.11 A-V: -0.016 fd= 0 aq= 9KB vq= 7KB sq= 0B f=0/0 
    16.72 A-V: -0.062 fd= 0 aq= 9KB vq= 35KB sq= 0B f=0/0 
    16.75 A-V: -0.059 fd= 0 aq= 8KB vq= 35KB sq= 0B f=0/0 
    16.80 A-V: -0.012 fd= 0 aq= 8KB vq= 35KB sq= 0B f=0/0 
    16.84 A-V: -0.022 fd= 0 aq= 9KB vq= 53KB sq= 0B f=0/0 
    16.87 A-V: -0.023 fd= 0 aq= 9KB vq= 53KB sq= 0B f=0/0 
    16.90 A-V: -0.024 fd= 0 aq= 8KB vq= 50KB sq= 0B f=0/0 
    16.95 A-V: -0.011 fd= 0 aq= 8KB vq= 49KB sq= 0B f=0/0 
    usw...
    Alles anzeigen

    Vielen Dank schon einmal für Eure Hilfe

  • ListBoxen auslesen

    • ruby
    • 14. Mai 2022 um 16:16

    Hi autoBert,

    danke für den Hinweis.

    Schaue ich mir an.

    Überlege mir evtl. aber das ohne Abfrage der Listbox $hLB3 zu machen.

    Das dauert doch recht lange.

    Code
    For $n = 0 To $iCnt2 - 1 
        $sMsg2 &= _GUICtrlListBox_GetText($hLB2, $n) & @CRLF
        _GUICtrlListBox_SetCurSel($hLB2, $n)
    Next
    
    ConsoleWrite($sMsg2 & @CRLF)
  • ListBoxen auslesen

    • ruby
    • 13. Mai 2022 um 17:59

    Ich habe es jetzt so gelöst:

    Code
    For $n = 0 To 30; $iCnt2 - 1
        $klick = _GUICtrlListBox_ClickItem($hLB2, $n, "", False)
    
    Sleep(500)
    
    ;~     $sMsg2 &= $n & ":  " & _GUICtrlListBox_GetText($hLB2, $n) & $klick & @CRLF
    
        $sMsg2 &= $n & ":  " & _GUICtrlListBox_GetText($hLB2, $n) & ": " & _GUICtrlListBox_GetText($hLB3, 0) & @CRLF
    ;~     $sMsg2 &= $n & ":  " & _GUICtrlListBox_GetText($hLB2, $n) & @CRLF
    
        _GUICtrlListBox_SetCurSel($hLB2, $n)
    
        Next
    
    ConsoleWrite($sMsg2 & @CRLF)
    Alles anzeigen

    Mit _GUICtrlListBox_SetCurSel bleibt der Focus in der Listbox.

    Nur das man fast eine 500ms warten muss bis er was findet ist nicht so gut.

    Vielleicht gibt es ja da was :/

  • ListBoxen auslesen

    • ruby
    • 13. Mai 2022 um 17:17

    Hallo,

    danke für die Antwort.

    Ich hatte evtl. an sowas gedacht, aber bei über 400 Einträge verliert man den Focus. Warum?

    Ich habe das mal mit 20 Einträgen getestet und das funktioniert, aber danach geht es nicht mehr, da rutscht die Maus aus der Listbox.

    0: Camera/Field of View: 0

    1: Camera/Image Igloo: I

    2: Camera/Look Around: 0

    3: Camera/Match New Photo...: 0

    4: Camera/Next: 0

    5: Camera/Orbit: O

    6: Camera/Pan: H

    7: Camera/Parallel Projection: 0

    8: Camera/Perspective: 0

    9: Camera/Position Camera: 0

    10: Camera/Previous: 0

    11: Camera/Standard Views /Back: 0

    12: Camera/Standard Views /Bottom: 0

    13: Camera/Standard Views /Front: 0

    14: Camera/Standard Views /Iso: 0

    15: Camera/Standard Views /Left: 0

    16: Camera/Standard Views /Right: 0

    17: Camera/Standard Views /Top: 0

    18: Camera/Two-Point Perspective: 0

    19: Camera/Walk: 0

    20: Camera/Zoom: 0

    ...

    Vielleicht gibt es doch noch eine Lösung!

    Danke schon einmal für Eure Hilfe.

    Code
    For $n = 0 To 20;$iCnt2 - 1
        $klick = _GUICtrlListBox_ClickItem($hLB2, $n, "", True)
    
    ;~     $sMsg2 &= $n & ":  " & _GUICtrlListBox_GetText($hLB2, $n) & $klick & @CRLF
    
        $sMsg2 &= $n & ":  " & _GUICtrlListBox_GetText($hLB2, $n) & ": " & _GUICtrlListBox_GetText($hLB3, 0) & @CRLF
    ;~     $sMsg2 &= $n & ":  " & _GUICtrlListBox_GetText($hLB2, $n) & @CRLF
    
        Next
    
    ConsoleWrite($sMsg2 & @CRLF)
    Alles anzeigen
  • ListBoxen auslesen

    • ruby
    • 13. Mai 2022 um 15:13

    Hallo ich brauche mal wieder Eure Hilfe.

    Mit unten stehenden Code lese ich die Listbox $cidList2 aus.

    Das sieht so aus:

    0: Camera/Field of View 0

    1: Camera/Image Igloo 0

    2: Camera/Look Around 0

    3: Camera/Match New Photo... 0

    4: Camera/Next 0

    5: Camera/Orbit 0

    6: Camera/Pan 0

    7: Camera/Parallel Projection 0

    8: Camera/Perspective 0

    9: Camera/Position Camera 0

    10: Camera/Previous 0

    ...

    439: Window/Show Tags 0

    In der zweiten Listbox $cidList3 unter "Assigned" stehen manchmal auch Werte drin, wenn man z.B. den Eintrag "Camera/Image Igloo" in der Listbox 2 anklickt, erscheint in der Listbox $cidList3 ein "I", bei "Camera/Orbit" würde ein "O" stehen, bei "Camera/Zoom Extents" steht "Ctrl+Shift+E" und "Shift+Z".

    Mein Lösungsansatz das ich einfach _GUICtrlListBox_GetText($hLB3, 0) mit Abfrage geht nicht, da erst immer ein Focus auf einem Wert in der zweiten Listbox stehen muss damit man dann den dazu passenden Wert in der dritten Listbox sieht.

    Ein einfache _GUICtrlListBox_GetText($hLB2, $n) reicht nicht aus um auch den dazu passenden Wert aus Listbox3 zu holen.

    Was kann man da machen?

    Code
    #include <GuiListBox.au3>
    
    Dim $ttlWindow
    Dim $hdlWindow
    Dim $cidList2, $cidList3
    
    $ttlWindow = "SketchUp Preferences"
    $cidList2 = "[CLASS:ListBox; INSTANCE:2]"
    $cidList3 = "[CLASS:ListBox; INSTANCE:3]"
    
    $hdlWindow = WinGetHandle($ttlWindow)
    
    Local $hLB2 = ControlGetHandle($hdlWindow, "", $cidList2)
    Local $hLB3 = ControlGetHandle($hdlWindow, "", $cidList3)
    
    Local $iCnt2 = _GUICtrlListBox_GetCount($hLB2)
    Local $iCnt3 = _GUICtrlListBox_GetCount($hLB3)
    
    Local $sMsg2 = ""
    Local $sMsg3 = ""
    
    For $n = 0 To $iCnt2 - 1
    ;~     $sMsg2 &= $n & ":  " & _GUICtrlListBox_GetText($hLB2, $n) & @CRLF
        $sMsg2 &= $n & ":  " & _GUICtrlListBox_GetText($hLB2, $n) & " " & _GUICtrlListBox_GetText($hLB3, 0) & @CRLF
    Next
    
    ConsoleWrite($sMsg2 & @CRLF)
    Alles anzeigen

    Dateien

    screenshot-listbox-preferences.jpg 175,95 kB – 0 Downloads
  • String > StringReplace > Listview

    • ruby
    • 3. Mai 2022 um 10:53

    Hallo Velted,

    vielen Dank für die ausführliche Erklärung, jetzt habe ich es einigermaßen verstanden ;)

  • String > StringReplace > Listview

    • ruby
    • 2. Mai 2022 um 16:44

    Aahhh, und ich dachte es wäre ein Qulitätsmerkmal, wie doof von mir.

    Es macht hier immer wieder Spaß.

    Der kürzeste Programmierer Witz: Gleich bin ich fertig!

    In diesem Sinne, kann dies hier geschlossen werden.

  • String > StringReplace > Listview

    • ruby
    • 2. Mai 2022 um 14:22

    Hallo Moombas,

    danke für den Hinweis, ich muss ersteinmal den Code mit

    Code
    ; ListView füllen
    For $Line In StringSplit($rdatei, @CRLF, 3)
        $Line = StringReplace(StringReplace($Line, @TAB, "|"), "/", "|")
        If @extended < 3 Then $Line = StringReplace($Line, "|", StringMid("|||", 1, 4 - @extended), - 1)
        GUICtrlCreateListViewItem($Line, $List)
    Next

    verstehen und lernen, auch das was Bitnugger geschrieben hat.

    Da tue ich mich doch noch schwer mit .

    Vielen Dank an Alle.

  • String > StringReplace > Listview

    • ruby
    • 2. Mai 2022 um 13:54

    Hallo Velted,

    deine Lösung gefällt mir auch sehr gut, und Du bist Schüler?

    Ich habe anstatt den Text wie Du in eine Func zu schreiben, es so gemacht Dim $Test = FileRead($sdatei)

    Allerdings ist die erste Zeile in der Listview leer, deswegen noch ein _GUICtrlListView_DeleteItem($List, 0) hinterher.

    Warum ist die erste Zeile leer, keine Ahnung?

    Das GUI soll skalierbar sein, warum fehlt das kleine Dreieck recht unten?

    An beide noch einmal vielen Dank für Eure Hilfe.

    C
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <File.au3>
    
    #include <WindowsConstants.au3>; scalierbare GUI
    
    $sdatei = @ScriptDir & "\meine-shortcut-liste-ori.txt"
    
    Dim $Test = FileRead($sdatei)
    
    #Region ###
        $Form1 = GUICreate("meine " & _FileCountLines($sdatei) & " Shortcuts für Sketchup", 1000, 700, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX), $WS_EX_TOPMOST)
        Global $List = GUICtrlCreateListView ("Shortcut|Menüname|Menü Item|Sub Menü|Befehl", 20, 20, 960, 660, $LVS_SORTASCENDING)
        GUICtrlSendMsg($List, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
        _GUICtrlListView_SetColumnWidth(-1, 0, 170)
        _GUICtrlListView_SetColumnWidth(-1, 1, 180)
        _GUICtrlListView_SetColumnWidth(-1, 2, 200)
        _GUICtrlListView_SetColumnWidth(-1, 3, 200)
        _GUICtrlListView_SetColumnWidth(-1, 4, 140)
    
    ; ListView füllen
    For $Line In StringSplit($Test, @CRLF, 3)
        $Line = StringReplace(StringReplace($Line, @TAB, "|"), "/", "|")
        If @extended < 3 Then $Line = StringReplace($Line, "|", StringMid("|||", 1, 4 - @extended), - 1)
        GUICtrlCreateListViewItem($Line, $List)
    Next
    
     _GUICtrlListView_DeleteItem($List, 0)
    
    GUISetState(@SW_SHOW)
    #EndRegion ###
    
    
    ;sortierung und Pfeile in Row
    Global $hWndListView = GUICtrlGetHandle($List)
    _GUICtrlListView_RegisterSortCallBack($hWndListView)
    Func _sortlistview()
        _GUICtrlListView_SortItems($hWndListView, GUICtrlGetState($List))
    EndFunc
    
    
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
    
            Case $Form1
    
            Case $List
                _sortlistview()
    
        EndSwitch
    WEnd
    Alles anzeigen
  • String > StringReplace > Listview

    • ruby
    • 1. Mai 2022 um 10:41

    Hallo Bitnugger,

    danke für die Lösung, Wahnsinn!

    Du hast natürlich Recht, dass ich die "Lösung" für Problem1 meinte, aber im Eifer des Gefechts habe ich das Wort vergessen.

    Also nochmals vielen, vielen Dank.

  • String > StringReplace > Listview

    • ruby
    • 30. April 2022 um 20:10

    Hi,

    mein Problem Clipboard in Listview einfügen habe ich gerade was gefunden:

    das habe ich nach ConsoleWrite($txt3) eingefügt, Zeile 27

    $clip = $txt3

    ; Zeilenweise Ausgabe

    $clip = StringReplace($clip, @CR, "")

    $split = StringSplit($clip, @LF)

    ...

    das habe ich vor GUISetState(@SW_SHOW) eingefügt, Zeile 54

    For $i = 1 To $split[0] Step 1

    GUICtrlCreateListViewItem($split[$i], $List)

    Next

    Jetzt fehlt eigentlich nur noch Problem 1

  • String > StringReplace > Listview

    • ruby
    • 30. April 2022 um 18:57

    Hallo ich brauche mal Eure Hilfe.

    Ich habe eine Datei(siehe Anhang) die ich mit StringReplace bearbeite.

    Meine Frage ist:

    1. wie bekommen ich die fehlenden Seperatoren "|" jeweils in die einzelnen Zeilen, wo die Seperatoren < als 4 sind,

    und zwar vor dem letzten Eintrag in der jeweiligen Zeile, damit dann alle Zeilen die gleiche Anzahl der Seperatoren haben.

    2. wie bekommt man das ganze dann in die Listview

    Danke schon einmal für Eure Hilfe

    C
    #include <Array.au3>
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <File.au3>
    
    
    #cs
    Auszug aus $datei
    
    .    Extensions/Add Centerpoint
    A    Draw/Arcs/2 Point Arc
    Ctrl+Shift+E    Camera/Zoom Extents
    Alt+NumPad8    Camera/Standard Views /Back
    Alt+Q    Tools/Fredo6 Collection/LordOfTheToolbars/Quick Command Finder
    Space    Tools/Select
    #ce
    
    
    $sdatei = @ScriptDir & "\meine-shortcut-liste-ori.txt"
    
    ClipPut(FileRead($sdatei))
    
    $txt1 = StringReplace(ClipGet(), @tab, "|")
    $txt2 = StringReplace($txt1, " /", "|")
    $txt3 = StringReplace($txt2, "/", "|")
    
    ConsoleWrite($txt3)
    
    
    #cs
    Listview Aufbau (Auszug Beispieleinträge)
    
    Shortcut        | Menüname                | Menü Item          | Sub Menü                | Befehl
    -------------------------------------------------------------------------------------------------------
    .               | Extensions              |                    |                         | Add Centerpoint
    A               | Draw                    | Arcs               |                         | 2 Point Arc
    Ctrl+Shift+E    | Camera                  |                    |                         | Zoom Extents
    Alt+NumPad8     | Camera                  | Standard Views     |                         | Back
    Alt+Q           | Tools                   | Fredo6 Collection  | LordOfTheToolbars       | Quick Command Finder
    Space           | Tools                   |                    |                         | Select
    #ce
    
    
    
    #Region ###
        $Form1 = GUICreate("meine " & _FileCountLines($sdatei) & " Shortcuts für Sketchup", 1000, 700, -1, -1)
        Global $List = GUICtrlCreateListView ("Shortcut|Menüname|Menü Item|Sub Menü|Befehl", 20, 20, 960, 660, $LVS_SORTASCENDING)
        GUICtrlSendMsg($List, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
        _GUICtrlListView_SetColumnWidth(-1, 0, 200)
        _GUICtrlListView_SetColumnWidth(-1, 1, 200)
        _GUICtrlListView_SetColumnWidth(-1, 2, 200)
        _GUICtrlListView_SetColumnWidth(-1, 3, 200)
    
    GUISetState(@SW_SHOW)
    #EndRegion ###
    
    
    ;sortierung und Pfeile in Row
    Global $hWndListView = GUICtrlGetHandle($List)
    _GUICtrlListView_RegisterSortCallBack($hWndListView)
    Func _sortlistview()
        _GUICtrlListView_SortItems($hWndListView, GUICtrlGetState($List))
    EndFunc
    
    
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
    
            Case $Form1
    
            Case $List
                _sortlistview()
    
        EndSwitch
    WEnd
    Alles anzeigen

    Dateien

    meine-shortcut-liste-ori.txt 2,77 kB – 393 Downloads
  • Menu Item wieder zurückholen

    • ruby
    • 19. April 2022 um 14:51

    Hi Velted und Bitnugger,

    vielen Dank für die Rückinfo.

    Funktioniert einwandfrei.

    Konnte mich erst jetzt melden da ich mich heute morgen nicht einloggen konnte.

    An beide Danke noch einmal.

  • Menu Item wieder zurückholen

    • ruby
    • 17. April 2022 um 11:52

    Hallo Bitnugger,

    danke für die Rückantwort, das funktioniert.

    Das Du so schnell Antwortest damit habe ich gar nicht gerechnet.

    Erst einmal frohe Ostern.

    Es geht eigentlich nur um folgendes:

    Ich nutze privat Sketchup Pro 2019, mit sehr vielen Buttons (siehe Screenshot) und deswegen möchte ich gerne das Zeichenhandle

    Local $hWnd = ControlGetHandle($title,"","[CLASS:AfxFrameOrView140u; INSTANCE:1]") manchmal in den Vollbildmodus setzten.

    screenshot-sketchup.png

    Um mehr geht es eigentlich nicht, aber...

    Ist das Zeichenhandle im Vollbildmodus sieht man oben immer noch die Menüs (siehe rotes Rechteck),

    und wenn die ganzen Buttons, Afx:ToolBar und Afx:ControlBar, nicht versteckt werden und man will was zeichen,

    springt das Handle AfxFrameOrView140u wieder in den Normalmodus allesdings ohne Rahmen zurück.

    Deswegen verstecke ich alle Afx:ToolBar und Afx:ControlBar da erst dann das Zeichenhandle im Vollmodus bleibt.

    Die Menüs oben sind aber immer noch sichtbar.

    Deswegen der Gedankengang die Menüs oben auch auszublenden und dann wieder wenn man im Normalmodus wechselt wieder da sind.

    Vielleicht schafft man es aber, das das Handle AfxFrameOrView140u im Vollbildmodus bleibt ohne den Rest.

    Vielen Dank schon einmal.

    C
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <Misc.au3>
    #include <GuiMenu.au3>
    
    Global $iOrgStyle, $fPressed = False, $hMenu, $hide = ControlHide, $show = ControlShow, $ProgramName = "fullscreen.exe"
    
    ; es wird nur eine Instanz ausgeführt.
    If _Singleton($ProgramName, 1) = 0 Then
        ;"The program is already running."
        Exit
    EndIf
    
    While Sleep(20)
        If _IsPressed("7B") And $fPressed = False Then ;F12
    
    ;~         Opt("WinTitleMatchMode", 1)
    ;~         $WinHandle = WinGetHandle("[REGEXPTITLE:(?i)Sketchup Pro(.*?)]")
            $WinHandle = WinGetHandle("[active]")
            $sWinTitle = WinGetTitle($WinHandle)
    ;~         ConsoleWrite("Fenstertitel: " & $sWinTitle  & @CRLF)
    
            If not StringInStr($sWinTitle,'SketchUp Pro') Then Exit
    
            ;~ Hauptfenster Fullscreen
    ;~         $title = WinGetHandle("[active]")
            $title = WinGetHandle($sWinTitle)
    
            ;schaltet Menü aus
            $hMenu = _GUICtrlMenu_GetMenu($title)
            _GUICtrlMenu_SetMenu($title, 0)
    
            $aPos = WinGetPos($title) ;ursprüngliche Position und Grösse ermitteln
            $iOrgStyleFull = _WinAPI_SetWindowLong($title, $GWL_STYLE, $WS_POPUPWINDOW) ;Rückgabewert ist der ursprüngliche Stil Hauptfenster
    
            WinSetState($title, "", @SW_MAXIMIZE) ;Maximieren für Vollbild Hauptfenster
    
        ;~     Zeichenfenster Afx -> Fullscreen
            ; Assign a Local variable the handle of the Sketchup window
            Local $hWnd = ControlGetHandle($title,"","[CLASS:AfxFrameOrView140u; INSTANCE:1]")
    
            ; Assign a Local variable the style of the Sketchup window.
            Local $iStyle = _WinAPI_GetWindowLong($hWnd, $GWL_STYLE)
    
            ; Remove from the window style the MAXIMIZEBOX, MINIMIZEBOX and SIZEBOX styles.
            $iStyle = BitXOR($iStyle, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_SIZEBOX)
    
            ; Set the style of the window. !!!nicht hier, da sonst resizeborder da ist!!!
        ;~     _WinAPI_SetWindowLong($hWnd, $GWL_STYLE, $iStyle)
        ;~ $iOrgStyleAfx = _WinAPI_SetWindowLong($hWnd, $GWL_STYLE, $iStyle)
    
            ; Apply the style zeigt das Afx Fenster als Vollbild im Vordergrund
            _WinAPI_SetWindowPos($hWnd, $HWND_TOP, 0, 0, @DesktopWidth, @DesktopHeight, $SWP_FRAMECHANGED)
    
            ;versteckt alle Button
            _WinGetControlList_all($hide)
    
            $fPressed = True
    
        ElseIf _IsPressed("7B") And $fPressed = True Then ;F12
    
            ;schaltet Menü weider ein
            _GUICtrlMenu_SetMenu($title, $hMenu)
    
            ;zeigt wieder alle Button
            _WinGetControlList_all($show)
    
            $iOrgStyleAfx = _WinAPI_SetWindowLong($hWnd, $GWL_STYLE, $iStyle) ;Rückgabewert des ursprüngliche Stil von Afx
    
            ; Hauptfenster und Zeichenfenster wieder herstellen
            _WinAPI_SetWindowLong($title, $GWL_STYLE, $iOrgStyleFull) ;ursprünglichen Stil Hauptfenster wiederherstellen
            WinMove($title, "", $aPos[0], $aPos[1], $aPos[2], $aPos[3]) ;ursprünglichen Position und Grösse wiederherstellen
    
            ; Set the style of the window Zeichenfenster.
            _WinAPI_SetWindowLong($hWnd, $GWL_STYLE, $iOrgStyleAfx) ;ursprünglichen Stil Afx Fenster wiederherstellen
    
            WinSetState($title, "", @SW_RESTORE)
            WinSetState($hWnd, "", @SW_SHOW )
    
            $fPressed = False
    
        EndIf
    
    ;~     If _IsPressed("1B") Then Exit ;Esc
        If not ProcessExists("SketchUp.exe") Then Exit
    
    WEnd
    
    
    Func _WinGetControlList_all($hide_or_show)
    
        $sTitle = ""
        $sText = ""
    
        Global $n = 0, $iCount
        Global $sClassList = WinGetClassList($sTitle, $sText)
        Global $aResult = StringRegExp($sClassList, "(\N+)", 3)
        Redim $aResult[UBound($aResult)][10]
        Global $aClasses = StringRegExp($sClassList, "(?s)(?:\A|\R)(\N+)(?=\R)(?!(?:\R\N+)*\R\1\R)", 3)
    
        For $i = 0 To UBound($aClasses) - 1
            StringRegExpReplace($sClassList, "\Q" & $aClasses[$i] & "\E\R", "")
    
            $iCount = @extended
    
            For $iInstance = 1 To $iCount
                $aResult[$n][0] = $aClasses[$i]                                                  ; Class
                $aResult[$n][1] = $aClasses[$i] & $iInstance                                     ; ClassnameNN
                $aResult[$n][2] = "[CLASS:" & $aClasses[$i] & "; INSTANCE:" & $iInstance & "]"    ; Advanced mode
                $aResult[$n][3] = ControlGetHandle($sTitle, $sText, $aResult[$n][2])             ; Handle
                $aResult[$n][4] = ControlGetText($sTitle, $sText, $aResult[$n][3] )              ; Text
                $aResult[$n][5] = _WinAPI_GetDlgCtrlID($aResult[$n][3])                          ; ID
    
                If StringInStr($aResult[$n][0], "Afx:ToolBar") Or StringInStr($aResult[$n][0], "Afx:ControlBar") = 1 Then
    ;~                 ControlHide($sTitle, "", $aResult[$n][3])
                    $hide_or_show($sTitle, "", $aResult[$n][3])
                EndIf
    
                $n += 1
    
            Next
        Next
    
        Return $aResult
    
    EndFunc
    Alles anzeigen

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™