Reputation:
i found this code:
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)); } }
to start a hwndSourceHook (to capture the clipboard). But this code only works with a "Window" but not with a "Windows.Form".
How i can get the hwndSource of my Form to add the hwndSourceHook?
(instead of the override I should use the Form_Load function I think...)
EDIT: Thanks, but the Form doesnt have the AddHook function to add my hwndSourceHook
Upvotes: 2
Views: 3529
Reputation: 3928
If you are using WinForms, then it is just myForm.Handle
The HwndSource is for WPF.
So you can just do:
viewerHandle = SetClipboardViewer(myForm.Handle);
Edit: AddHook is also a WPF method.
You need to use either:
Application.AddMessageFilter(...);
or, in your Form class override the WndProc method:
protected override void WndProc(ref Message m) {...}
AddMessageFilter can capture messages for any window in your application, whereas WndProc will only receive messages for the given window.
Upvotes: 4