2009-08-15 6 views

Antwort

5

Um "normale" Nachrichten zu verarbeiten, benötigen Sie immer noch ein Window-Objekt. Dies kann ein spezielles Nur-Nachrichten-Fenster sein, das nur die Nachrichtenwarteschlangeninfrastruktur mit normalen Fenstern teilt. Um es zu erstellen, registrieren Sie zuerst Ihre Nachrichtenbehandlungsklasse mit RegisterClass(). Erstellen Sie als Nächstes eine Nachrichtenwarteschlange, indem Sie HWND_MESSAGE als übergeordnetes Fenster an CreateWindow() übergeben. Sie erhalten dann eine HWND zurück, die Sie dann zu SAPI bringen können.

SAPI unterstützt jedoch auch andere Schnittstellen. Die ISpNotifySource-Dokumentationsnamen 4: Windows-Nachrichten, Callbacks, Ereignisse und COM (ISpNotifySink). Um Callbacks zu verwenden, übergeben Sie einfach die Adresse einer Ihrer DLL-Methoden an SetNotifyCallbackFunction.

0

WndProc wird verwendet, um alle Nachrichten/Ereignisse zu empfangen, die an ein Fenster gerichtet sind.

Ihre DLL sollte ein Fenster erstellen und auf Nachrichten im Fenster warten. Wenn möglich, sollten Sie dies in Ihrem Hauptprozess implementieren, oder Sie können die DLL einen separaten Thread erstellen lassen, der das Fenster erstellt und auf die Nachricht wartet, während die eigentliche Funktion die Kontrolle an den Prozess zurückgibt.

+0

Erstellen eines Fensters ist nicht möglich in einem Plugin, funktioniert ein unsichtbares Fenster und dann wie das WndProc in der DLL zu verwenden, jedes Beispiel –

+0

Ein unsichtbares Fenster Ereignisse zu empfangen ist unmöglich, soweit ich weiß. – Sahas

+1

Definitiv möglich. – MSalters