ActiveX.exe, Zugriff auf Client

22/03/2009 - 12:32 von Martin Enke | Report spam
Liebe NG,

Ein verzwicktes Problem plagt mich:

In einer App ist eine Picturebox. Auf diese soll nun von einer
ActiveX.exe per GDI gezeichnet werden. Dazu übergebe ich den hDC der Box
an die ActiveX.exe. Leider geben die Methoden MoveToEx und LineTo nur 0
zurück.

Was mache ich falsch, oder kann man nicht von einem
Out-of-Process-Server auf die Geràte(kontexte)des Clients zugreifen?

Wenn ich die ganze PictureBox als Object übergebe, dann kann ich mit den
VB-Methoden darauf zeichen aber die sind für meine Bedürfnisse viel zu
langsam...

Danke für Hilfe
 

Lesen sie die antworten

#1 Schmidt
23/03/2009 - 15:53 | Warnen spam
"Martin Enke" schrieb im Newsbeitrag
news:49c621c1$0$31339$

In einer App ist eine Picturebox. Auf diese soll nun von einer
ActiveX.exe per GDI gezeichnet werden. Dazu übergebe ich
den hDC der Box an die ActiveX.exe. Leider geben die
Methoden MoveToEx und LineTo nur 0 zurück.


Prozess-übergreifend funktioniert das nur, wenn Du ein
hWnd übergibst - und Dir dann per GetDC einen dann
jeweils prozessintern gültigen Geràtekontext über das
Fensterhandle besorgst.
Wenn die PictureBox jedoch auf AutoRedraw=True steht,
dann arbeiten die GDI-DrawingCalls gegen einen (im jew.
Prozess allozierten) Memory-DC und der oben stehende
Ansatz (per hWnd) würde nicht greifen.

Wenn Du hohe Performance benötigst, dann müsste man
eher auf eine SetParent-basierte Lösung zurückgreifen,
die ein innerhalb der AX-Exe erzeugtes (rahmenloses)
Fenster innerhalb Deiner Hauptanwendung verwaltet.

Ansonsten bleibt kaum ein anderer Weg, als eine DIBSection
innerhalb *des* Prozesses zu erzeugen, in dem der Hauptanteil
der Zeichenroutinen erfolgt - und dann jeweils eine Kopie der
Pixeldaten (als ByteArray oder 32Bit-LongArray) zwischen den
Prozessen hin und herzuschieben.

Wenn ich die ganze PictureBox als Object übergebe, dann kann
ich mit den VB-Methoden darauf zeichen aber die sind für meine
Bedürfnisse viel zu langsam...


Beschreib vielleicht mal etwas genauer, wieso Du überhaupt das
"Prozess-Splitting" an der Stelle brauchst - vielleicht kann man ja
mit prozessinternen Threads etwas richten, was Dir in der
AX-Exe-basierten "Multi-prozess-Lösung" derzeit verwehrt wird.

Olaf

Ähnliche fragen