c # HwndSourceHook con Windows.Forms
Domanda
ho trovato questo codice:
protected override void OnSourceInitialized(EventArgs e) { base.OnSourceInitialized(e); HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource; if (hwndSource != null) { installedHandle = hwndSource.Handle; viewerHandle = SetClipboardViewer(installedHandle); hwndSource.AddHook(new HwndSourceHook(this.hwndSourceHook)); } }
per avviare un hwndSourceHook (per catturare gli appunti). Ma questo codice funziona solo con un & Quot; Window & Quot; ma non con un " Windows.Form " ;.
Come posso ottenere l'hwndSource del mio modulo per aggiungere l'hwndSourceHook?
(invece della sostituzione dovrei usare la funzione Form_Load penso ...)
MODIFICA: Grazie, ma il modulo non ha la funzione AddHook per aggiungere il mio hwndSourceHook
Soluzione
Se stai usando WinForms, allora è solo myForm.Handle
HwndSource è per WPF.
Quindi puoi semplicemente fare:
viewerHandle = SetClipboardViewer(myForm.Handle);
Modifica: AddHook è anche un metodo WPF.
Devi usare:
Application.AddMessageFilter(...);
o, nella tua classe Form, sovrascrivi il metodo WndProc:
protected override void WndProc(ref Message m) {...}
AddMessageFilter può acquisire messaggi per qualsiasi finestra dell'applicazione, mentre WndProc riceverà messaggi solo per la finestra specificata.