Beiträge von AutoMit

    Ja, verwende eine Maus ohne Spezialtasten (nicht böse gemeint) :P.

    Schon mal dran gedacht, dass ich diese Funktion extra auf eine Spezialtaste gelegt habe?

    Der Hersteller der Maus hat nicht vorgesehen, dass die Tasten für bestimmte Fenster deaktiviert werden können. Das wollte ich auf einfachem Wege mit Eurer Hilfe und AutoIt bewerkstelligen.


    ( Edit )


    ... anstelle einer Signatur ...


    Dieses AutoIt-Forum ist ein Glücksspiel.

    Es gibt Themen, bei denen schreibt eine hilfreiche Seele ein top nachvollziehbares Beispiel – häufiger schon selbst erlebt - Danke dafür ! :)
    Oder es gibt kluge Ratschläge ( Nackenschläge ) und Grundsatzdiskussionen abseits vom Thema ... :(
    Es ist und bleibt ein Glücksspiel - mal verliere ich - mal gewinnen die anderen - damit kann ich leben.
    Das Leben hat ein paar existenzbedrohende Nüsse für mich, die ich knacken muss. Jetzt !

    Daher allen einen schönen Sommer und raus.
    Grüner Harken = Escape ( Notausgang ).

    Und einfach die Spezial-Taste an der Maus deaktivieren


    Mit zunehmenden Alter erkenne ich immer mehr, dass gedachte Erleichterungen oft nur kurzfristig sind, weil sie auch wg. Updates und Änderung von 'außen' gepflegt werden müssen. Sich mit dem 'Standard' zu arrangieren ist dann u.U. langfristig einfacher.

    Ganz im Gegenteil – bei meinem Workflow sind die Maus-Funktionen genial und die kleine Hürde, dass versehentlich ab und zu Fenster geschlossen werden, die dann wieder geöffnet werden müssen, dachte ich mit AutoIt zu umschiffen ( für mich derzeit leider zu kompliziert - Hook ) ... Der Rest sprengt den Rahmen des Themas und wäre der Beginn einer Grundsatzdiskussion, dass eine Pflanze mit 10 Wurzeln entscheiden möchte, dass der Baum mit 1000 Wurzeln auch nur 10 benötigt ( darf ).


    Aktuell dringende Themen zwingen mich hier auszusteigen.


    Allen einen schönen Sommer – viel Vergnügen – grüner Haken gesetzt.

    Eine einzige Funktion schreiben ( _WindowRegisterStatic) und das gewünschte Verhalten allgemein gültig für das/die registrierten Fenster ausführen (und noch eine zum deregistrieren - _WindowUnRegisterStatic) .

    Einfach, im Sinne von 2..3 Befehle hinklatschen geht hierbei gar nicht. Und richtig funktionierend geht es ausschliesslich, wenn du dich in die Windows-Message Verwaltung einklinkst, also per Hook. Denn andere Anwendungen könnten sonst durch Senden von Nachrichten das Verhalten deiner Fenster beeinflussen. Das kannst du nur kontrollieren, wenn du selbst in der Nachrichtenzentrale sitzt.

    das klingt einleuchtend – übersteigt meine Fähigkeiten


    Ich begebe mich auf die Suche nach verständlich dokumentierten Beispielen zum Thema „Windows-Message Verwaltung einklinken - Hook.“


    Wer ein Beispiel hat – bitte hier in das Thema mit einfügen.


    Thema auf Grün gesetzt, da dass Suchen und Testen viel Zeit in Anspruch nimmt.

    Nimm die Hookvariante, dann lernst du auch ein bisschen was über WindowMessages.

    Das ist mir im Moment zu zeitaufwendig - eine Arbeit für mehrere Tage ( kollidiert mit wichtigen Terminen ).


    Mal neben dem Weg gedacht .... Fenster werden mit strg + F4 geschlossen, alle Fenster werden mit win + m miniert ...


    Was haltet Ihr von folgender Möglichkeit, die Hotkeys in Schleife abzufangen und wenn z.B. Notepad im Vordergrund ist, wird der Hotkey "win + m" ignoriert, ansonsten durchgelassen?


    Wäre das eine sinnvolle Idee?

    Hallo Musash, die Erklärung ist ganz einfach. Auf der Maus habe ich eine Taste, mit der ich beliebige Fenster schließen kann. Es gibt wenige Ausnahmen, wo einen Fenster fehlerhafterweise den Fokus hat und dann ist das Fenster schneller zu, als gewollt. Es gibt bestimmte Fenster, die sollen den kompletten Tag über geöffnet bleiben und auch nicht minimiert werden.


    Daher suche ich dafür eine Lösung.


    zusammengefasst für ein Fenster


    nicht minimieren

    nicht schließen

    keine Änderung der Größe und der Position

    Hallo,


    Lösung für Notepad, Word und Excel gesucht


    Bestimmte Fenster sollen nie auf die Befehle „(alles) minimieren“ bzw. „schließen ( Hotkey oder Mausklick Kreuz)“ reagieren.


    Wie erreiche ich dieses Ziel?


    Welches AutoIt-Skript kann im Hintergrund laufen lassen, was diese Befehle abfängt?


    Gibt es dafür ein fertiges Beispiel?


    Wie überwache ich einen Fenster dauerhaft, ob es den Befehl „minimieren“ bzw. „schließen“ erhält und wenn ja, wie fange ich diesen Befehl ab?

    Gibt es noch einen anderen Lösungsansatz?


    Hier geht es ausschließlich um Fenster, die nicht in AutoIt programmiert wurden.


    Danke :)

    Danke – stimmt – ich habe an der falschen Stelle geschaut ( bei den Beispielen und unter Bemerkungen ).

    „Filter für das Ergebnis- Mehrere Filter müssen mit einem ; getrennt werden“


    Das eigentliche Problem besteht noch:


    "Ziel: ein Array mit allen *.txt und *.doc Dateien, alphabetisch nach Dateinamen sortiert."


    Ich gehe durch ein Verzeichnis mit vielen Unterverzeichnissen.


    als Liste erhalte ich zeilenweise Verzeichnisname und Datei als Array - beispielsweise


    Test 1\z.txt

    Test 9 mal an\Unterverzeichnis_x\a.doc


    richtig sortiert nach Dateiname

    Test 9 mal an\Unterverzeichnis_x\a.doc

    Test 1\z.txt


    Wie kann ich das Array so umsortieren, dass es nach dem Dateinamen sortiert ist?


    _FileListToArrayRec erzeugt als Ergebnis Pfade und Dateinamen in jeweils einem Datensatz ( einer Zeile )


    Was wäre der einfachste Weg zur Sortierung nach Dateiname innerhalb des Arrays?

    Oder wird eine Hilfskonstruktion benötigt?

    Hallo,


    (A) kann ich mit dem Befehl _FileListToArrayRec in einer Zeile nach *.txt und *.doc und ggf. noch weiteren Erweiterungen / Dateien suchen?


    Bisher nutze ich:


    $aArray_1 = _FileListToArrayRec ( $Quellverzeichnis , "*.txt ", $FLTAR_FILES, $FLTAR_RECUR , $FLTAR_SORT )

    $aArray_2 = _FileListToArrayRec ( $Quellverzeichnis , "*.doc ", $FLTAR_FILES, $FLTAR_RECUR , $FLTAR_SORT )


    (B) Was ist der einfachste Weg, um aus 2 Arrays 1 sortiertes Array zu machen, wenn die interne Struktur wie im obigen Beispiel indentisch ist?

    ( also sowas wie $aArray = $aArray_1 + $aArray_2 )


    Ziel: ein Array mit allen *.txt und *.doc Dateien, alphabetisch nach Dateinamen sortiert.


    Danke :)

    Hier ist ja noch einmal richtig Leben reingekommen, nachdem ich den grünen Haken bereits gesetzt habe.


    Ja, es ist richtig, die „verstümmelte“ Zeile entsteht, wenn aus speziell kodierten E-Mails etwas aus dem Quelltext kopiert wird.


    Das habe ich erst heute erfahren, da ich die eingangs zitierte Quelle von einem Bekannten erhalten habe, mit der Bitte, wie man das automatisch in eine lesbare Zeichenkette umwandeln kann.


    Mit dem Tipp von alpines konnte für die wenigen Zeichen sehr einfach eine „Übersetzung“ erstellt werden, sodass das Problem in Beitrag vier als gelöst gesetzt werden konnte.


    Danke :)

    Danke :)


    Ich versuche die beiden Beispiele zu verstehen.


    Variante 1 - While


    Weißt Du , warum bei einer For-Schleife der Ausdruck in der For-Schleife nicht aktualisiert wird, während bei einer While-Schleife der Ausdruck bei jedem Durchlauf aktualisiert wird?

    Details


    Interessant - bei einer While Schleife wird vor Ausführung der Wert "UBound($aFile)" aktualisiert.

    Getestet mit

    $max = UBound($aFile) = 879 in diesem Beispiel


    Bei einer For Schleife wird "UBound($aFile)" nicht aktualisiert.

    Daher

    $max = UBound($aFile) = 659 in diesem Beispiel


    => und da sind die fehlenden 220 Elemente :)


    Variante 2


    Array rückwärts - bei mir tritt ein kleiner Fehler auf. Bei Dir auch?

    Edit: Danke Bitnugger für Deine Zeilen drüber ( das scheint die Erklärung zu sein )

    "

    ; Aber Achtung...

    ; denn steht der gesuchte String in der letzten Zeile des Arrays, wird kein '# 2a' eingefügt, weil _ArrayInsert hier versagt...

    "


    Beim letzte Arraywert "#Region 440" wird kein "Test 440" drunter geschrieben.


    Wie wird dieser Wert ( letzte Zeile im Array ) auch berücksichtigt?


    Das Script beginnt mit 439 statt 440

    @@ Debug(26) : $i = 439


    So gehts nicht

    ;~ For $i = UBound($aFile) To 0 Step -1 ; Fehler

    ;~ For $i = UBound($aFile) -1 To -1 Step -1 ; Fehler

    Also entweder eine While-Schleife nehmen oder du gehst das ganze von hinten durch, dann bleiben die Arrayindizes nämlich nach vornehin konsistent.

    Magst Du dafür je ein kurzes Beispiel schreiben? Ich habe für beide Varianten "While" und "rückwärts" keine Idee, wie ich das auf das obige Beispiel anpasse.

    Wie kann ich das innerhalb der Schleife aktuell halten? Das ist der Kern meiner Frage aus dem ersten Beitrag – steht allerdings ganz am Ende :)


    Code
    For $i = 0 To UBound($aFile) - 1 Step 1
            If StringLeft ( ($aFile[$i]) , 8 ) = '#Region ' Then
                _ArrayInsert ( $aFile, $i + 1, "Test " & StringRight ( $aFile[$i] ,  StringLen ( $aFile[$i]  ) -8  )  )
                $i  += 1
            EndIf
    Next

    Ich hoffte, dass es durch Deine eingefügte Zeile „$i += 1“ korrigiert ist. Aber diese Zeile ist wohl nur dafür da, um die nächste richtige Zeile in der IF-Abfrage zu bearbeiten.


    Wie berücksichtige ich in der FOR-Schleife das vergrößerte Array?


    PS: Du warst schneller :) Ich schaue es mir gleich an.


    PS 2: Danke für den Tipp mit den Klammern, stimmt - hatte ich beim Reduzieren des Codes fürs Forum übersehen.