求教版主,下载邮件进度条的最大值在应该写在何处(或请帮助重新写一下进度条的有关代码代码),谢谢!!!!
ProB1为进度条控件Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Dim strData As StringStatic intMessages As Integer '记录信箱的信件数
Static intCurrentMessage As Integer '当前下载的信件
Static strBuffer As String '接收消息的字符串变量
Dim hh As Long
'从winsock接收缓冲区中读取数据
Winsock1.GetData strData
Debug.Print strDataIf Left$(strData, 1) = "+" Or m_State = POP3_RETR Then
'如果接收字符串的第一个字符为“+”表示服务器接收了来自客户端的请求命令
'If the first character of the server's response is "+" then
'如果接到的第一个字符为“-”,则表示服务器认为来自客户端的请求是错误的。
'如果会话状态正处于接收邮件,则不需要判断第一个字符。
Select Case m_State
Case POP3_Connect
'
'将消息(信件)记数设置为0 Reset the number of messages
intMessages = 0
m_State = POP3_STAT
'
'发送STAT命令,要求服务器返回邮箱信息
Winsock1.SendData "STAT" & vbCrLf
Debug.Print "STAT"
Case POP3_STAT
'
'从接收的从服务器返回的邮箱状态字符串中获得邮件数量
intMessages = InStr(2, strData, " ")
If intMessages > 0 Then
'如果邮件的数量>0,设置当前会话状态为取回信件阶段
m_State = POP3_RETR
'设置变量表明当前取回的是哪个信件
intCurrentMessage = intCurrentMessage + 1
'发送RETR及参数取回第一封邮件
Winsock1.SendData "RETR 1" & vbCrLf
Debug.Print "RETR 1"
Else
'如果是处于其它状态,设置当前状态为退出会话阶段
m_State = POP3_QUIT
'发送QUIT命令退出会话过程
Winsock1.SendData "QUIT" & vbCrLf
End If
Case POP3_RETR
hh = 0
ProB1.Value = hh '进度条开始值
ProB1.Visible = True
ProB1.Min = hh '进度条最小值
strBuffer = strBuffer & strData
'
If InStr(1, strBuffer, vbLf & "." & vbCrLf) Then
'如果接收到的信件内容的字符串中存在vbLf & "." & vbCrLf表示
'使用RETR返回的信件数据已经完毕
'
'从服务器接收到信件的数据中将响应行去掉
strBuffer = Mid$(strBuffer, InStr(1, strBuffer, vbCrLf) + 2)
'从信件的数据中去掉最后的vbLf & "." & vbCrLf
strBuffer = Left$(strBuffer, Len(strBuffer) - 3)
'创建CMessage分析取得的信件数据
Set m_oMessage = New CMessage
m_oMessage.CreateFromText strBuffer
Set m_oMessage = Nothing
'清除接收信件数据的字符串
strBuffer = ""
'判断是否已经取完信件
If intCurrentMessage = intMessages Then
m_State = POP3_QUIT
'退出POP3会话
Winsock1.SendData "QUIT" & vbCrLf
Debug.Print "QUIT"
Else
intCurrentMessage = intCurrentMessage + 1
m_State = POP3_RETR
'发送RETR命令取回下一封信
Winsock1.SendData "RETR " & CStr(intCurrentMessage) & vbCrLf
End If
else
ProB1.Value = hh + 1 '进度条
End If
Case POP3_QUIT
'关闭Winsock连接
Winsock1.Close
End Select
Else
Winsock1.Close
End If
End Sub
ProB1为进度条控件Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Dim strData As StringStatic intMessages As Integer '记录信箱的信件数
Static intCurrentMessage As Integer '当前下载的信件
Static strBuffer As String '接收消息的字符串变量
Dim hh As Long
'从winsock接收缓冲区中读取数据
Winsock1.GetData strData
Debug.Print strDataIf Left$(strData, 1) = "+" Or m_State = POP3_RETR Then
'如果接收字符串的第一个字符为“+”表示服务器接收了来自客户端的请求命令
'If the first character of the server's response is "+" then
'如果接到的第一个字符为“-”,则表示服务器认为来自客户端的请求是错误的。
'如果会话状态正处于接收邮件,则不需要判断第一个字符。
Select Case m_State
Case POP3_Connect
'
'将消息(信件)记数设置为0 Reset the number of messages
intMessages = 0
m_State = POP3_STAT
'
'发送STAT命令,要求服务器返回邮箱信息
Winsock1.SendData "STAT" & vbCrLf
Debug.Print "STAT"
Case POP3_STAT
'
'从接收的从服务器返回的邮箱状态字符串中获得邮件数量
intMessages = InStr(2, strData, " ")
If intMessages > 0 Then
'如果邮件的数量>0,设置当前会话状态为取回信件阶段
m_State = POP3_RETR
'设置变量表明当前取回的是哪个信件
intCurrentMessage = intCurrentMessage + 1
'发送RETR及参数取回第一封邮件
Winsock1.SendData "RETR 1" & vbCrLf
Debug.Print "RETR 1"
Else
'如果是处于其它状态,设置当前状态为退出会话阶段
m_State = POP3_QUIT
'发送QUIT命令退出会话过程
Winsock1.SendData "QUIT" & vbCrLf
End If
Case POP3_RETR
hh = 0
ProB1.Value = hh '进度条开始值
ProB1.Visible = True
ProB1.Min = hh '进度条最小值
strBuffer = strBuffer & strData
'
If InStr(1, strBuffer, vbLf & "." & vbCrLf) Then
'如果接收到的信件内容的字符串中存在vbLf & "." & vbCrLf表示
'使用RETR返回的信件数据已经完毕
'
'从服务器接收到信件的数据中将响应行去掉
strBuffer = Mid$(strBuffer, InStr(1, strBuffer, vbCrLf) + 2)
'从信件的数据中去掉最后的vbLf & "." & vbCrLf
strBuffer = Left$(strBuffer, Len(strBuffer) - 3)
'创建CMessage分析取得的信件数据
Set m_oMessage = New CMessage
m_oMessage.CreateFromText strBuffer
Set m_oMessage = Nothing
'清除接收信件数据的字符串
strBuffer = ""
'判断是否已经取完信件
If intCurrentMessage = intMessages Then
m_State = POP3_QUIT
'退出POP3会话
Winsock1.SendData "QUIT" & vbCrLf
Debug.Print "QUIT"
Else
intCurrentMessage = intCurrentMessage + 1
m_State = POP3_RETR
'发送RETR命令取回下一封信
Winsock1.SendData "RETR " & CStr(intCurrentMessage) & vbCrLf
End If
else
ProB1.Value = hh + 1 '进度条
End If
Case POP3_QUIT
'关闭Winsock连接
Winsock1.Close
End Select
Else
Winsock1.Close
End If
End Sub
解决方案 »
- 各位懂得Adodb的大大来帮帮忙
- 请问:datareport做的预览报表如何保存
- VB 的DTPicker下拉选择时能用鼠标选 yyyy-MM-dd hh:mm:ss中的hh:mm:ss部分吗?
- datagrid和MSFlexgrid
- 在vb里面怎样使用xml文件
- 如何检测A驱有无磁盘和磁盘写保护?
- 谁有Crystal Enterprise Report Application Server 9 的序列号
- 问两个关于vb编程的问题
- 一个数值计算的问题!!!!!!
- 如何做一个类式WINDOWS“开始”的菜单
- 分不够在给,只要解决问题!不难!简单!就是我不会!呵呵呵呵呵呵呵呵!
- 怎么知道commondialog返回的是“确定”还是“取消”啊?
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Dim strData As StringStatic intMessages As Integer '记录信箱的信件数
Static intCurrentMessage As Integer '当前下载的信件
Static strBuffer As String '接收消息的字符串变量
dim strms1 as long
Dim hh As Long
'从winsock接收缓冲区中读取数据
Winsock1.GetData strData
Debug.Print strDataIf Left$(strData, 1) = "+" Or m_State = POP3_RETR Then
'如果接收字符串的第一个字符为“+”表示服务器接收了来自客户端的请求命令
'If the first character of the server's response is "+" then
'如果接到的第一个字符为“-”,则表示服务器认为来自客户端的请求是错误的。
'如果会话状态正处于接收邮件,则不需要判断第一个字符。
Select Case m_State
Case POP3_Connect
'
'将消息(信件)记数设置为0 Reset the number of messages
intMessages = 0
m_State = POP3_STAT
'
'发送STAT命令,要求服务器返回邮箱信息
Winsock1.SendData "STAT" & vbCrLf
Debug.Print "STAT"
Case POP3_STAT
'
'从接收的从服务器返回的邮箱状态字符串中获得邮件数量
intMessages = InStr(2, strData, " ")
If intMessages > 0 Then
'如果邮件的数量>0,设置当前会话状态为取回信件阶段
m_State = POP3_RETR
'设置变量表明当前取回的是哪个信件
intCurrentMessage = intCurrentMessage + 1
'发送RETR及参数取回第一封邮件
Winsock1.SendData "RETR 1" & vbCrLf
Debug.Print "RETR 1"
Else
'如果是处于其它状态,设置当前状态为退出会话阶段
m_State = POP3_QUIT
'发送QUIT命令退出会话过程
Winsock1.SendData "QUIT" & vbCrLf
End If
Case POP3_RETR
hh = 0
ProB1.Value = hh '进度条开始值
ProB1.Visible = True
ProB1.Min = hh '进度条最小值
strBuffer = strBuffer & strData
'
If InStr(1, strBuffer, vbLf & "." & vbCrLf) Then
'如果接收到的信件内容的字符串中存在vbLf & "." & vbCrLf表示
'使用RETR返回的信件数据已经完毕
'
'从服务器接收到信件的数据中将响应行去掉
strBuffer = Mid$(strBuffer, InStr(1, strBuffer, vbCrLf) + 2)
'从信件的数据中去掉最后的vbLf & "." & vbCrLf
strBuffer = Left$(strBuffer, Len(strBuffer) - 3)
'创建CMessage分析取得的信件数据
Set m_oMessage = New CMessage
m_oMessage.CreateFromText strBuffer
strms1=m_oMessage.size '邮件大小
Set m_oMessage = Nothing
'清除接收信件数据的字符串
strBuffer = ""
'判断是否已经取完信件
If intCurrentMessage = intMessages Then
m_State = POP3_QUIT
'退出POP3会话
Winsock1.SendData "QUIT" & vbCrLf
Debug.Print "QUIT"
Else
intCurrentMessage = intCurrentMessage + 1
m_State = POP3_RETR
'发送RETR命令取回下一封信
Winsock1.SendData "RETR " & CStr(intCurrentMessage) & vbCrLf
End If
else
ProB1.Value = hh + 1 '进度条
End If
Case POP3_QUIT
'关闭Winsock连接
Winsock1.Close
End Select
Else
Winsock1.Close
End If
End Sub
'
'从接收的从服务器返回的邮箱状态字符串中获得邮件数量
intMessages = InStr(2, strData, " ")
If intMessages > 0 Then
ProB1.Max=intMessages