WNetOpenEnum et les fontions réseau dans VB.NET

Iceabyssal Messages postés 4 Date d'inscription lundi 4 avril 2005 Statut Membre Dernière intervention 20 juin 2007 - 7 avril 2005 à 09:59
Iceabyssal Messages postés 4 Date d'inscription lundi 4 avril 2005 Statut Membre Dernière intervention 20 juin 2007 - 13 avril 2005 à 12:14
Bonjour,

J'ai un probleme avec les fonctions d'énumération du réseau, du type "WNetOpenEnum".



J'ai un programme qui tourne parfaitement sous VB 6 et qui, une fois transcrit en VB.NET, ne fonctionne plus :



L'application de la fonction "WNetOpenEnum" retourne une erreur non référencée dans cette fonction "Error 487".



J'ai trouvé sur un forum américain une personne qui a le même problème, mais sans solution malheureusement.



Ci-dessous, le début du code jusqu'à la fonction qui plante... Si qqn veut se passer les nerfs dessus ... lol :







Option Explicit On

Option Strict Off



Public Class Form1

Inherits System.Windows.Forms.Form



' Je vous passe les détails du " Code généré par le Concepteur Windows Form "





Public Structure NETRESOURCE

Public dwScope As Long

Public dwType As Long

Public dwDisplayType As Long

Public dwUsage As Long

Public lpLocalName As Long

Public lpRemoteName As Long

Public lpComment As Long

Public lpProvider As Long

End Structure



Public Declare Function WNetOpenEnum Lib "mpr.dll" Alias _

"WNetOpenEnumA" ( _

ByVal dwScope As Long, _

ByVal dwType As Long, _

ByVal dwUsage As Long, _

ByVal lpNetResource As NETRESOURCE, _

ByVal lphEnum As Long) As Long



'Enumération des ressources

Public Const RESOURCE_CONNECTED = &H1

Public Const RESOURCE_GLOBALNET = &H2

Public Const RESOURCE_REMEMBERED = &H3



Public Const RESOURCETYPE_ANY = &H0

Public Const RESOURCETYPE_DISK = &H1

Public Const RESOURCETYPE_PRINT = &H2

Public Const RESOURCETYPE_UNKNOWN = &HFFFF



Public Const RESOURCEUSAGE_CONNECTABLE = &H1

Public Const RESOURCEUSAGE_CONTAINER = &H2

Public Const RESOURCEUSAGE_RESERVED = &H80000000



' Messages d'erreur

Public Const ERROR_NOT_CONTAINER = 1207&

Public Const ERROR_INVALID_PARAMETER = 87

Public Const ERROR_NO_NETWORK = 1222&

Public Const ERROR_EXTENDED_ERROR = 1208&

Public Const ERROR_NO_MORE_ITEMS = 259&

Public Const ERROR_MORE_DATA = 234

Public Const ERROR_INVALID_HANDLE = 6&



Public Const RESOURCEDISPLAYTYPE_DOMAIN As Long = &H1&

Public Const RESOURCEDISPLAYTYPE_GENERIC As Long = &H0&

Public Const RESOURCEDISPLAYTYPE_SERVER As Long = &H2&

Public Const RESOURCEDISPLAYTYPE_SHARE = &H3





Public Const GMEM_FIXED = &H0

Public Const GMEM_ZEROINIT = &H40

Public Const GPTR = (GMEM_FIXED Or GMEM_ZEROINIT)



Public Function doEnum(ByVal level As Integer, ByVal nr As NETRESOURCE) As Integer

Dim rc As Long

Dim stype As String

Dim scont As String

Dim hEnum As Long, lpBuff As Long

Dim cbBuff As Long, cCount As Long

Dim p As Long

Dim i As Integer



rc = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, nr, hEnum)

If rc <> 0 Then


MsgBox("Error: " & Err.LastDllError, vbOKOnly, "WNetEnumResources")

Exit Function

End If



...





J'arrête le code ici... rc a une valeur <> 0 genre "4768543253422337", et le "Err.LastDllError" renvoi la valeur 487



Merci de votre aide...



Pour info, j'ai Windows 2000 SP4 (si cela peut jouer... !)

1 réponse

Iceabyssal Messages postés 4 Date d'inscription lundi 4 avril 2005 Statut Membre Dernière intervention 20 juin 2007
13 avril 2005 à 12:14
Personne n'a d'idée ??? J'ai testé mon exe sur du XP et du 2003 Server, et erreur identique... : 487...




Je remets le code ci-dessous, avec le bouton déclencheur... Merci de
m'aider... Je vais bientôt devoir changer de catégorie ("Jai besoin
d'aide !!!!, Bord du suicide lol").



