SHGetInstanceExplorer 函数 returns E_FAIL

SHGetInstanceExplorer function returns E_FAIL

当我尝试使用 SHGetInstanceExplorer 函数时,它 returns 一个 E_FAIL HRESULT

我用不同的参数定义了这两个函数(以测试它们),这两个定义 returns 相同的错误:

<DllImport("shell32.dll", SetLastError:=False)>
Private Shared Function SHGetInstanceExplorer(
    <MarshalAs(UnmanagedType.IUnknown)> ByRef ppunk As Object
) As Integer
End Function

<DllImport("shell32.dll", SetLastError:=False)>
Private Shared Function SHGetInstanceExplorer(
    ByRef ppunk As stdole.IUnknown
) As Integer
End Function

我不太确定除了 shell ext. 之外的哪些组件可以使用此功能,我从 WinForms 应用程序,也许是这个问题?.

您可能希望将 <Out> 属性与 ByRef 一起使用,因为 VB.Net 没有 C# 中的 out 关键字。

<DllImport("shell32.dll", SetLastError:=False)>
Private Shared Function SHGetInstanceExplorer(
    <Out()> ByRef ppunk As stdole.IUnknown
) As Integer
End Function