珠海3d打印手板:VB编的局域网发送信息软件如何进行超时处理?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/25 07:20:27
因想方便在公司局域网内通过Messenger发布通知信息,下载了一个原码,准备修改后具有IP段范围发送功能。但发现在发送过程中,如果目标电脑没有开机或没启动Messenger,小程序就会陷入漫长的无响应。如何在VB中加入代码,令到当访问不了目标机的时候,可以马上跳出访问该电脑而进行下一台机的访问,而不使程序进入无响应状态。就是说设置一个time out的处理。每访问一台机超过既定时间就跳出访问该机。代码如下:
Private Declare Function NetMessageBufferSend Lib "NETAPI32.DLL" (Server As Any, yToName As Byte, yFromName As Any, yMsg As Byte, ByVal lSize As Long) As Long

Private Sub Command1_Click()
Dim X As Boolean
X = SendMsg(TxtTo.Text, TxtFrom.Text, TxtMsg.Text)
If X Then
MsgBox "消息已被成功发送", vbInformation, "发送消息"
Else
MsgBox "发送消息失败", vbCritical, "发送消息"
End If
End Sub

Private Function SendMsg(sToUser As String, sFromUser As String, sMessage As String) As Boolean

Dim yToName() As Byte
Dim yFromName() As Byte
Dim yMsg() As Byte
Dim l As Long

yToName = sToUser & vbNullChar
yFromName = sFromUser & vbNullChar
yMsg = sMessage & vbNullChar

If NetMessageBufferSend(ByVal 0&, yToName(0), ByVal 0&, yMsg(0), UBound(yMsg)) = NERR_Success Then
SendMsg = True
End If
End Function

Private Sub Command2_Click()
End
End Sub
duduyt你添加的doevent是没有被定义的函数呢,用不了的。一运行就说“子程序或函数未定义”。

在过程当中加上一句Doevent语句,就可以

Private Sub Command1_Click()
Dim X As Boolean
doevent '这是给你加的语句,试试看
X = SendMsg(TxtTo.Text, TxtFrom.Text, TxtMsg.Text)
If X Then
MsgBox "消息已被成功发送", vbInformation, "发送消息"
Else
MsgBox "发送消息失败", vbCritical, "发送消息"
End If
End Sub

doevents应该是没用的
因为你用的是API NetMessageBufferSend发送信息,关键是可能这个函数在执行无效的发送时会导致系统等待