Selektierten Text in SynEdit finden

  • Hallo Leute.

    Wie kann man den markierten Text aus einem SynEdit-Control ("TPSSynEdit") bekommen?

    Ich sitze nun schon seit Tagen erfolglos daran, ein markiertes Wort aus dem SynEdit von PSPad (Haupt-Editor-Komponente) zu bekommen. Unzählige Hilfe- und Web-Seiten habe ich gelesen, viele, viele Test durchgeführt, doch ich finde es alleine nicht raus. Kann mir jemand helfen? :)

    Hier ein Ausschnitt aus meinen Versuchen, SynEdit oder dem Parent ("TfChildEdit") etwas zu entlocken.

    Gruß,

    Bernd.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Komisch, bei mir gibt er nur ?????????? zurück:

    +>19:39:38 AU3Check ended.rc:0
    >Running:(3.3.14.5):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\Users\User1\Desktop\SynEdit - Get selected text 0 - Kopie.au3"
    +>Setting Hotkeys...--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
    @@_Debug_line 28 var: $hPsPad --> 0x0003088A  
    @@_Debug_line 31 var: $hTPSSynEdit --> 0x001C1072
    ---------------------------------------------------
    ???????????????????????????????????????

    ---------------------------------------------------
    +>19:39:40 AutoIt3.exe ended.rc:0  
    +>19:39:40 AutoIt3Wrapper Finished.
    >Exit code: 0 Time: 2.54

    Bitnugger Danke für den Code. Ich habe ihn in als Datei hochgeladen, damit man ihn bequem zum Testen benutzen kann.

  • Wieso kommt bei euch Text an? OS? Ich benutze Win 10 1809. Kann es daran liegen? Oder an den PSPad Versionen?

    Meine PSPad Versionen

    - 5.0.1 (312) - 2019-02-22

    - 5.0.2 (b339) - 2019-10-25

    Nachtrag: Das Schreiben ins SynEdit hat funktioniert (wenn vorher WinWaitActive). Schreiben habe ich aber jetzt abgeschaltet.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Hier mal der Code von Bitnugger kombiniert mit meiner Erkennung des SynEdits (HWND). Nun kommt zwar irgendwas an, aber das sieht eher nach einem abgeschnittenen Teil des Dateipfades an.

    >Running:(3.3.14.5):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\Users\User1\Desktop\SynEdit - Get selected text\SynEdit - Get selected text - Version A - 2.au3" 

    +>Setting Hotkeys...--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop

    ---------------------------------------------------

    ???????????????????????????????????????

    ected text\Test-Text.txt

    ---------------------------------------------------

    Ich habe verschiedene Kombinationen von Handles und IDs probiert, leider ohne Glück. :(

    Weitere Vorschläge?

  • Professor Bernd 8. November 2019 um 20:59

    Hat den Titel des Themas von „Selectierten Text in SynEdit finden“ zu „Selektierten Text in SynEdit finden“ geändert.
  • Meine Glaskugel :Glaskugel: sagt, er könnte ControlGetText meinen (also ohne Selection). Aber viel wichtiger: Kommt bei dir denn der Text an? Siehe mein Posting #6 wg Infos zu meinem OS und PSPad Versionen.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

    Einmal editiert, zuletzt von Professor Bernd (8. November 2019 um 21:38) aus folgendem Grund: Typo

  • Moin,

    ich habe heute eine ganze Weile mit AutoItObject gespielt (erneut).

    Folgende Option hättest du:

    Du kannst mit AutoItObject ein Com-Object im ROT (Running Object Table) erstellen und auf dieses aus den JScript / VBScript Skripten zugreifen.

    Auf diesem Wege könntest du dir eine kleine Brücke zwischen den beiden Welten schlagen.

    Ich habe es eben nur mit einem kleinen Snipsel probiert, aufwändigere Aktionen müsste man testen.

    Falls Bedarf und Interesse besteht werde ich gern ausführlicher.

    Gruß

  • Du kannst mit AutoItObject ein Com-Object im ROT (Running Object Table) erstellen und auf dieses aus den JScript / VBScript Skripten zugreifen.

    Auf diesem Wege könntest du dir eine kleine Brücke zwischen den beiden Welten schlagen.

    Hallo Churanos, das hört sich interessant an!

    Ich habe schon öfter überlegt, wie man VBScript und AutoIt miteinander kommunizieren lassen kann. Ein Brücke zwischen den beiden wäre wohl nützlich. Wenn du das weiter testen würdest, würde ich mich freuen. :thumbup: PSPad kannst du einfach downloaden. Der Haupt-Editorbereich ist das SynEdit. Wenn du noch etwas brauchst, sag Bescheid.

    Bernd.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Moin,

    ich habe etwas gebastelt und bin, nach vielen vielen Versuchen, endlich an den Text und auch alles andere ran gekommen.

    Leider ist der Weg dahin nicht ganz einfach, aber machbar.

    Du brauchst folgendes (im Anhang):

    1. AutoItObject.au3
    2. PsPadExt.au3
    3. AutoItScriptExtension.vbs (umbenennen)
    • Um das ganze zu testen musst du zuerst das VBScript zu PsPad hinzufügen.
    • Dann startest du das AutoIt Skript "PsPadExt.au3".
    • Jetzt PsPad starten und Datei bearbeiten, test markieren
    • In der AutoIt Gui auf den Button klicken
    • freuen :)

    Hier nochmal die Skripte als Text:

    Ich hoffe das hilft dir weiter, mein Gehirn braucht erstmal eine kleine Pause :S


    Gruß

  • Angesehen und für gut befunden! ;)

    Ich habe mir den Code angesehen (und die Lizenz überflogen) und freue mich, dass du das möglichst einfach gehalten hast. (Kompliziert kann jeder, ist also als Lob gedacht.) Getestet habe ich gerade eben. Ein markierter Text wird erkannt, sogar wenn er über mehrere Zeilen geht oder im Spaltenmodus markiert wurde ("Alt"+markieren).

    Da Funktionen des Improvement Kits aus PSPad heraus aufgerufen werden, bräuchte es noch eine Möglichkeit, um die Erkennung einzuleiten, wenn PsPadExt von PSPad gestartet wird. Anders ausgedrückt: PSPad wird gestartet und dann wird PsPadExt gestartet.

    ...

    Hmm, :/ jetzt wo ich das hier schreibe, kommt mir gerade der Gedanke, dass das ja einfach im Modul "AutoItScriptExtension.vbs" erledigt werden kann. ... zurück zum Testen. ...

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.