[Win32] Button in ein fremdes Fenster einbauen

Für allgemeine Fragen zur Programmierung mit PureBasic.
real
Beiträge: 468
Registriert: 05.10.2004 14:43

[Win32] Button in ein fremdes Fenster einbauen

Beitrag von real »

Hi,

gibt es eine Möglichkeit, in ein gestartetes Programm (mit Window) einen Button einzufügen und die Aktivitäten mit meinem Programm zu koppeln?

Ich frage, weil ich eine Anwendung habe die ein Fenster ist, in das ich (sozusagen nachträglich) zur Laufzeit eine Funktionalität hinzufügen will, die das Programm nicht mitbringt...
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Sollte es nicht gehen, dann denke ich mal für dich um die Ecke:

Erstell doch ein Rahmenloses Fenster, dass immer die Koordinaten des fremden Fensters plus die normale GadgetX() und GadgetY() Funktion hat.
Das Fenster selbst istdann nur so breit wie der Button. Und dann hälst du das Fenster mit seinem Button halt immer über das Fenster, zu dem du den Button hinzufügen möchtest.

Auf diese Weise kannst du dann auch mit den herkömmlichen Methoden, wie WindowEvent() abfragen, ob der Button betätigt wurde und einen entsprechenden Code ausführen lassen.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Marvin
Beiträge: 497
Registriert: 17.07.2005 14:42
Wohnort: Krikkit

Beitrag von Marvin »

Ich würds mit FindWindow_() probiern. Beispiel:

Code: Alles auswählen

hWnd=FindWindow_(class$,title$)
CreateGadgetList(hWnd)
ButtonGadget(#Button,x,y,width,height,"Klick mich!")
Bei mir klappts aber irgendwie nich, der Button kommt, aber er wird nicht abgefragt (wegen events)... :?:
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Events anderer Prozesse lassen sich aus Sicherheitsgründen in Windows nicht
abfragen. Lediglich für Threads ist dies möglich, wenn explicit erlaubt wurde.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

Hi,
stimmt so nicht ganz, ist möglich, man müsste eine DLL in betreffendes Programm injecten..... Dann kann man die kompletten events des Programms abfragen.... Fragt mich jetzt aber nicht wie man das macht :wink:

mfg
125
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

125 hat geschrieben:Hi,
stimmt so nicht ganz, ist möglich, man müsste eine DLL in betreffendes Programm injecten..... Dann kann man die kompletten events des Programms abfragen.... Fragt mich jetzt aber nicht wie man das macht :wink:

mfg
125
Also stimmt es doch, was Du beschreibst ist Hacking und Illegal
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Was ist daran jetzt schon wieder illegal? Naja... /:->

Vielleicht funktioniert es, wenn man für den Button einen Callback erzeugt
mittels [c]SetWindowLong_()[/c] und den dann abfragt. Hab grad leider
keine Zeit das auszuprobieren.
Antworten