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