PureBoard
http://forums.purebasic.com/german/

Werkzeug-Wünsche für PureBasic/SpiderBasic
http://forums.purebasic.com/german/viewtopic.php?f=10&t=31519
Seite 4 von 4

Autor:  Kurzer [ 28.06.2019 15:12 ]
Betreff des Beitrags:  Re: Werkzeug-Wünsche für PureBasic/SpiderBasic

:o Sehe ich das richtig, dass du dem Scintilla Gadget aus dem TAB der IDE ein neues parent Window verpasst und es daher als zweites Gadget in einem anderen TAB erscheint?
Wenn ja, wäre das ein echt heftiger hack. :shock:

Autor:  RSBasic [ 28.06.2019 15:45 ]
Betreff des Beitrags:  Re: Werkzeug-Wünsche für PureBasic/SpiderBasic

Die ScintillaGadgets pro Tab liegen alle im selben Subwindow. Die werden, je nachdem welcher Tab gerade ausgewählt wurde, von PB ein- oder ausgeblendet:
Bild

Ich habe daher ein ScintillaGadget aus dem letzten Tab genommen, sichtbar gemacht und die Position und Größe geändert, so dass sich das ScintillaGadget genau unter dem anderen ScintillaGadget befindet. Das funktioniert.
Einen neuen Tab kann ich auch erstellen:
Code:
SendMessage_(PBHandle, #WM_COMMAND, 0, 0)

(0 = MenuItem "Datei > Neu")

Wenn ich den Tab schließe, dann wird das ScintillaGadget von PB freigegeben. Es bringt auch nichts, wenn ich das ScintillaGadget vor dem Schließen des Tabs in mein Werkzeug-Fenster mit SetParent_() verschiebe und nach dem Schließen wieder ins PB-Fenster verschiebe. Der Tab muss also immer offen sein.

Eine andere Möglichkeit habe ich bis jetzt nicht gefunden. Weiter komme ich aber auch nicht.

Schade, dass es keine WinAPI-Duplicate-Funktion gibt.

Autor:  Kurzer [ 28.06.2019 16:29 ]
Betreff des Beitrags:  Re: Werkzeug-Wünsche für PureBasic/SpiderBasic

Ich habe das gerade mal manuell mit WinSpy nachgestellt.

Das ist der krasseste PB IDE Hack, den ich bisher gesehen habe. :o :allright:
Wenn man die Styles WS_THICKFRAME und WS_BORDER noch setzt, hat man sogar einen wunderbaren Resize-Anfasser unten rechts am Gadget.

Bild

Stellt sich nur die Frage, ob man PB damit nicht zu sehr durcheinander bringt.

Autor:  RSBasic [ 28.06.2019 16:34 ]
Betreff des Beitrags:  Re: Werkzeug-Wünsche für PureBasic/SpiderBasic

Ich habe eine andere Idee gefunden. Es ist theoretisch möglich, eine Prozedure in einen fremden Prozess zu injizieren: https://www.purebasic.fr/english/viewto ... 22#p335022
Dann hätte ich die Möglichkeit, in der PB-Instanz ein ScintillaGadget zu erstellen und bin im selben Speicher.

Nur funktionieren leider beide Beispielcodes nicht mehr. Das Problem ist folgendes:
Code:
hThread = CreateRemoteThread_(hProcess, #Null, 0, *lpCodeToInject, pbModule, #Null, #Null)

hThread ist leider 0.

Mal schauen, ob sich jemand meldet und eine Lösung postet. Das wäre, wenn es so funktioniert, wie ich mir das vorstelle, der letzte Schritt zur Fertigstellung.

Autor:  Josh [ 28.06.2019 17:09 ]
Betreff des Beitrags:  Re: Werkzeug-Wünsche für PureBasic/SpiderBasic

Ich habe mich mit Codeinjection vor langer Zeit auch mal beschäftigt, leider überhaupt keine Ahnung mehr. Vielleicht kannst damit was anfangen:

https://www.purebasic.fr/german/viewtopic.php?f=6&t=26496&hilit=ProcedureDLL

Noch was anderes. Notepad++ macht das ja etwas anders. Da werden im zweiten Splitterfenster die Tabs nochmals angezeigt, so dass ich auch Code aus einer anderen Datei mit anzeigen kann. Wenn ich jetzt auswählen könnte, welcher Code im zweiten Splitterfenster angezeigt werden sollte, wär das auch nicht schlecht. Muss ja nicht durch Tabs sein.

Autor:  RSBasic [ 30.06.2019 16:05 ]
Betreff des Beitrags:  Re: Werkzeug-Wünsche für PureBasic/SpiderBasic

Hi Josh,

sorry für die späte Antwort. Danke vielmals für deinen Code. Auf jenden Fall eine gute Vorlage.
Ich habe mich aber aus mehreren Gründen anders entscheiden:
1. Beim Injizieren einer DLL-Datei in einen fremden Prozess ist die Wahrscheinlich ziemlich hoch, dass einige Antivirenprogramme sehr empfindlich reagieren, aus gutem Grund.
2. Wenn ich nach dem Injizieren meiner DLL-Datei ein neues ScintillaGadget erstelle, dann muss ich auch alle Scintilla-Features von PB hinzufügen, so dass es genauso aussieht wie der originale PB-Editor und sich genauso verhält. (Syntax Highlighting, Faltmarkierungen, Abstände, ...)
3. Beim Testen habe ich Fehler und Abstürze festgestellt.

Aus den oben genannten Gründen werde ich den Vorschlag von #NULL umsetzen bzw. habe ich inzwischen umgesetzt.
Der einzige kleine Nachteil ist, dass ein neuer Tab stets für mein Werkzeug reserviert ist, aber alle anderen Nachteile, die ich beim Injizieren und Neuerstellen eines ScintillaGadgets hätte, habe ich nicht.

Danke nochmal für deine Hilfe. :)

Seite 4 von 4 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/