Beiträge von BugFix

    Ich hab dir mal ein Bsp. gemacht, wie du von ausserhalb selbst auf Tastaturevents in PSPad reagieren kannst:


    Ich habe meine Aufträge in Exceltabelle vorliegen mit den Adressen in Form: PLZ|ORT|STRASSE_NR.

    Um mal schnell in Maps nachzuschauen, wo genau die Adresse liegt, habe ich mir ein kleines Makro geschrieben. Vielleicht auch nützlich für euch.

    Adressfelder markieren und das Makro ausführen. Es ist egal, wie viel Felder für die Adresse genutzt werden, das Makro verbindet alle markierten Feldinhalte und öffnet damit Maps.


    Ich klinke mich mal kurz ein, da ich der Meinung bin, du verrennst dich.

    - Funktionen lassen sich in PSPad nur ausführen, wenn sie in einem Skript vorliegen und dieses eine INIT-Routine enthält (diese wird beim Start von PSPad gelesen)

    - Diese Funktionen müssen an einen Menüpunkt oder an einen Hotkey gekoppelt sein

    - PSPad stellt keine Events bereit auf die reagiert werden kann

    - Es gibt kein globales Startup-Skript, indem man zum Bsp. Callbackfunktionen registrieren könnte


    Fazit:

    Eine Individualisierung außerhalb von Menüpunkten und Hotkeys ist nicht vorgesehen und somit mit internen Mitteln des Editors nicht lösbar.

    Vielleicht lässt sich mit Message-Hooking, Injection, o.ä. Zugriff auf die erforderlichen Events erhalten. Bleibt zu prüfen, ob der Aufwand in irgendeinem sinnvollen Verhältnis zum Nutzen steht.

    Sehr gut individualisieren lassen sich (neben SciTE) z.B. die Editoren Visual Studio Code oder auch Sublime Text. Du musst entscheiden, ob dir Klicki-Bunti-Oberfläche wichtig ist, oder ein funktionaler, sehr gut erweiterbarer Editor.

    Ich lass mal ein paar Gedanken los.

    - Du möchtest die Möglichkeit haben die Suchbegriffe ohne fixe Reihenfolge einzugeben.

    - Die Bedienung soll per Mausklick erfolgen.


    Das kann man mit SQLite-DB lösen, ist aber auch noch nicht optimal an diese Situation angepasst (Schwachstelle: ungewisse Reihenfolge der Suchbegriffe).

    Was ist für eine optimale Lösung erforderlich?

    - Eingabe irgendeines Begriffes aus der Suchkette sollte sowohl abwärts (Children) als aufwärts (Parent) rekursiv verfügbare Begriff(ketten) auflisten

    - Durch diese Begriffe kann man sich dann zum Ziel durchklicken bzw. wenn ein Eintrag fehlt, diesen neu erfassen.

    - Begriffe sollten also mit entsprechenden Verweisen (auf/abwärts) gespeichert sein


    Die Aufgabe lautet also: Welche Datenbank(struktur) ermöglicht dieses schwarmartige Speichern. Hier würde ich Ansetzen und das wäre doch auch mal eine interessante Aufgabe, sowas in AutoIt umzusetzen.

    Ich habe keine Ahnung, ob und wie das umzusetzen geht. - Sind halt nur Gedanken.

    Kennst du Dbug?

    Ja. Wo ist der Zusammenhang? Ich sagte doch:

    "Ähm, es liegt in der Natur von AutoIt als Interpretersprache, dass man es NICHT und in KEINEM Editor debuggen kann, wie man es vielleicht von C++ kennt."

    Und Dbug arbeitet nicht im Editor selbst, sondern kopiert den Inhalt des Editors in ein Schattenskript, fügt in dieses Skript Auswertezeilen ein um Werte zu debuggen und führt das Skript ausserhalb des eigenen Editors aus.

    Debuggen im Editor selbst funktioniert z.B. mit VBA-Skripten im VBA-Editor. Kannst du ja mal in Excel oder Word ausprobieren um den markanten Unterschied zu sehen.

    Ich glaub du hastn Brett vorm Kopf. Der Sinn RegEx zu nutzen ist es ja das ganze eleganter auszudrücken und abzukürzen.

    Und ich glaub, du bist auf Krawall gebürstet. :P

    Ich bin nur darauf eingegangen, dass eine UND-Verknüfung sehr wohl mit RegExp möglich ist (es war nicht die Rede davon, dass das im Pattern passieren muss). Ob das sinnvoll ist, stand gar nicht zur Debatte. Das muss eh jeder für sich selbst einordnen.


    Wirklich "sinnvoll" ist weder RegExp noch StringInStr. Wie schon in dem Thread, auf dem dieser basiert, besprochen, sollte man das mit SQLite lösen. Elegant, geschmeidig und sauschnell auch bei zigtausend Einträgen. :thumbup:

    Gedanke zu StringRegExp - da die Worte in der Reihenfolge wechseln können, scheidet StringRegExp wohl aus für eine UND-Suche.

    Bei einer UND Suche ist die Reihenfolge völlig schnuppe:


    Öffne ein Script das mehr beinhaltet, als das SciTE-Fenster anzeigen kann, markiere Wörter oder 1, 2 Zeilen, dann versuche sie mit der Maus nach unten in den Bereich zu ziehen, der nicht angezeigt wird.

    Ja und? Wo soll jetzt das Problem sein. Wenn du nicht gewillt bist dir SciTE zu eigen zu machen (steht dir frei), solltest du dir aber ersparen darauf herum zu hacken. Ich habe zig AddOns für SciTE geschrieben, aber in der Regel nachdem jemand fragte "Könnte man das in SciTE realisieren?". Auf "Mist das SciTE das nicht kann!" werde ich dann auch nicht gewillt sein anzuspringen.

    Zitat von Professor Bernd

    Debugger und Formdesigner sind suboptimal

    Ähm, es liegt in der Natur von AutoIt als Interpretersprache, dass man es NICHT und in KEINEM Editor debuggen kann, wie man es vielleicht von C++ kennt.

    Zitat

    Hier haben doch einige Erfahrung mit dem WSH und COM-Objekten, kann mir da jemand ein wenig helfen?

    Wir wissen ja nicht, welches Objekt du behandeln möchtest, welche Methoden und Eigenschaften dieses besitzt. Insofern nützt die Kenntnis vom Umgang mit Objekten rein gar nichts.

    Zur Verwendung von Events: Diese sind effektiver als jede Schleife. Sie werden NUR ausgelöst, wenn ein Ereignis (Taste gedrückt, Taste gelöst, Zeichen in Editor eingefügt etc.) eintritt. Mittels Callback Funktion wird dann ausgewertet.

    Könnte man diesen Beitrag eventuell anpinnen? Sonst geht er ruck-zuck unter. Wie es aussieht, kann ich das nicht selbst machen obwohl ich PU bin.

    Eventuell könnte man all/einige der gepinnten Themen von Der Doc entpinnen, da sie mit 2010/2011 doch ziemlich alt sind.

    Was meint Ihr?

    Erledigt

    Wie ich vorgehen würde:

    - einklinken in die Windows-Messages (Hook)

    - wenn Nachricht gesendet wird: SHOW an Fenster Taskbar

    -- mit Handle des Senders der Nachricht

    -- in Prozessauflistung nach diesem Handle suchen


    Es kann natürlich sein, dass die Nachricht vom Fenster eines Prozesses gesendet wurde und somit keine Übereinstimmung der Handle besteht. In diesem Fall müsste man noch eine Fensterauflistung zu allen Prozessen machen und wiederum die Fensterhandle abgleichen.

    ShellExecute('bcu64.exe', '/setvalue:"Password Minimum Length","4" /cspwdfile:%publicPW% /verbose') funktioniert nicht? Ggf. 'WorkingDir' setzen.

    Slash ist kein Zeichen, das escaped werden muss.

    Die angegebenen Koordinaten sind ja nur bei einer Skalierung von 120 % gültig und müssten daher beim Ändern der Skalierung jedesmal angepasst werden.

    Kann man eigentlich irgendwie erreichen, dass die Koordinaten immer automatisch an die eingestellte Skalierung angepasst werden?

    Gib deine Koordinaten nicht als Fixwerte ein, sondern berechne den Berichtigungsfaktor beim Skriptstart in einer Funktion.

    Mal ohne jede Richtigkeit von Werten - nur als Idee:


    Bei der GUI-Gestaltung mit gleichen Elementen, tabellenförmig angeordnet, probiert man ja meist etwas, bis es passabel aussieht. D.h., Anzahl Zeilen, Spalten sowie Abstände variieren.

    Mit diesem Snippet fällt alle Rechnerei weg, es werden nur die Startwerte verändert. Bsp. ist mit Button, kann natürlich mit anderen Controls genauso verwendet werden.

    Kennt ihr sicher: Datenbankabfragen und Ergebnismenge für nächste Abfrage nutzen (z.B. bei Filtern von Listen während der Eingabe von Begriffen)

    Ich habe das mal für SQLite-DB in Verbindung mit AutoItObject realisiert. Als Bsp. ist meine PLZ-DB (habe ich selbst erstellt, könnt ihr frei nutzen) eingebunden:

    Vielleicht könnt ihr es auch verwenden.

    Dateien

    • objFilter.au3

      (7,07 kB, 21 Mal heruntergeladen, zuletzt: )
    • plz_brd.zip

      (232,04 kB, 22 Mal heruntergeladen, zuletzt: )

    Warum so eine alte Version? Hat das Vorteile? :/

    JA.

    Wenn man externe Bibliotheken in Lua-Skripten einbinden möchte bedarf das des Befehls require. In neueren SciTE-Versionen funktioniert das nicht mehr (Details s. hier)

    Deshalb:

    - neueste SciTE4AutoIt-Version installieren (damit geänderte Funktionen etc. bekannt gemacht werden)

    - in der Installation die scite.exe gegen eine alte Version austauschen. (3.6.6 funktioniert definitiv, evtl. auch noch die Folgeversion, habe ich aber nicht probiert)