如何在.NET窗体中显示Windows控制面板项的IShellView?
.NET窗体中显示控制面板IShellFolder的IShellView异常问题
我希望在.NET窗体中显示Windows控制面板IShellFolder项的IShellView,该操作对普通文件夹有效,但无法作用于控制面板项。
我的实现代码如下:
Dim ww As System.Windows.Forms.Form = New System.Windows.Forms.Form() ww.Show() Dim ptr As IntPtr, shellFolder As IShellFolder, shellView As IShellView Dim h As HRESULT shellFolder = CType(e.NewValue, Folder).ShellFolder Try h = shellFolder.CreateViewObject(IntPtr.Zero, GetType(IShellView).GUID, ptr) shellView = Marshal.GetTypedObjectForIUnknown(ptr, GetType(IShellView)) Finally If Not IntPtr.Zero.Equals(ptr) Then Marshal.Release(ptr) End If End Try Dim sb As ShellBrowser = New ShellBrowser(ww.Handle) Dim fs As FOLDERSETTINGS fs.fFlags = 0 fs.ViewMode = -1 Dim r As WIN32RECT = New WIN32RECT() r.Top = 20 : r.Left = 20 : r.Right = 500 : r.Bottom = 500 shellView.CreateViewWindow(Nothing, fs, sb, r, ww.Handle) shellView.UIActivate(1)
对于普通文件夹,该代码能在窗体中显示文件夹的详细IShellView及其中的项目。但对于控制面板文件夹(示例:::{8E908FC9-BECC-40F6-915B-F4CA0E70D03D}对应的网络和共享中心),仅显示一个仅含「Name」列的空详细视图,而非预期的控制面板项自定义视图。
补充:
- 尝试在ExplorerBrowser实例(CLSID:
71f96385-ddd6-48d3-a0c1-ae06e8b055fb)中显示这些控制面板项,结果相同。
内容的提问来源于stack exchange,提问作者miss programmer
相关产品推荐
相关产品推荐

