home *** CD-ROM | disk | FTP | other *** search
/ Programming Tool Box / SIMS_2.iso / code / network / netuse / netuser.bas next >
Encoding:
BASIC Source File  |  1994-12-19  |  4.3 KB  |  153 lines

  1. Option Explicit           ' Force declaration off all variables
  2. '
  3. '   Declare constants used
  4. '
  5. Const WF_CPU286 = &H2
  6. Const WF_CPU386 = &H4
  7. Const WF_CPU486 = &H8
  8. Const WF_80x87 = &H400
  9. Const WF_STANDARD = &H10
  10. Const WF_ENHANCED = &H20
  11. Const WF_WINNT = &H4000
  12.  
  13. Const WNNC_NET_MultiNet = &H8000
  14. Const WNNC_SUBNET_WinWorkgroups = 4
  15. Const WNNC_NET_TYPE = 2
  16.  
  17. '/* General */
  18.  
  19. Const WN_SUCCESS = &H0
  20. Const WN_NOT_SUPPORTED = &H1
  21. Const WN_NET_ERROR = &H2
  22. Const WN_MORE_DATA = &H3
  23. Const WN_BAD_POINTER = &H4
  24. Const WN_BAD_VALUE = &H5
  25. Const WN_BAD_PASSWORD = &H6
  26. Const WN_ACCESS_DENIED = &H7
  27. Const WN_FUNCTION_BUSY = &H8
  28. Const WN_WINDOWS_ERROR = &H9
  29. Const WN_BAD_USER = &HA
  30. Const WN_OUT_OF_MEMORY = &HB
  31. Const WN_CANCEL = &HC
  32. Const WN_CONTINUE = &HD
  33.  
  34. '/* Connection */
  35.  
  36. Const WN_NOT_CONNECTED = &H30
  37. Const WN_OPEN_FILES = &H31
  38. Const WN_BAD_NETNAME = &H32
  39. Const WN_BAD_LOCALNAME = &H33
  40. Const WN_ALREADY_CONNECTED = &H34
  41. Const WN_DEVICE_ERROR = &H35
  42. Const WN_CONNECTION_CLOSED = &H36
  43.  
  44. '/* Printing */
  45.  
  46. Const WN_BAD_JOBID = &H40
  47. Const WN_JOB_NOT_FOUND = &H41
  48. Const WN_JOB_NOT_HELD = &H42
  49. Const WN_BAD_QUEUE = &H43
  50. Const WN_BAD_FILE_HANDLE = &H44
  51. Const WN_CANT_SET_COPIES = &H45
  52. Const WN_ALREADY_LOCKED = &H46
  53.  
  54. Const WN_NO_ERROR = &H50
  55. '
  56. '   API Declaration
  57. '
  58. Declare Function KRN_GetWinFlags Lib "Kernel" Alias "GetWinFlags" () As Long
  59. Declare Function USR_WNetGetCaps Lib "User" Alias "WNetGetCaps" (ByVal nIndex As Integer) As Integer
  60. Declare Function WFW_MNetNetworkEnum Lib "WFWNET.DRV" Alias "MNetNetworkEnum" (nIndex As Integer) As Integer
  61. Declare Function WFW_MNetSetNextTarget Lib "WFWNET.DRV" Alias "MNetSetNextTarget" (ByVal nIndex As Integer) As Integer
  62. Declare Function USR_WNetGetUser Lib "User" Alias "WNetGetUser" (ByVal sUser As String, nBufferSize As Integer) As Integer
  63.  
  64. Private Function IsWFW () As Integer
  65. '
  66. '   This routine will determine if Windows for Workgroups is running.
  67. '   It will return TRUE if it is and FALSE otherwise.
  68. '
  69.     Dim nNetType As Integer
  70.     
  71.     IsWFW = False
  72.     
  73.     nNetType = USR_WNetGetCaps(WNNC_NET_TYPE)
  74.     If (nNetType And WNNC_NET_MultiNet) Then
  75.     IsWFW = ((nNetType And &HFFFF) And WNNC_SUBNET_WinWorkgroups) <> 0
  76.     End If
  77. End Function
  78.  
  79. Private Function IsWOW () As Integer
  80. '
  81. '   This routine will determine if the user is running
  82. '   under the Windows NT WOW system.
  83. '
  84.     Dim lStatus As Long
  85.     IsWOW = False
  86.     lStatus = KRN_GetWinFlags()
  87.     If lStatus And WF_WINNT Then
  88.     IsWOW = True
  89.     End If
  90. End Function
  91.  
  92. Function NetworkUserId () As String
  93. '
  94. '   This routine will get the name of the user signed onto the network.
  95. '   If no username is found it will return an UnknownUser string.
  96. '
  97.     Dim sUser As String * 255      ' Buffer for name
  98.     Dim nBufferSize As Integer     ' Buffer length
  99.     Dim nReturnValue As Integer    ' Return status (not used)
  100.     Dim nNetworkHandle As Integer  ' Network handle
  101.     Dim nRetEnum As Integer
  102.  
  103.     nBufferSize = 254              ' one less than string length due to zero padding
  104. '
  105. '   Check to see if we are running under WOW
  106. '
  107.     If IsWOW() Then
  108.     nReturnValue = USR_WNetGetUser(sUser, nBufferSize)
  109.     If (nReturnValue = WN_SUCCESS) Then
  110.         NetworkUserId = Left$(sUser, InStr(sUser, Chr(0)) - 1)
  111.         Exit Function
  112.     End If
  113.     Else
  114. '
  115. '   Check to see if we are running Windows for Workgroups
  116. '
  117.     If IsWFW() Then
  118. '
  119. '   Set network handle to nothing and then look for the first one
  120. '
  121.         nNetworkHandle = 0
  122.         nRetEnum = WN_SUCCESS
  123.         nRetEnum = WFW_MNetNetworkEnum(nNetworkHandle)
  124. '
  125. '   Scan through the networks until we get a name
  126. '
  127.         While (nRetEnum = WN_SUCCESS)
  128.         nReturnValue = WFW_MNetSetNextTarget(nNetworkHandle)
  129.         nReturnValue = USR_WNetGetUser(sUser, nBufferSize)
  130.         If (nReturnValue = WN_SUCCESS) Then
  131.             NetworkUserId = Left$(sUser, InStr(sUser, Chr(0)) - 1)
  132.             Exit Function
  133.         End If
  134.         nRetEnum = WFW_MNetNetworkEnum(nNetworkHandle)
  135.         Wend
  136.     Else
  137. '
  138. '   If aren't running Windows for Workgroups, then try for a name anyway.
  139. '
  140.         nReturnValue = USR_WNetGetUser(sUser, nBufferSize)
  141.         If (nReturnValue = WN_SUCCESS) Then
  142.         NetworkUserId = Left$(sUser, InStr(sUser, Chr(0)) - 1)
  143.         Exit Function
  144.         End If
  145.        End If
  146.     End If
  147. '
  148. '   We didn't get a name anywhere, so lets go
  149. '
  150.    NetworkUserId = "UnknownUser"
  151. End Function
  152.  
  153.