Seite 1 von 1

fremdes Fenster als Output für StartDrawing()

Verfasst: 18.11.2012 14:51
von Sunny
Ist es irgendwie möglich, die 2DDrawing-Befehle von PB auf einem fremden Fenster anzuwenden?

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

Verfasst: 18.11.2012 16:28
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ö

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

Verfasst: 18.11.2012 17:23
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?

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

Verfasst: 28.11.2012 17:40
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