VB编的局域网发送信息软件如何进行超时处理?

因想方便在公司局域网内通过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
温馨提示:内容为网友见解,仅供参考
第1个回答  2006-08-10
doevents应该是没用的
因为你用的是API NetMessageBufferSend发送信息,关键是可能这个函数在执行无效的发送时会导致系统等待

VB编的局域网发送信息软件如何进行超时处理?
在过程当中加上一句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, "...

...很大时接收方报10040--数据包太大,请问怎么处理。
虽然很久没用这控件了,不过原理还是懂的,给你点思路吧 解决你的问题,大概有几个方法:一.控制发送速度,简单但是效率有点低 二.技术方加大数据缓冲,优先接收,读了就放内存里,接收完或是空闲时再处理,这在处理过程复杂时比较有效 三.出错的数据丢掉---没错,就是不要了!既然你选择了UDP,就无法避免...

关于VB的远程发信息
情况就是,你不能发送一个信息,给连接到INTNET的局域网中的某一太计算机。当然如果你这两台计算机在同一个局域网中,并且IP使用的是局域网的IP,我想就不会出现问题了。

求利用vb做的一个可以在局域网聊天,传文件的程序
在上面的 TCP 应用程序中,一个 Winsock 控件必须显式地进行“监听”,另一个必须使用 Connect 方法初始化连接。UDP 协议不需要显式的连接。要在两个控件中间发送数据,需要完成以下的三步(在连接的双方): 将RemoteHost 属性设置为另一台计算机的名称。将RemotePort 属性设置为第二个控件的 LocalPort 属性。调用Bind...

怎样用VB编写一个在局域网中能同时传输多个文件的程序?
如果是指定的共享文件夹,你可以使shell语句,调用一个copy。也可以使用filessystemobject对像的拷贝命令来做。要知道,如果是已知的共享文件夹的话,你实际就等于在做一个本地移动或复制文件的操作。如果待传输文件是提前无法预知的,就再挂一个dialog控件就可以了 ...

VB编写的局域网聊天工具源代码
′发送用户输入的内容 Winsock1.SendData Text1.Text End Sub Private Sub Winsock1-DataArrival (Byval bytesTotal As Long)Dim rec As String ′接收对方数据并在文本框内显示 Winsock1.GetData rec, vb String Text2.Text=rec End Sub --- 2."聊天(副机)"Private Sub Form_Load()′设置网...

如何用VB代码打开局域网上共享的文件夹
回答:你用regsnap或者regshot软件快照下注册表,再用深度那个工具修改下注册表,再用regsnap或者regshot软件快照下注册表,对比下两次的区别后,就能找到相关的注册表项了,找到后用操作注册表的API或者wscript更改掉相关的注册项即可。 开启或者关闭局域网共享的功能,其实就是更改注册表相应的键值。

vb 编写局域网内的文件传播代码
首先假设你所说的局域网中各台计算机的共享是没有密码的,或者是默认共享。这样你就能用下面的方法访问了。1.vb代码(用vb中的Microsoft Scripting runtime中的filesytemobject对象)Private Sub Command1_Click()Dim fso As New Scripting.FileSystemObject Dim fl As Scripting.File Set fl = fso....

如图,我用vb.net编写的软件,在本地打开没问题,不过在局域网中打开总是...
你试一下把放数据库的文件夹未知提高权限

局域网通知公告类的软件如何编写
可以用VB实现,简单一点的办法就是用VB中的socket组件。第一件事就是要制定通信协议,其实也就是通信的内容而已。不需要太复杂的协议,你自己制定一个约定,统计一下发送哪些信息能够控制显示屏的显示,然后你列举出来,最终通过发送数据包,A电脑解析成相应的控制操作即可。还是要C\/S结构的,只是不那么...

相似回答
大家正在搜