⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nbdgrm.frm

📁 几个关于NetBIOS进行远程可视化操作的代码.zip
💻 FRM
📖 第 1 页 / 共 2 页
字号:
'    the first thing to do is to add the Netbios Name to the LANAs
'    selected (either all or the single LANA selected).
'
Private Sub cmdSendRecv_Click()
    Dim dwRet As Long
    
    cmdSendRecv.Enabled = False
    If bOneLana = True Then
        If bUniqueName = True Then
            AddName dwOneLana, txtLocalName.Text, dwNum(0)
        Else
            AddGroupName dwOneLana, txtLocalName.Text, dwNum(0)
        End If
    Else
        For i = 0 To lenum.length - 1
            If bUniqueName = True Then
                AddName lenum.lana(i), txtLocalName, dwNum(i)
            Else
                AddGroupName lenum.lana(i), txtLocalName, dwNum(i)
            End If
        Next
    End If
    
    If bSender = True Then 'as a sender
        If bBroadcast = True Then 'broadcast
            If bOneLana = True Then
                For j = 0 To dwNumDatagrams - 1
                    szMessage = "Test datagram No. " & j
                    
                    lstrcpyn VarPtr(byteMessage), szMessage, Len(szMessage) + 1
                    dwRet = DatagramSendBC(dwOneLana, dwNum(0), VarPtr(byteMessage), Len(szMessage) + 1)
                    If dwRet <> NRC_GOODRET Then
                        MsgBox "DatagramSendBC failed with " & dwRet & " on Lana " & dwOneLana
                        'Exit Sub
                    Else
                        Sleep dwDelay
                    End If
                Next
            Else 'broadcast the message on every LANA
                For j = 0 To dwNumDatagrams - 1
                For i = 0 To lenum.length - 1
                
                    szMessage = "Test datagram No. " & j
                   
                    lstrcpyn VarPtr(byteMessage), szMessage, Len(szMessage) + 1
                    dwRet = DatagramSendBC(lenum.lana(i), dwNum(i), VarPtr(byteMessage), Len(szMessage) + 1)
                    If dwRet <> NRC_GOODRET Then
                        MsgBox "DatagramSendBC failed with " & dwRet & " on Lana " & lenum.lana(i)
                        'Exit Sub
                    Else
                        Sleep dwDelay
                    End If
                Next
                Next
            End If
        Else 'unicast
            If bOneLana = True Then
                For j = 0 To dwNumDatagrams - 1
                    szMessage = "Test datagram No. " & j
                    
                    lstrcpyn VarPtr(byteMessage), szMessage, Len(szMessage) + 1
                    dwRet = DatagramSend(dwOneLana, dwNum(0), txtRecipient.Text, VarPtr(byteMessage), Len(szMessage) + 1)
                    If dwRet <> NRC_GOODRET Then
                        MsgBox "DatagramSend failed with " & dwRet & " on Lana " & dwOneLana
                        'Exit Sub
                    Else
                        Sleep dwDelay
                    End If
                Next
            Else
                For j = 0 To dwNumDatagrams - 1
                For i = 0 To lenum.length - 1
                
                    szMessage = "Test datagram No. " & j
                   
                    lstrcpyn VarPtr(byteMessage), szMessage, Len(szMessage) + 1
                    dwRet = DatagramSend(lenum.lana(i), dwNum(i), txtRecipient.Text, VarPtr(byteMessage), Len(szMessage) + 1)
                    If dwRet <> NRC_GOODRET Then
                        MsgBox "DatagramSend failed with " & dwRet & " on Lana " & lenum.lana(i)
                        'Exit Sub
                    Else
                        Sleep dwDelay
                    End If
                Next
                Next
           End If
        End If
    Else 'as a receiver''''''''''''''''''''''''''''''''''''''''''''''''
        For i = 0 To lenum.length - 1
            eventRecv(i) = CreateEvent(0, 1, 0, vbNullString)
        Next
        
        If bBroadcast = True Then 'start of broadcast
            If bOneLana = True Then
                'post synchronous broadcast recv on the LANA specified
                For j = 0 To dwNumDatagrams - 1
                    dwRet = DatagramRecvBC(ncbRecv(0), dwOneLana, dwNum(0), VarPtr(byteRecvMessage(0)), MAX_DATAGRAM_SIZE, 0)
                    If dwRet <> NRC_GOODRET Then
                        MsgBox "DatagramRecvBC failed with " & dwRet & " on LANA " & dwOneLana
                        Exit Sub
                    Else
                        Dim tempMessageStr As String
                        Dim tempSenderStr As String
                        
                        tempMessageStr = String(512, 0)
                        tempSenderStr = String(512, 0)
                        FormatNetbiosName ncbRecv(0).ncb_callname, tempSenderStr
                       
                        lstrcpy tempMessageStr, VarPtr(byteRecvMessage(0))
                        tempMessageStr = Left(tempMessageStr, InStr(tempMessageStr, Chr(0)) - 1)
                        recvList.AddItem "LANA " & ncbRecv(0).ncb_lana_num & " recv from: " & tempSenderStr & ": " & tempMessageStr
                    End If
                Next
            Else
                'post asyncrhonous broadcast recv
                For j = 0 To dwNumDatagrams - 1
                    For i = 0 To lenum.length - 1
                        dwBytesRead = MAX_DATAGRAM_SIZE
                        dwRet = DatagramRecvBC(ncbRecv(i), lenum.lana(i), dwNum(i), VarPtr(byteRecvMessage(i)), MAX_DATAGRAM_SIZE, eventRecv(i))
                        If dwRet <> NRC_GOODRET Then
                            MsgBox "DatagramRecvBC failed with " & dwRet & " on LANA " & dwOneLana
                            Exit Sub
                        End If
                    Next
                    
                    dwRet = WaitForMultipleObjects(lenum.length, eventRecv(0), 0, INFINITE)
                    
                    If dwRet = WAIT_FAILED Then
                        MsgBox "WaitForMultipleObjects failed"
                        Exit Sub
                    End If
                    
                    For i = 0 To lenum.length - 1
                        If ncbRecv(i).ncb_cmd_cplt = NRC_PENDING Then
                            Cancel ncbRecv(i)
                        Else
                       
                            tempMessageStr = String(512, 0)
                            tempSenderStr = String(512, 0)
                            FormatNetbiosName ncbRecv(i).ncb_callname, tempSenderStr
                       
                            lstrcpy tempMessageStr, VarPtr(byteRecvMessage(i))
                            tempMessageStr = Left(tempMessageStr, InStr(tempMessageStr, Chr(0)) - 1)
                            recvList.AddItem "LANA " & ncbRecv(i).ncb_lana_num & " recv from: " & tempSenderStr & ": " & tempMessageStr
                            ResetEvent eventRecv(i)
                        End If
                         
                    Next
                Next
            End If
        Else 'unicast recv
            If bOneLana = True Then
                For j = 0 To dwNumDatagrams - 1
                    If bRecvAny = True Then
                        dwRet = DatagramRecv(ncbRecv(0), dwOneLana, &HFF, VarPtr(byteRecvMessage(0)), MAX_DATAGRAM_SIZE, 0)
                        If dwRet <> NRC_GOODRET Then
                            MsgBox "DatagramRecv failed with " & dwRet & " on LANA " & dwOneLana
                            Exit Sub
                        End If
                    Else
                        dwRet = DatagramRecv(ncbRecv(0), dwOneLana, dwNum(0), VarPtr(byteRecvMessage(0)), MAX_DATAGRAM_SIZE, 0)
                        If dwRet <> NRC_GOODRET Then
                            MsgBox "DatagramRecv failed with " & dwRet & " on LANA " & dwOneLana
                            Exit Sub
                        End If
                   
                    End If
                        
                    tempMessageStr = String(512, 0)
                    tempSenderStr = String(512, 0)
                    FormatNetbiosName ncbRecv(0).ncb_callname, tempSenderStr
                       
                    lstrcpy tempMessageStr, VarPtr(byteRecvMessage(0))
                    tempMessageStr = Left(tempMessageStr, InStr(tempMessageStr, Chr(0)) - 1)
                    recvList.AddItem "LANA " & ncbRecv(0).ncb_lana_num & " recv from: " & tempSenderStr & ": " & tempMessageStr
                Next
            
            Else
            'post asynchronous recv on each lana
                For j = 0 To dwNumDatagrams - 1
                    For i = 0 To lenum.length - 1
                        If bRecvAny = True Then
                            dwRet = DatagramRecv(ncbRecv(i), lenum.lana(i), &HFF, VarPtr(byteRecvMessage(i)), MAX_DATAGRAM_SIZE, eventRecv(i))
                            If dwRet <> NRC_GOODRET Then
                                MsgBox "DatagramRecv failed with " & dwRet & " on LANA " & dwOneLana
                                Exit Sub
                            End If
                        Else
                            dwRet = DatagramRecv(ncbRecv(i), lenum.lana(i), dwNum(i), VarPtr(byteRecvMessage(i)), MAX_DATAGRAM_SIZE, eventRecv(i))
                            If dwRet <> NRC_GOODRET Then
                                MsgBox "DatagramRecv failed with " & dwRet & " on LANA " & dwOneLana
                                Exit Sub
                            End If
                        End If
                    Next 'i
                    
                    dwRet = WaitForMultipleObjects(lenum.length, eventRecv(0), 0, INFINITE)
                    
                    If dwRet = WAIT_FAILED Then
                        MsgBox "WaitForMultipleObjects failed"
                        Exit Sub
                    End If
                    
                    For i = 0 To lenum.length - 1
                        If ncbRecv(i).ncb_cmd_cplt = NRC_PENDING Then
                            Cancel ncbRecv(i)
                        Else
                        
                            tempMessageStr = String(512, 0)
                            tempSenderStr = String(512, 0)
                            FormatNetbiosName ncbRecv(i).ncb_callname, tempSenderStr
                       
                            lstrcpy tempMessageStr, VarPtr(byteRecvMessage(i))
                            tempMessageStr = Left(tempMessageStr, InStr(tempMessageStr, Chr(0)) - 1)
                            recvList.AddItem "LANA " & ncbRecv(i).ncb_lana_num & " recv from: " & tempSenderStr & ": " & tempMessageStr
                            ResetEvent eventRecv(i)
                        End If
                    Next i
                Next 'j
            End If
        End If 'end if bBroadcast recv
        
        For i = 0 To lenum.length - 1
            CloseHandle eventRecv(i)
        Next
    
    End If 'end of recevier
                
    If bOneLana = True Then
        DelName dwOneLana, txtLocalName.Text
    Else
        For i = 0 To lenum.length - 1
            DelName lenum.lana(i), txtLocalName.Text
        Next
    End If
    
        
    MsgBox "Done this round of send/recvs. "
    
    cmdSendRecv.Enabled = True
    
    
End Sub

'
' Subroutine: Form_Load
'
' Description:
'    First enumerate all LANAs and then reset all LANAs.
'
Private Sub Form_Load()
    bOneLana = False
    chkOneLana.Value = 0
    dwOneLana = 0
    bBroadcast = False
    bSender = False
    bUniqueName = True
    bRecvAny = False
    dwNumDatagrams = 5
    dwDelay = 0
    cmdSendRecv.Caption = "Recv"
   
    dwErr = LanaEnum(lenum)
    If dwErr <> NRC_GOODRET Then
        MsgBox "LanaEnum failed: " & dwErr
        Exit Sub
    End If
    
    For i = 0 To lenum.length - 1
        ListLana.AddItem lenum.lana(i)
    Next i
    
    dwErr = ResetAll(lenum, MAX_SESSIONS, MAX_NAMES, False)
    If dwErr <> NRC_GOODRET Then
        MsgBox "ResetAll failed: " & dwErr
        Exit Sub
    End If

End Sub

'
' Subroutine: optBroadcast_Click
'
' Description:
'    This routine sets the flag for using broadcast datagrams.
'
Private Sub optBroadcast_Click()
    bBroadcast = True
End Sub

'
' Subroutine: optDirect_Click
'
' Description:
'    This routine sets the flag for directed datagrams (i.e. not
'    broadcasts).
'
Private Sub optDirect_Click()
    bBroadcast = False
End Sub

'
' Subroutine: optReceiver_Click
'
' Description:
'    This routine sets the receiver flag. That is, we're not sending
'    datagrams.
'
Private Sub optReceiver_Click()
    bSender = False
    cmdSendRecv.Caption = "Recv"
End Sub

'
' Subroutine: optSender_Click
'
' Description:
'    This routine sends the sender flag.  That is, we're not receiving
'    datagrams.
'
Private Sub optSender_Click()
    bSender = True
    cmdSendRecv.Caption = "Send"
End Sub

'
' Subroutine: txtDelay_Change
'
' Description:
'    This routine changes the delay in milliseconds between sends.
'
Private Sub txtDelay_Change()
    dwDelay = CLng(txtDelay.Text)
End Sub

'
' Subroutine: txtNumDatagram_Change
'
' Description:
'    This routine changes the number of datagrams to either send
'    or receive when the user hits the "Send/Recv" button.
'
Private Sub txtNumDatagram_Change()
    dwNumDatagrams = CLng(txtNumDatagram.Text)
End Sub

'
' Subroutine: txtOneLana_Change
'
' Description:
'    This routine changes the LANA number to operate on when
'    the specific LANA box is checked.
'
Private Sub txtOneLana_Change()
    dwOneLana = CLng(txtOneLana.Text)
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -