SHGetInstanceExplorer函数返回E_FAIL

时间:2016-05-16 17:28:32

标签: c# .net vb.net winapi com

当我尝试使用 SHGetInstanceExplorer 功能时,会返回E_FAIL HRESULT

我已经使用不同的参数定义了这两个函数(以测试它们),两个定义都返回相同的错误:

<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 应用程序尝试过的,也许问题是那个?。

1 个答案:

答案 0 :(得分:1)

您可能希望将<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