我找到了这段代码:
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)); } }
启动hwndSourceHook(捕获剪贴板)。但是这段代码只适用于“Window”,而不适用于“Windows.Form”。
如何获取我的表单的hwndSource以添加hwndSourceHook?
(而不是覆盖我应该使用Form_Load函数,我认为......)
编辑:谢谢,但表格没有AddHook功能来添加我的hwndSourceHook
答案 0 :(得分:3)
如果您使用的是WinForms,那么它只是myForm.Handle
HwndSource适用于WPF。
所以你可以这样做:
viewerHandle = SetClipboardViewer(myForm.Handle);
编辑:AddHook也是一种WPF方法。
你需要使用:
Application.AddMessageFilter(...);
或者,在您的Form类中重写WndProc方法:
protected override void WndProc(ref Message m) {...}
AddMessageFilter可以捕获应用程序中任何窗口的消息,而WndProc只接收给定窗口的消息。