Il n'y a qu'a créer une "form1", insérer un bouton nommé "Button1" et recopier le code ci dessous...



Merci...











Option Explicit On

Option Strict Off



Public Class Form1

Inherits System.Windows.Forms.Form



#Region " Code généré par le Concepteur Windows Form "



Public Sub New()

MyBase.New()



'Cet appel est requis par le Concepteur Windows Form.

InitializeComponent()



'Ajoutez une initialisation quelconque après l'appel InitializeComponent()



End Sub



'La méthode substituée Dispose du formulaire pour nettoyer la liste des composants.

Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

If disposing Then

If Not (components Is Nothing) Then

components.Dispose()

End If

End If

MyBase.Dispose(disposing)

End Sub



'Requis par le Concepteur Windows Form

Private components As System.ComponentModel.IContainer



'REMARQUE : la procédure suivante est requise par le Concepteur Windows Form

'Elle peut être modifiée en utilisant le Concepteur Windows Form.

'Ne la modifiez pas en utilisant l'éditeur de code.

Friend WithEvents Button1 As System.Windows.Forms.Button

<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

Me.Button1 = New System.Windows.Forms.Button

Me.SuspendLayout()

'

'Button1

'

Me.Button1.Location = New System.Drawing.Point(64, 56)

Me.Button1.Name = "Button1"

Me.Button1.Size = New System.Drawing.Size(288, 264)

Me.Button1.TabIndex = 0

Me.Button1.Text = "Button1"

'

'Form1

'

Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)

Me.ClientSize = New System.Drawing.Size(424, 461)

Me.Controls.Add(Me.Button1)

Me.Name = "Form1"

Me.Text = "Form1"

Me.ResumeLayout(False)



End Sub



#End Region





' Je vous passe les détails du " Code généré par le Concepteur Windows Form "





Public Structure NETRESOURCE

Public dwScope As Long

Public dwType As Long

Public dwDisplayType As Long

Public dwUsage As Long

Public lpLocalName As Long

Public lpRemoteName As Long

Public lpComment As Long

Public lpProvider As Long

End Structure



Public Declare Function WNetOpenEnum Lib "mpr.dll" Alias _

"WNetOpenEnumA" ( _

ByVal dwScope As Long, _

ByVal dwType As Long, _

ByVal dwUsage As Long, _

ByVal lpNetResource As NETRESOURCE, _

ByVal lphEnum As Long) As Long



'Enumération des ressources

Public Const RESOURCE_CONNECTED = &H1

Public Const RESOURCE_GLOBALNET = &H2

Public Const RESOURCE_REMEMBERED = &H3



Public Const RESOURCETYPE_ANY = &H0

Public Const RESOURCETYPE_DISK = &H1

Public Const RESOURCETYPE_PRINT = &H2

Public Const RESOURCETYPE_UNKNOWN = &HFFFF



Public Const RESOURCEUSAGE_CONNECTABLE = &H1

Public Const RESOURCEUSAGE_CONTAINER = &H2

Public Const RESOURCEUSAGE_RESERVED = &H80000000



' Messages d'erreur

Public Const ERROR_NOT_CONTAINER = 1207&

Public Const ERROR_INVALID_PARAMETER = 87

Public Const ERROR_NO_NETWORK = 1222&

Public Const ERROR_EXTENDED_ERROR = 1208&

Public Const ERROR_NO_MORE_ITEMS = 259&

Public Const ERROR_MORE_DATA = 234

Public Const ERROR_INVALID_HANDLE = 6&



Public Const RESOURCEDISPLAYTYPE_DOMAIN As Long = &H1&

Public Const RESOURCEDISPLAYTYPE_GENERIC As Long = &H0&

Public Const RESOURCEDISPLAYTYPE_SERVER As Long = &H2&

Public Const RESOURCEDISPLAYTYPE_SHARE = &H3





Public Const GMEM_FIXED = &H0

Public Const GMEM_ZEROINIT = &H40

Public Const GPTR = (GMEM_FIXED Or GMEM_ZEROINIT)



Public Function doEnum(ByVal level As Integer, ByVal nr As NETRESOURCE) As Integer

Dim rc As Long

Dim stype As String

Dim scont As String

Dim hEnum As Long, lpBuff As Long

Dim cbBuff As Long, cCount As Long

Dim p As Long

Dim i As Integer



rc =
WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, nr, hEnum)

If rc <> 0 Then


MsgBox("Error: " & Err.LastDllError, vbOKOnly, "WNetEnumResources")

Exit Function

End If

End Function





Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click



Dim rtfp As NETRESOURCE

doEnum(0, rtfp)



End Sub

End Class
0
Rejoignez-nous