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

  • Menu Item wieder zurückholen

    • ruby
    • 16. April 2022 um 11:34

    Hallo Bitnugger,

    bei Deinem obriges Script Example 1 kann man ja nur ein Item entfernen.

    Durch eine Schleife kann man ja alle Menü Items mit _GUICtrlMenu_RemoveMenu entfernen.

    Aber wie hole ich die wieder mit einer Schleife zurück?

    Ich möchte gerne von einem externen Program das Menü Item komplett verstecken und nach einem Tastendruck wieder hervorholen.

    Schon mal danke im vorraus.

    C
    Opt('MustDeclareVars', 1) 
    
    #include <GUIConstantsEx.au3>
    #include <GuiMenu.au3>
    
    Global $g_idMemo
    
    
    Example1()
    ;~ Example2()
    
    Func Example1()
    
        Local $hWnd, $hMain, $iCmdID, $hMenu_save
    
        ; Open Notepad
        Run("notepad.exe")
        WinWaitActive("[CLASS:Notepad]")
        $hWnd = WinGetHandle("[CLASS:Notepad]")
    
        $hMain = _GUICtrlMenu_GetMenu($hWnd)
    ;~     ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hMain = ' & $hMain & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    ;~     $iCmdID = _GUICtrlMenu_GetItemID ( $hMain, 4)
    ;~     ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $iCmdID = ' & $iCmdID & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    
        Sleep(1000)
    
        ; Remove Help menu
    ;~     $hMenu_save = _GUICtrlMenu_GetItemSubMenu($hMain, 4)
    ;~     ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : Remove Help menu  : ' & _GUICtrlMenu_RemoveMenu($hMain, 4) & ' - $hMenu_save = ' & $hMenu_save & @CRLF)
    
            For $iCmdID = _GUICtrlMenu_GetItemCount ($hMain) - 1 To 0 Step - 1
                ConsoleWrite($hMain & " " & $iCmdID & @CRLF)
                _GUICtrlMenu_RemoveMenu ($hMain, $iCmdID)
            Next
    
        Sleep(1000)
    
        ; Restore Help menu
       ; _GUICtrlMenu_InsertMenuItem($hMain, 4, "&New Help", $iCmdID,  $hMain)
       ; ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : Restore Help menu : ' & _GUICtrlMenu_SetItemSubMenu($hMain, 4, $hMenu_save) & @CRLF)
       ; _GUICtrlMenu_SetMenu($hWnd, $hMain)
    
    ;funktioniert nicht
             For $iCmdID = _GUICtrlMenu_InsertMenuItem ($hMain, $iCmdID,  $hMain) - 1 To 0 Step - 1
                _GUICtrlMenu_SetMenu($hWnd, $hMain)
             Next
    
    
    
    EndFunc   ;==>Example1
    Alles anzeigen
  • _ReplaceStringInFile

    • ruby
    • 8. Dezember 2021 um 16:25

    Man seit Ihr schnell.

    Dein Script funktioniert Micha_he.

    Das von MojoeB funktioniert bei mir nicht.

    Heute Nachmittag hatte ich auch die Idee mit Binary Read, nur habe ich Binary Write vergessen.

    Super Arbeit und Danke für Eure Hilfe.

  • _ReplaceStringInFile

    • ruby
    • 8. Dezember 2021 um 12:53

    Hallo Micha_he,

    danke für die Info, aber wie Du auch festgestellt hast funktioniert das nicht.

    Ich denke mir, das liegt an der Datei.

    Die Extension ist eigentlich eine bip Datei (Keyshot), nur die konnte ich nicht als Anhang hochstellen, deswegen als txt.

    Habe hier nur die Extension geändert, als Kodierung ist es eine ANSI.

    Wenn mann sich die Datei im notepad++ anschaut stehen weiter unten so schwaze NUL Zeichen.

    Wie gesagt händisch geht es nur nicht mit _ReplaceStringInFile

    Ich hatte auch das mal probiert, geht auch nett:

    Code
    #include <File.au3>
    
    Local $aFile, $sText, $sFile = @ScriptDir & "\untitled.bip"
        _FileReadToArray($sFile, $aFile)
    
    _ArrayDisplay($aFile)
    
        For $a = 1 To $aFile[0]
            If StringInStr($aFile[$a], 'version 9') Then
                $sText = StringReplace(FileReadLine($sFile, $a), 'version 9', 'version 7')
                _FileWriteToLine($sFile, $a, $sText, 1)
            EndIf
        Next
    Alles anzeigen

    Im ArrayDisplay stehen dann so komische Zeichen.

    screenshot notepad++.png

    Habe auch mal mit:

    Code
    $file = FileOpen($aFiles[0], 512)
    $read = FileRead($file)
    
            _ReplaceStringInFile($read, "version 9", "version 7") ;!!!!!!!!!!!!!!!!

    es versucht und den mode geändert, aber hat auch nichts gebracht.

    Alles sehr seltsam :/

  • _ReplaceStringInFile

    • ruby
    • 8. Dezember 2021 um 10:13

    Hallo ich brauch mal Eure Hilfe, ich komme nicht weiter.

    Ich habe eine Datei "untitled.txt" in der möchte ich den String "version 9" in "version 7" ändern.

    Wenn ich die Datei mit notepad++ öffne und es händisch ändere und wieder abspeiche funktioniert es.

    In meiner GUI füge ich per Drag and Drop die Datei ein.

    Aber mit _ReplaceStringInFile funktioniert es nicht.

    Ich denke mir, es liegt an der Datei, weil weiter unten in der Datei stehen so komische Zeichen, siehe Anhang.

    Hat jemand eine Idee, wie ich das lösen kann.

    Danke im vorraus.

    C
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    
    
    Global $gaDropFiles[1], $iDropItem = -1
    
    
    #Region ###
    Global $Form1 = GUICreate("", 200, 200, -1, -1, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_ACCEPTFILES, $WS_EX_CONTROLPARENT)) ;$WS_EX_CONTROLPARENT = verschiebt Fenster auch ohne Rahmen
    GUISetBkColor(0x01A1F7)
    
    $FILES_DROPPED = GUICtrlCreateDummy()
    
    GUISetState(@SW_SHOW)
    
    #EndRegion ###
    
    
    GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES_FUNC')
    
    
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
    
            Case $FILES_DROPPED
                $aFiles = $gaDropFiles
    
                _change_bip()
    
        EndSwitch
    WEnd
    
    
    
    Func _change_bip()
    $file = FileOpen($aFiles[0], 512)
    $read = FileRead($file)
    
            _ReplaceStringInFile($read, "version 9", "version 7") ;!!!!!!!!!!!!!!!!
    
    EndFunc
    
    
    
    Func WM_DROPFILES_FUNC($hWnd, $msgID, $wParam, $lParam)
        Local $nSize, $pFileName
        Local $nAmt = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', 0xFFFFFFFF, 'ptr', 0, 'int', 0)
        ReDim $gaDropFiles[$nAmt[0]]
           For $i = 0 To $nAmt[0] - 1
                $nSize = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', 0, 'int', 0)
                $nSize = $nSize[0] + 1
                $pFileName = DllStructCreate('wchar[' & $nSize & ']')
                DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', DllStructGetPtr($pFileName), 'int', $nSize)
                $gaDropFiles[$i] = DllStructGetData($pFileName, 1)
                $pFileName = 0
          Next
       GUICtrlSendToDummy($FILES_DROPPED, $nAmt[0])
    
    EndFunc
    Alles anzeigen

    Dateien

    untitled.txt 1,96 kB – 305 Downloads
  • StringRegExp String finden und erstezten

    • ruby
    • 12. Februar 2021 um 15:37

    Alles klar, nochmal vielen Dank.

    Kann abgeschlossen werden

  • StringRegExp String finden und erstezten

    • ruby
    • 12. Februar 2021 um 09:55

    Du bist der Hammer.

    11 Zeilen Code, Wahnsinn

    Ich muss noch viel viel lernen. An deine Programmierkünste werde ich eh nie herankommen.

    Tausend Dank.

    Ich traue moch garnicht zu fragen, da ich noch was vergessen habe.

    In dem Text muss auch noch der String EJicyqvP ausgewechselt werden in myani_draw und myani_fade.

    Aber ich will es mal versuchen.

    <style data-made-with="vivus-instant">

    @keyframes EJicyqvP_draw {

    to {

    stroke-dashoffset: 0;

    }

    }

    @keyframes EJicyqvP_fade {

    0%,

    94.44444444444444% {

    stroke-opacity: 1;

    }

    to {

    stroke-opacity: 0;

    }

    }

    </style>

  • StringRegExp String finden und erstezten

    • ruby
    • 11. Februar 2021 um 20:07

    Ahh, vielen Dank funktioniert.

    Klasse Forum, tolle Hilfe.

  • StringRegExp String finden und erstezten

    • ruby
    • 11. Februar 2021 um 18:58

    Hallo AspirinJunkie,

    vielen Dank, aber warum muss da keine Schleife drum?

    Die Zeit hinter linear sollte immer um eins erhöht werden, so oft wie der Wert vorkommt.

    erster Wert = 0, zweiter Wert = linear 500ms, dritter Wert = linear 1000ms , vierter Wert = 1500ms usw.

    Deswegen habe ich bei meinem Code immer eine Schleife gewählt.

    Wie kann kann ich jetzt mit Deinem Code hier eine Schleife machen.

    Gruß

  • StringRegExp String finden und erstezten

    • ruby
    • 11. Februar 2021 um 16:31

    Hallo Leute,

    haben unten stehen Code und der funktioniert nicht so richtig wie ich will.

    In der Datei stehen mehrere Zeilen die so aussehen: style="animation: EJicyqvP_draw 55ms linear 2900ms forwards"

    Hier möchte

    - das der Name nach animation: ausgetauscht wird in Variable $sReplace

    - der Wert vor linear ausgetauscht wird in Variable $zeit

    - der Wert nach linear ausgetauscht wird in Variable $zeit * $i

    Aber igendwie verschluckt sich der Code beim Austauschen der Variable nach liniear.

    Mit den Suchmusterstring stehe ich auf Kriegsfuß "(?U)xxxxxxxx:\h+(\H+)\h", 3) ????

    Könnte man mir helfen?

    Gruß

    Code
    Local $sFileName = "test.txt"
    
    
    Local $sText = FileRead($sFileName)
    
    
    ;Name der neuen animation:
    Local $sReplace = "myani"
    Local $zeit = "500ms"
    
    
    ; ändert Name nach animation:
    $aArray = StringRegExp($sText, "(?U)animation:\h+(\H+)\h", 3)
    For $i = 0 To UBound($aArray) - 1
    ConsoleWrite("animationname: " & $aArray[$i] & @CRLF)
    $sResult = StringRegExpReplace($sText, $aArray[$i], $sReplace)
    Next
    
    $animationname = $aArray[0] ;braucht man noch einmal für den animationsname, siehe unten
    
    ; das ist der gefundene wert vor linear und wird gloabl in 500ms geändert, das ist die zeitdauer für einen gezeichneten path
    $aArray = StringRegExp($sResult, "(?U)" & "animation: " &  $sReplace & "\h+(\H+)\h", 3)
    For $i = 0 To UBound($aArray) - 1
    ConsoleWrite("zeit: " & $aArray[$i] & @CRLF)
    $sResult = StringRegExpReplace($sResult, $aArray[$i], $zeit)
    Next
    
    ; gesamte zeit für svg
    $aArray = StringRegExp($sResult, "(?U)linear\h+(\H+)\h", 3) ;suche wert nach linear
    For $i = 0 To UBound($aArray) - 1
    ConsoleWrite("linearezeit: " & $aArray[$i] & @CRLF)
    $sResult = StringRegExpReplace($sResult, $aArray[$i], $i * $zeit)
    Next
    
    ;ändert diese Einträge, kommen auch nur einmal vor
    $sResult = StringRegExpReplace($sResult,"<style data-made-with=""vivus-instant"">", "<style>")
    $sResult = StringRegExpReplace($sResult, "94.44444444444444%", "100%")
    $sResult = StringRegExpReplace($sResult, StringTrimRight($animationname, 5), $sReplace)
    
    ConsoleWrite($sResult)
    Alles anzeigen

    Dateien

    test.txt 22,56 kB – 380 Downloads
  • Ein Bild aus Video extrahieren und croppen

    • ruby
    • 20. März 2019 um 14:25

    @Musashi,

    danke für die Rückantwort.

    ffmpeg ist ja auch ein tolles Tool.

    Das habe ich mal für mein Videoverwaltung eingesetzt und da gab es auch Sinn, aber nur um ein Bild aus einem Video zu extrahieren extra ein separates Progrmann zu nutzen erschien mir ffmpeg zu mächtig, da ich die anderen Funktion die mir ffmpeg bietet nicht nutze für diesen Fall.

    Trotzdem schade das das nicht mit AutoIT geht, kan man halt nicht machen.

    Trotzdem Danke für die schnelle Rückantwort, bei mir hat es ja ein bissel gedauert da gestern gefeiert .

    Gruß Ruby

  • Ein Bild aus Video extrahieren und croppen

    • ruby
    • 19. März 2019 um 10:00

    Hallo,

    ich suche ein Möglichkeit, mit evtl. GDI+, ein Bild(jpg) aus einer Videodatei(avi, mp4(h264), mpg(1+ 2) zu extrahieren und deren Göße zu ändern bzw zu croppen.

    Zur Zeit mache ich das ffmpeg.

    Aber um nur ein Bild aus einem Video zu extrahieren, extra mit einem externen Programm wie ffmpeg zu arbeiten, erscheint mir zu umständlich.

    Könnte man das nicht einfach mit AutoIt machen?

    Danke.

    Code
    $CMD = @ScriptDir & "\" & "ffmpeg.exe -i " & $sMovieFile & " -ss 00:00:05 -vf ""scale=400:ih*400/iw, crop=300:200"" " & $vorschaubild
    RunWait(@ComSpec & " /c " & $CMD, "", @SW_HIDE)
    GUICtrlSetImage($pic_vorschau, $vorschaubild)
  • Converting image to a defined pallet of colors

    • ruby
    • 15. März 2019 um 12:21

    Hallo UEZ,

    doch noch ne Frage.

    Warum kann ich nicht mehr als 256 Farben nutzen.

    Bei > $tPalette.ARGB((256)) bricht es ab.

    Habe jetzt diese Einstellung:

    Code
    Local $iPaletteType = $GDIP_PaletteTypeOptimal
    Local $tPalette = _GDIPlus_PaletteInitialize($iColors, $iPaletteType, $iColors, False, $hImage)
    _GDIPlus_BitmapConvertFormat($hImage, $GDIP_PXF08INDEXED, $GDIP_DitherTypeSolid, $iPaletteType, $tPalette)
  • Converting image to a defined pallet of colors

    • ruby
    • 14. März 2019 um 12:10

    ok, schade :/

  • Converting image to a defined pallet of colors

    • ruby
    • 14. März 2019 um 09:56

    Hallo UEZ,

    ich muss noch einmal nachfragen.

    Bei den unteren Einstellung macht GDI+ mir diese Bild

    aber so soll es ausehen

    und das ist das original


    Was muss ich hier anders machen

    Local $tPalette = _GDIPlus_PaletteInitialize($iColors, $GDIP_PaletteTypeOptimal, $iColors, False, $hImage)

    _GDIPlus_BitmapConvertFormat($hImage, $GDIP_PXF08INDEXED, $GDIP_DitherTypeSolid, $GDIP_PaletteTypeOptimal, $tPalette)

    $tPalette.ARGB((1)) = 0xFF0E18F8

    $tPalette.ARGB((2)) = 0xFF1C2FE6

    $tPalette.ARGB((3)) = 0xFF2945D3

    $tPalette.ARGB((4)) = 0xFF365CC1

    $tPalette.ARGB((5)) = 0xFF4372AE

    $tPalette.ARGB((6)) = 0xFF50889B

    $tPalette.ARGB((7)) = 0xFF5E9F89

    $tPalette.ARGB((8)) = 0xFF6BB576

    $tPalette.ARGB((9)) = 0xFF78CC64

    $tPalette.ARGB((10)) = 0xFF85E251

    $tPalette.ARGB((11)) = 0xFF92F83E

    $tPalette.ARGB((12)) = 0xFF92F83E

    $tPalette.ARGB((13)) = 0xFF9AE63D

    $tPalette.ARGB((14)) = 0xFFA1D33C

    $tPalette.ARGB((15)) = 0xFFA8C13B

    $tPalette.ARGB((16)) = 0xFFAFAE39

    $tPalette.ARGB((17)) = 0xFFB69B38

    $tPalette.ARGB((18)) = 0xFFBE8937

    $tPalette.ARGB((19)) = 0xFFC57635

    $tPalette.ARGB((20)) = 0xFFCC6434

    $tPalette.ARGB((21)) = 0xFFD35133

    $tPalette.ARGB((22)) = 0xFFDA3E31

    $tPalette.ARGB((23)) = 0xFFDA3E31

    $tPalette.ARGB((24)) = 0xFFDE5133

    $tPalette.ARGB((25)) = 0xFFE16435

    $tPalette.ARGB((26)) = 0xFFE57737

    $tPalette.ARGB((27)) = 0xFFE88A38

    $tPalette.ARGB((28)) = 0xFFEB9C3A

    $tPalette.ARGB((29)) = 0xFFEFAF3C

    $tPalette.ARGB((30)) = 0xFFF2C23D

    $tPalette.ARGB((31)) = 0xFFF6D53F

    $tPalette.ARGB((32)) = 0xFFF9E841

    $tPalette.ARGB((33)) = 0xFFFCFA42

  • String von nicht Zahlen säubern und formartieren

    • ruby
    • 13. März 2019 um 22:52

    Bitnugger

    deswegen lernt man ja noch die "Sprache" und dafür gibt es das Forum mit euch poweruser.:)

  • Converting image to a defined pallet of colors

    • ruby
    • 13. März 2019 um 22:46

    Ah, super, vielen Dank, das hilft mir sehr.

    Schaue es mir genau an.

  • Converting image to a defined pallet of colors

    • ruby
    • 13. März 2019 um 22:37

    ah, super,

    wo sind denn mal die _GDIPlus_BitmapConvertFormat z.b. $GDIP_PXF08INDEXED, $GDIP_DitherTypeDualSpiral8x8 ... usw. genau beschrieben.

    In der Hilfe habe ich auf den ersten Blick nichts gefunden?

  • Converting image to a defined pallet of colors

    • ruby
    • 13. März 2019 um 19:14

    Hallo UEZ,

    im englischem Forum habe ich das von dir gesehen: https://www.autoitscript.com/forum/topic/18…llet-of-colors/

    Bei mehr als 16 $iColors wird das Bild nicht mehr verfremdet.

    Hier dein Script, mit mehr als 16 icolors.

    Was muss man einstellen um > 16 icolors zu nutzen.

    Habe schon die 256 geändert, bringt aber auch nichts.

    C
    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    
    
    Global $sFile = FileOpenDialog("Selecet an image", "", "Images (*.jpg;*.png;*.bmp)")
    If @error Then Exit MsgBox(16, "Error", "You must select an image!", 30)
    
    _GDIPlus_Startup()
    
    Global $hImage = _GDIPlus_ImageLoadFromFile($sFile)
    Global $iW = _GDIPlus_ImageGetWidth($hImage)
    Global $iH = _GDIPlus_ImageGetHeight($hImage)
    Global $hGUI = GUICreate("GDI+ v1.1 needed", $iW * 2 + 30, $iH + 20)
    GUISetState()
    
    
    Global $hGraphics1 = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    _GDIPlus_GraphicsDrawImageRect($hGraphics1, $hImage, 10, 10, $iW, $iH)
    _GDIPlus_GraphicsDispose($hGraphics1)
    
    Global $iColors = 17
    
    Global $tPalette = _GDIPlus_PaletteInitialize(256, $GDIP_PaletteTypeOptimal, $iColors, False, $hImage)
    $tPalette.ARGB((1)) = 0xFFD08CB2
    $tPalette.ARGB((2)) = 0xFF6CD2E9
    $tPalette.ARGB((3)) = 0xFF1FEA9F
    $tPalette.ARGB((4)) = 0xFF377D04
    $tPalette.ARGB((5)) = 0xFF767A57
    $tPalette.ARGB((6)) = 0xFFDDB9CA
    $tPalette.ARGB((7)) = 0xFF497242
    $tPalette.ARGB((8)) = 0xFFEBDF57
    $tPalette.ARGB((9)) = 0xFF1A5A4E
    $tPalette.ARGB((10)) = 0xFFEED3C6
    $tPalette.ARGB((11)) = 0xFFD43F42
    $tPalette.ARGB((12)) = 0xFF06071D
    $tPalette.ARGB((13)) = 0xFFAC5DE0
    $tPalette.ARGB((14)) = 0xFF08BDA6
    $tPalette.ARGB((15)) = 0xFF4B8FD7
    $tPalette.ARGB((16)) = 0xFF611D89
    $tPalette.ARGB((17)) = 0xFFB21502
    
    _GDIPlus_BitmapConvertFormat($hImage, $GDIP_PXF04INDEXED, $GDIP_DitherTypeSolid, $GDIP_PaletteTypeOptimal, $tPalette)
    DllCall($__g_hGDIPDll, "int", "GdipSetImagePalette", "handle", $hImage, "struct*", $tPalette)
    
    Global $hGraphics2 = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    
    _GDIPlus_GraphicsDrawImageRect($hGraphics2, $hImage, $iW + 20, 10, $iW, $iH)
    
    Do
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                _GDIPlus_GraphicsDispose($hGraphics1)
                _GDIPlus_GraphicsDispose($hGraphics2)
                _GDIPlus_ImageDispose($hImage)
                _GDIPlus_Shutdown()
                GUIDelete()
                Exit
        EndSwitch
    Until False
    Alles anzeigen
  • String von nicht Zahlen säubern und formartieren

    • ruby
    • 13. März 2019 um 19:01

    Hi Bitnugger,

    vielen Dank, da wird einem ja ganz schwindelig bei den vielen ?m)^\s+(\d+)....

    :)8o

  • String von nicht Zahlen säubern und formartieren

    • ruby
    • 13. März 2019 um 12:09

    Hi BugFix ,

    lösche die letzte leere Zeile mit StringStripWS($sResult, 1+2)


    Das ganz sieht jetzt so aus:

    Code
    Local $sResult = StringRegExpReplace($string, '(?m)\s*(\d+)\s+(\d+)\s+(\d+)(\D*)', '\1 \2 \3' & @CRLF)
    $out = StringStripWS($sResult, 2)
    ConsoleWrite($out)

    Also, nochmals vielen Dank.:klatschen:

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™