Applikations Hook unter .NET installieren

31/10/2007 - 22:02 von Wolfgang Schlicker | Report spam
Hallo NG,
ich entwickle gerade ein kleines AddIn Assembly um für ein bekanntest UML
Tool neue Customer Funktionalitàt bereitzustellen.
Hierzu muss ich das Verhalten der "System.Windows.Forms.RichTextBox" Klasse
so erweitern, dass das Standardverhalten für URLs auf meine neuen
Anforderungen erweitert wird.
Ich habe also eine RichEditBoxEx Klasse definiert, die dem Win32 "RichEdit"
Control via SendMessage(Control.Hwnd, EM_SETCHARFORMAT, SCF_SELECTION,
lParam) einige Win32 spezifische Einstellungen übermittelt. (z.B. Setzen von
STRUCT_CHARFORMAT member dwEffects wie beispielsweise CFE_LINK).
Das Ganze funktioniert auch recht gut, wenn ich das Assembly in meiner
eigenen Testanwendung integriere und teste. Hier erhalte ich das gewünschte
neue URL Anzeige Verhalten.

Soweit -so gut.
Binde ich nun mein Assembly in das UML Tool von ARTiSAN Studio ein, so
funktionert meine "RichTextBoxEx" Klasse in diesem Applikationskontext nicht
mehr. An einigen Dialogen in ARTiSAN Studio ist zu erkennen, dass dort das
Verhalten des RichEdit Control tatsàchlich auf ARTiSAN Bedürfnisse geàndert
wurde, da sie spezielle UML Objekte als Verlinkungen anbieten.

Ich vermute nun, dass die "ARTiSAN" Software Entwickler hier kein
Subclassing verwendet haben, sondern einen Applikationshook in ihr Tool
eingebaut haben, der die Win32 Nachrichten an die "RichEdit" Klasse abfàngt,
und dort leider applikationsweit das Verhalten àndert.

Nun muss ich mich mit diese für mich leider sehr unschönen Implementierung
auseinandersetzen.

Frage:
Gibt es die Möglichkeit in .NET (C#) festzustellen, ob ein solcher
Applikationshook exisitiert? Kennt jemand ein C# Beispiel welches das
Hooking von Control Messages demonstriert?

Vielen Dank für eure Hilfe.

Gruss
Wolfgang
 

Lesen sie die antworten

#1 Robert Mischke
02/11/2007 - 17:43 | Warnen spam
Ich vermute nun, dass die "ARTiSAN" Software Entwickler hier kein
Subclassing verwendet haben, sondern einen Applikationshook in ihr Tool
eingebaut haben, der die Win32 Nachrichten an die "RichEdit" Klasse abfàngt,
und dort leider applikationsweit das Verhalten àndert.




Du könntest Dir mal Reflector (http://www.aisto.com/roeder/dotnet/)
anschauen, dann weißt Du, was sie wirklich machen und ob Du vielleicht
ableiten kannst.

Viele Grüße
Robert
...
www.speak-friend.com

Ähnliche fragen