16,555
社区成员
发帖
与我相关
我的任务
分享
Imports System.Runtime.InteropServices
Public Class class_ConnectIPC
'Declare Function WNetAddConnection2A Lib "mpr.dll" Alias _
' "WNetAddConnection2A" (ByVal lpNetResource As NETRESOURCE,
' ByVal lpPassword As String, ByVal lpUserName As String,
'ByVal dwFlags As Integer) As Integer
<DllImport("mpr.dll", CharSet:=CharSet.Auto, EntryPoint:="WNetAddConnection2", CallingConvention:=CallingConvention.Cdecl)>
Public Shared Function WNetAddConnection2(lpNetResource As NETRESOURCE, lpPassword As String, lpUserName As String, dwFlags As Integer) As Integer
End Function
'DLL 声明两种方式都用过了。不顶用。
<StructLayout(LayoutKind.Sequential)>
Public Structure NETRESOURCE
Public dwScope As Integer
Public dwDisplayType As Integer
Public dwType As Integer
Public dwUsage As Integer
<MarshalAs(UnmanagedType.LPTStr)>
Public lpLocalName As String
<MarshalAs(UnmanagedType.LPTStr)>
Public lpRemoteName As String
<MarshalAs(UnmanagedType.LPTStr)>
Public lpComment As String
<MarshalAs(UnmanagedType.LPTStr)>
Public lpProvider As String
End Structure
Public Function AddConnect(ByVal MapDriver As String, ByVal UNCPath As String, ByVal username As String, ByVal password As String) As Boolean
Dim retVal As Integer
Dim NetR As new NETRESOURCE
NetR.dwScope = 2
NetR.dwType = 1
NetR.dwDisplayType = 0
NetR.lpLocalName = MapDriver
NetR.lpRemoteName = UNCPath
NetR.lpProvider = vbNull
'在这里出错,系统表示堆栈不对称,应该是参数哪里出了毛病,但是不知道怎么改程序。
retVal = WNetAddConnection2(NetR, password, username, CONNECT_UPDATE_PROFILE)
If retVal = 0 Then
AddConnect = True
Else
AddConnect = False
End If
End Function
End Class