HCL*_*HCL 5 .net c# wpf winapi
在我的WPF应用程序中,我必须让用户选择证书.我通过X509Certificate2UI.SelectFromCollection方法执行此操作.为了正确对话处理,SelectFromCollection方法需要父Hwnd的IntPtr.我找到了以下代码来提供:
HwndSource source = (HwndSource)HwndSource.FromVisual(Window.GetWindow(this));
var certificates= X509Certificate2UI.SelectFromCollection(...,source.Handle);
Run Code Online (Sandbox Code Playgroud)
到目前为止,这很好.我的问题是,因为我对Win32或互操作没有太大的了解,如果我必须在此之后做一些清理代码,或者如上所述使用HwndSource类有一些陷阱?
我已经看到HwndSource实现了IDisposable,但在使用后处理对象会关闭父窗口.因此,这似乎不是预期的用途.
WPF窗口由两部分组成:
现在,作为ContentControl的WPF窗口将所有内容保存为其内容.因此,您可以说Window类中的Content的每个像素都由Outside窗口保存.WPF的每个Visual都没有与之关联的HANDLE,而是外部窗口元素的内容.
有关详细信息,请参阅此内容 - http://www.abhisheksur.com/2010/12/win32-handle-hwnd-wpf-objects-note.html
因此,当您处理该句柄时,实际上是在处理主窗口处理程序,这会导致完整的应用程序关闭.
因此,你只是在这里获取你的窗口处理程序,而不是创建你可能需要处理的任何东西.. !!