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

Beiträge von Banana_2_Day

  • Globale Variable ändern

    • Banana_2_Day
    • 28. August 2020 um 12:19

    Hallo,

    meiner Meinung nach habe ich folgende Konstruktion immer verwendet, um eine (globale) Variable über eine Funktion zu ändern.

    Das funktioniert derzeit nicht. Statt "neu" erhalte ich als Rückgabe "alt".

    Code
        Global $test =  "alt"
        
        _test_($test)
        ConsoleWrite (@ScriptLineNumber & @TAB & $test & @CRLF )    ;    warum erhalte ich hier nicht "neu" ?
        
        Func _test_($test)
            $test =  "neu"
        EndFunc

    Ich weiß, wie ich die Funktion mit Return anders schreiben kann, um "neu" zu erhalten.

    Ich möchte nur wissen, ob obiges Script ebenfalls "neu" zurückgeben müsste, oder ob ich mich so irre.

  • Gegenstück zu GUICtrlSetImage

    • Banana_2_Day
    • 21. August 2020 um 23:47

    Danke Oscar , das probiere ich.

  • Gegenstück zu GUICtrlSetImage

    • Banana_2_Day
    • 19. August 2020 um 21:41

    Hallo,

    mit GUICtrlSetImage kann ich das Bild eines Controls setzen. Das funktioniert gut.

    Ein Parameter von GUICtrlSetImage ist laut Hilfe:

    "filename = der Dateiname des Bildes, das auf dem Control angezeigt werden soll."

    Wie lautet der Befehl, mit dem ich den filename / Dateiname des Bildes auslesen kann, der von dem Control mit der ID x ( zum Beispiel Button, Icon etc. ) verwendet wird?

    Ich suche sozusagen GUICtrlGetImage statt GUICtrlSetImage.

  • Ordnerstruktur - nur Ordner mit String " - 2020" ohne Dateien in gleichnamige Ordner " - 2021" kopieren

    • Banana_2_Day
    • 16. Juli 2020 um 18:38
    Zitat von alpines

    Funktion lesen!

    Danke. Die Frage nach den Vorteilen bezog sich auf meine Fragestellung, also welche Funktion eher zum Ziel führt.

    Im Moment suche nach einer Lösung, einem Beispiel.

  • Ordnerstruktur - nur Ordner mit String " - 2020" ohne Dateien in gleichnamige Ordner " - 2021" kopieren

    • Banana_2_Day
    • 16. Juli 2020 um 18:34
    Zitat von Musashi

    Außerdem steht der gesuchte String - 2020 nicht zwingend am Ende.

    Danke und ja, das stimmt.

    Mit Deinem Script erhalte ich nur die Verzeichnistiefe bis inklusive " - 2020".

    Vorgabe (das möchte ich mit dem Script finden)

    c:\a\b\c\d - 2020 abc\e\f\g\h\f\\a\b

    Ich erhalte mit Deinem Script

    c:\a\b\c\d - 2020 abc

    Die Unterverzeichnisse fehlen.

    Beispiel für so einen Pfad:

    c:\a\b\c\d - 2020 abc\e\f\g\h

    c:\a\b\c\d - 2020 abc\e\f\g\h\i

    c:\a\b\c\d - 2020 abc\e\f\g\h\f\\a\b

    c:\a\b\c\d\e\f\g - 2020 ef\h

    Ich möchte die komplette Verzeichnisstruktur inklusive Unterverzeichnisse haben, wenn im gesamten Pfad der String " - 2020" an irgendeiner Stelle enthalten ist.

    Wie kann ich das lösen?

  • Ordnerstruktur - nur Ordner mit String " - 2020" ohne Dateien in gleichnamige Ordner " - 2021" kopieren

    • Banana_2_Day
    • 16. Juli 2020 um 11:48
    Zitat von Musashi

    Schaue Dir mal die Funktion _FileListToArrayRec an.

    Danke.

    Wo liegt der Vorteil von

    _FileListToArrayRec

    gegenüber der von Oscar verwendeten Funktion

    _RecursiveFileListToArray?

  • Ordnerstruktur - nur Ordner mit String " - 2020" ohne Dateien in gleichnamige Ordner " - 2021" kopieren

    • Banana_2_Day
    • 16. Juli 2020 um 11:21

    Hallo,

    ich habe eine tief verschachtelte Ordnerstruktur auf d:\test bis zu 24 Ebenen.

    Einige Ordnernamen enthalten den String " - 2020".

    Ausschließlich diese möchte ich ohne Dateien in der gleichen Ordnerstruktur auf e:\test kopieren und dabei " - 2020" gegen " - 2021" austauschen.

    Habt Ihr dafür eine Funktion oder ein Beispiel parat?

    Dircopy / Filecopy scheinen von Hause aus keine Beschränkung hinsichtlich der Anfrage zu haben.

    Eventuell wäre das Script von Oscar ein guter Ansatz. Falls ja, wie würdet Ihr das Script modifizieren, um zum Ziel zu kommen?

    C
    https://autoit.de/thread/15317-ordnerstruktur-in-datei-schreiben/
    
    #include <Array.au3>
    $sPath = @ScriptDir
    $aDirs = _RecursiveFileListToArray($sPath, '', 2)
    _ArrayDisplay($aDirs)
    $hFile = FileOpen(@ScriptDir & '\DirList.txt', 2)
    If $hFile <> -1 Then
    For $i = 1 To $aDirs[0]
    FileWriteLine($hFile, $aDirs[$i])
    Next
    FileClose($hFile)
    EndIf
    
    
    
    ;===============================================================================
    ; Function Name: _RecursiveFileListToArray($sPath[, $sPattern][, $iFlag][, $iFormat][, $iRecursion][, $sDelim])
    ; Description:: gibt Verzeichnisse (rekursiv) und/oder Dateien zurück, die einem RegExp-Pattern entsprechen
    ; Parameter(s): $sPath = Startverzeichnis
    ; $sPattern = ein beliebiges RexExp-Pattern für die Auswahl
    ; $iFlag = Auswahl
    ; 0 = Dateien & Verzeichnisse
    ; 1 = nur Dateien
    ; 2 = nur Verzeichnisse
    ; $iFormat = Rückgabeformat
    ; 0 = String
    ; 1 = Array mit [0] = Anzahl
    ; 2 = Nullbasiertes Array
    ; $iRecursion = Verzeichnisse rekursiv durchsuchen
    ; 0 = Nein
    ; 1 = Ja
    ; $sDelim = Trennzeichen für die String-Rückgabe
    ; Requirement(s): AutoIt 3.3.0.0
    ; Return Value(s): Array/String mit den gefundenen Dateien/Verzeichnissen
    ; Author(s): Oscar (http://www.autoit.de)
    ; Anregungen von: bernd670 (http://www.autoit.de)
    ;===============================================================================
    Func _RecursiveFileListToArray($sPath, $sPattern = '', $iFlag = 0, $iFormat = 1, $iRecursion = 1, $sDelim = @CRLF)
    Local $hSearch, $sFile, $sReturn = ''
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    $hSearch = FileFindFirstFile($sPath & '*.*')
    If @error Or $hSearch = -1 Then Return SetError(1, 0, $sReturn)
    While True
    $sFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    If StringInStr(FileGetAttrib($sPath & $sFile), 'D') Then
    If StringRegExp($sPath & $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &= $sPath & $sFile & '\' & $sDelim
    If $iRecursion Then $sReturn &= _RecursiveFileListToArray($sPath & $sFile & '\', $sPattern, $iFlag, 0)
    ContinueLoop
    EndIf
    If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &= $sPath & $sFile & $sDelim
    WEnd
    FileClose($hSearch)
    If $iFormat And $sReturn = '' Then Return StringSplit($sReturn, '', $iFormat)
    If $iFormat Then Return StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat)
    Return $sReturn
    EndFunc
    Alles anzeigen

    Sonnige Grüße.

  • Auf welchem Monitor befindet sich das Fenster?

    • Banana_2_Day
    • 14. Juni 2020 um 11:40

    Danke Oscar, das funktioniert 1a.

  • Auf welchem Monitor befindet sich das Fenster?

    • Banana_2_Day
    • 12. Juni 2020 um 11:32

    Hallo,

    Auf welchem Monitor befindet sich das Fenster? ... z.B. Notepad

    Was ist die einfachste Lösung mit AutoIt, um das festzustellen?

    Ich habe im englischsprachigen Forum ein Script gefunden, was ich nicht zum Laufen bekomme.

    https://www.autoitscript.com/forum/topic/19…is-a-window-on/

    Im Ergebnis möchte ich eine Messagebox, die die Bildschirmnummer für das jeweilige Fenster ausgibt.

    Habt Ihr ein besseres Script oder bekommt ihr obiges Script so lauffähig, dass das Ergebnis in einer Messagebox ausgegeben wird?

  • Tastatur Hardware - strg alt - vmware verlassen

    • Banana_2_Day
    • 9. Mai 2020 um 08:58

    Das sind interessante Anregungen. Ich teste sie gleich.

    Zitat von Bitnugger

    Teste es mal so:

    Danke getestet - das hat leider nicht funktioniert. Alles, was ich über AutoIt in der vmware auslöse, bleibt in der vmware. Egal ob Tastatur oder Mausbewegung an den Bildschirmrand oben bzw. unten, womit ich auch raus aus der vmware wäre.

    Zitat von Kanashius

    Das Einzige was mir einfällt wäre ein geteilter Ordner/Clipboard und ein Programm beim Host reagiert dann auf Änderungen dort und sendet die Tastenkürzel.

    Danke - das klingt nach einer Möglichkeit. Ich probiere das aus.

    Als Lösung nehme ich derzeit, Maus auf Taskleiste - damit bin ich auch raus aus der vmware. Per Hand :) Danke an alle!

  • Tastatur Hardware - strg alt - vmware verlassen

    • Banana_2_Day
    • 7. Mai 2020 um 09:39
    Zitat von Neklor
    Code
    Send("^!")

    Funktioniert das?

    Das funktioniert leider nicht. Vmware erkennt, dass das keine Hardware - Tastatureingaben sind.

    Zitat von BananaJoe

    Ganz anderer Vorschlag: Hast Du schon WinActivate() probiert?

    Wenn ich Dich richtig verstehe, soll ich ein Fenster im Hostsystem ansprechen - richtig?

    Das Windows in der vmware hat keine Kenntnis vom Hostsystem und deren Fenster.


    Zitat von Racer

    Gibt es da nicht eine API zur VMWare? Mit der sollte es möglich sein zwischen Hostrechner und Gast zu kommunizieren.

    Hast Du schon mal ins VMWare-Forum gesehen ob nicht jemand da schon etwas gemacht hat?

    Im vmware Forum hatte ich keinen Erfolg. Relativ wenige nutzen dort AutoIt.

    Die Idee einer API zu vmware klingt gut, wobei ich mir die Kommunikation Host -> Gast vorstellen kann. Gast -> Host dürfter schwieriger sein.

    Scheint die VixH.au3 zu sein. Das sieht mehr nach einer Einbahn-Kommunikation Host -> Gast aus.

    Ich denke, der einfachste Weg wäre über AutoIt / Windows API - das Senden von Tastaturdrücken, die als Hardwaretastatur anerkannt werden.

    strg alt auf der Tastatur eingeben, und ich befinde mich wieder im Host-System

    Allein das brauche ich per AutoIt :)

    Bugfix und die anderen, die die Tiefen von AutoIt und Windows API ausgelotet haben, könnten das wissen, wie mit AutoIt Tastendrücke so gesendet werden, dass sie vom System als Hardware-Eingaben anerkannt werden.

  • Tastatur Hardware - strg alt - vmware verlassen

    • Banana_2_Day
    • 5. Mai 2020 um 11:02

    PS: benutzt jemand von Euch "Virtual Box" und weiß, mit welchem Hotkey man "Virtual Box" verlässt und ob das über einen über AutoIt gesendeten Hotkey geht?

  • Tastatur Hardware - strg alt - vmware verlassen

    • Banana_2_Day
    • 4. Mai 2020 um 09:48

    Hallo,

    in meinem Workflow wechsle ich häufig zwischen Anwendungen in der vmware und außerhalb der vmware.

    Die vmware kann ich nur mit strg + alt verlassen. Erst dann kann ich auf Anwendungen außerhalb der vmware zugreifen.

    Folgendes funktioniert hier nicht, wenn ich das als Script in der vmware ausführe:

    Send("{CTRLDOWN}{ALT}{CTRLUP}")

    Send("{CTRLDOWN}{ALTDOWN}{ALTUP}{CTRLUP}")

    Diesen Weg fand ich im englischsprachigen Forum:

    https://www.autoitscript.com/forum/topic/64…o-host-machine/

    Wie kann ich die vmware mit AutoIt verlassen?

    Ggf. gibt es eine Windows API, die den Hotkey "strg alt" so senden, dass die vmware das als echte Hardware-Tastatureingabe anerkennt?

    Falls das mit AutoIt nicht geht, würde ich auch einen x-beliebigen anderen Weg nutzen, sofern ich damit sehr schnell ohne eigene Tastatureingabe zwischen der VMware und einem Programm außerhalb der VMware softwaregesteuert hin und her wechseln kann.

    Welche Möglichkeiten kennt Ihr?

    Nutzt jemand von Euch vmware?

    vmware 15.5

    Windows 8 / 10

  • Drag and Drop erkennen

    • Banana_2_Day
    • 11. Februar 2020 um 12:31

    Hallo,

    per Drag and Drop ziehe ich einen Text aus Chrome (Fenster rechts) z.B. in Word hinein.

    Ich möchte im Zielfenster 1x Enter sowie Datum und Uhrzeit nach der Drag and Drop Aktion automatisch einfügen.

    Wie kann ich das umsetzen?

    Wie erkenne ich mit AutoIt, ob systemweit eine Drag and Drop Aktion ausgeführt wurde?

    Gibt es dafür eine Windows-Benachrichtigung, die ich mit AutoIt auswerten kann?

  • Oscars Listview-Datenbank v3 - mit Suche nach mehreren Begriffen

    • Banana_2_Day
    • 6. November 2019 um 13:36
    Zitat von Oscar

    jeder Suchbegriff muss mit einem "+" oder "-" anfangen

    Vielen Dank Oscar. Ich habe die Datei mit meiner Beispieldatei getestet.

    Wenn ich richtig getestet habe, darf es kein Leerzeichen zwischen den Suchbegriffen geben, also nicht:

    +Hund -Katze

    richtig wäre

    +Hund-Katze

    Stimmt das?

  • Oscars Listview-Datenbank v3 - mit Suche nach mehreren Begriffen

    • Banana_2_Day
    • 31. Oktober 2019 um 21:04
    Zitat von Oscar

    Ich habe gerade festgestellt, dass die Suche nach mehreren Suchbegriffen gar nicht so viel länger dauert.

    Das klingt hervorragend. Freue mich auf einen Test. Danke und ein erholsames Wochenende!

  • doppelte Worte aus Zeichenkette entfernen - von links beginnen

    • Banana_2_Day
    • 30. Oktober 2019 um 08:39
    Zitat von UEZ

    Hier mein Lösungsvorschlag:

    Danke für diese Variante.

  • doppelte Worte aus Zeichenkette entfernen - von links beginnen

    • Banana_2_Day
    • 29. Oktober 2019 um 16:03
    Zitat von water

    Versuch #2:

    wow - Treffer und versenkt. Danke!

    Du durchläufst das Array rückwärts .... setzt doppelte Werte auf "~~" ... aber wie genau?

    Kannst Du den Teil kurz erklären?

    Wie findest Du die doppelten Einträge?

    Im 2. Schritt werden alle Array-Einträge,die "~~" entsprechen, gelöscht. Richtig?

  • doppelte Worte aus Zeichenkette entfernen - von links beginnen

    • Banana_2_Day
    • 29. Oktober 2019 um 15:30
    Zitat von water

    Sowas?

    Hallo Water,

    im Prinzip ja, nur soll das letzte Wort erhalten bleiben. Von links ausgehend lesen und löschen - das Wort am weitesten rechts bleibt erhalten. Siehe mein Beispiel aus Post 1.

    Code
    Global $aArray[] = ["Word1", "Word2", "\" , "Word2", "Word3",  "\" , "Word3", "Word4"]
    Global $iEnd = UBound($aArray) - 1
    For $i = 0 To $iEnd
        For $j = $iEnd to $i + 1 Step -1
            If $aArray[$i] <> "\" Then
                If $aArray[$i] = $aArray[$j] Then
                    _ArrayDelete($aArray, $j)
                    $iEnd = $iEnd - 1
                EndIf
            EndIf
        Next
    Next
    _ArrayDisplay($aArray)
    Alles anzeigen

    Bei Deinem Script bleibt jeweils das erste Wort erhalten.

    Row0 Word1

    Row 1 Word2

    Row2 \

    Row 3 Word3

    Row 4 \

    Row 5 Word4

    Ich möchte, dass doppelte Worte von links ausgehend gelöscht werden.

    Gesuchtes Ergebnis ist:

    Row0 Word1

    Row 1 \

    Row 2 Word2

    Row 3 \

    Row 4 Word3

    Row 5 Word4

    oder um mein Beispiel von oben zu nehmen - hier als Formel für das Script

    Global $aArray[] = [ "das", "ist", "ein", "Hund", "\", "das", "ist", "eine", "Banane", "\", "das", "ist", "eine", "Katze", "\", "das", "ist", "ein", "Kakadu" ]

    Ergibt mit Deinem Script noch :) nicht

    richtig wäre:

    Hund

    \

    Banane

    \

    eine

    Katze

    \

    das

    ist

    ein

    Kakadu


    sondern (falsch)

    das

    ist

    ein

    Hund

    \

    eine

    Banane

    \

    Katze

    \

    Kakadu


    Kannst Du Dein Script so abändern, dass die Doubletten von links ausgehend gelöscht werden? Vielen Dank für die bisherige Hilfe!

  • doppelte Worte aus Zeichenkette entfernen - von links beginnen

    • Banana_2_Day
    • 29. Oktober 2019 um 14:52

    Ich glaube, ich habe was von Bugfix gefunden - teste es gerade.

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™