fremdes Fenster als Output für StartDrawing()

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

fremdes Fenster als Output für StartDrawing()

Beitrag von Sunny »

Ist es irgendwie möglich, die 2DDrawing-Befehle von PB auf einem fremden Fenster anzuwenden?
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Re: fremdes Fenster als Output für StartDrawing()

Beitrag von WPö »

Moin!

In Zeiten des fehlenden Speicherschutzes im Betriebssystem war dies einfach möglich. Heutzutage nutzt kaum noch jemand so ein System. Es ist schlicht unsicher, im Speicher anderer Programme herumzufuhrwerken.

Wozu brauchst Du so etwas? Nutze lieber Mitteilungen über das System, die das Zielprogramm erhält und macht, was Du willst. Das muß vom Zielprogramm natürlich unterstützt werden. Bei den meisten Programmen sieht's düster aus.

Gruß - WPö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

Re: fremdes Fenster als Output für StartDrawing()

Beitrag von Sunny »

Wozu brauchst Du so etwas?
Ich habe ein Programm (keine eigenes), welches mir in einem Fenster Informationen ausgibt. Diese Informationen lese ich aus und rechne damit ein bischen rum. Die Ergebnisse dieser Berechnungen möchte ich nun grafisch (in Form von Diagrammen) auf dem Fenster, von dem ich die Informationen erhalten habe darstellen.

Aber wenn das in der Form zu unsicher ist, dann werde ich das wohl über das GDI lösen müssen...

In dem Fall habe ich allerdings noch eine Frage.
Dazu mal ein kleines Beispiel:

Code: Alles auswählen

Procedure FreeDrawBox(hdc, x, y, width, height, color = #Black)
  pen = CreatePen_(#PS_SOLID, 1, color)
  brush = CreateSolidBrush_(color)
  
  SelectObject_(hdc, pen)
  SelectObject_(hdc, brush)
  
  Rectangle_(hdc, x, y, x + width, y + height)
  
  DeleteObject_(pen)
  DeleteObject_(brush)
  
EndProcedure


hdc = GetWindowDC_(GetForegroundWindow_())

FreeDrawBox(hdc, 50, 50, 100, 100, #Red)

ReleaseDC_(GetShellWindow_(),hdc)
Mit dieser Prozedur, die ich mir jetzt mal schnell zurecht gebastelt habe, ahme ich ja den Befehl "Box()" von PB nach (mehr oder weniger ^^).
Allerdings weiß ich nicht, wie ich den Befehl "DrawImage()" nachbasteln kann. Ich hab auch schon ein Bischen umher gegoogelt aber leider nichts gefunden.
Wie müsste denn eine Prozedur aussehen, die sowas mittels GDI bewerkstelligt?
Nero
Beiträge: 285
Registriert: 08.11.2004 01:50

Re: fremdes Fenster als Output für StartDrawing()

Beitrag von Nero »

Ist die darstellung im anderem fenster per DirectX? Dann such mal nach DirectX Hooking

Habe da letztlich auch einen Interesanten artikel gelesen.
http://www.codeproject.com/Articles/140 ... -Interface
Antworten