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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top