博文

用VB编写异步多线程下载程序(2005-10-28 20:12:00)

摘要:为了高效率地下载某站点的网页,我们可利用VB的Internet Transfer 控件编写自己的下载程序, Internet Transfer 控件支持超文本传输协议(HTTP) 和文件传输协议 (FTP),使用 Internet Transfer 控件可以通过 OpenURL 或 Execute 方法连接到任何使用这两个协议的站点并检索文件。本程序使用多个Internet Transfer 控件,使其同时下载某站点。并可判断文件是否已下载过或下载过的文件是否比服务器上当前的文件陈旧,以决定是否重新下载。所有下载的文件中的链接都做了调整,以便于本地查阅。   OpenURL 方法以同步方式传输数据。同步指的是传输操作未完成之前,不能执行其它过程。这样数据传输就必须在执行其它代码之前完成。   而 Execute 方法以异步方式传输数据。在调用 Execute 方法时,传输操作与其它过程无关。这样,在调用 Execute 方法后,在后台接收数据的同时可执行其它代码。   用 OpenURL 方法能够直接得到可保存到磁盘的数据流,或者直接在 TextBox 控件中阅览(如果数据是文本格式的)。而用 Execute 方法获取数据,则必须用 StateChanged 事件监视该控件的连接状态。当达到适当的状态时,调用 GetChunk 方法从控件的缓冲区获取数据。   首先,建立启始的http检索连接, Public g As Variant Public k As Variant Public spath As String Dim links() As String g = 0 spath = 本地保存下载文件的路径 links(0)=启始URL inet1.execute links(0), "GET" '使用GET方法。    事件监控子程序(每个Internet Transfer 控件设置相对应的事件监控子程序):   用StateChanged 事件监视该控件的连接状态, 当该请求已经完成,并且所有数据均已接收到时,调用 GetChunk 方法从控件的缓冲区获取数据。 Private Sub Inet1_StateChanged(ByVal State As Integer) 'State = 12 时,使用 GetChunk 方法检索服务器的响应。 Selec......

阅读全文(2235) | 评论:0

用VB6.0编写手机短信发送(2005-10-28 20:11:00)

摘要:因为手机短消息的发送是以PDU串的形式发送出去的,中文字符以Unicode码来表示,所以在发送中文短消息之前必须首先将中文字符转换为Unicode码,下面的函数将实现这个功能。这个函数主要应用到VB自带的一个格式转换函数:ChrW()将中文转换为Unicode码。   Public Function chg(rmsg As String) As String  Dim tep As String  Dim temp As String  Dim i As Integer  Dim b As Integer  tep = rmsg  i = Len(tep)  b = i / 4  If i = b * 4 Then   b = b - 1   tep = Left(tep, b * 4)  Else   tep = Left(tep, b * 4)  End If  chg = ""  For i = 1 To b   temp = "&H" & Mid(tep, (i - 1) * 4 + 1, 4)   chg = chg & ChrW(CInt(Val(temp)))  Next i  End Function   同上,为了发送以PDU模式发送短消息,必须将手机号码和对方手机号码也转换为PDU格式,下面的函数就是为了实现这种转换:   Public Function telc(num As String) As String  Dim tl As Integer  Dim ltem, rtem, ttem As String  Dim ti As Integer  ttem = ""  tl = Len(num)  If tl <> 11 And tl <> 13 Then   MsgBox "wrong number." & tl   Exit Function  End If  If tl = 11 Then   tl = tl + 2   num = "86" & num  End If  For ti = 1 To tl Step 2   ltem = Mid(num, ti, 1)   rtem = Mid(num, ti + 1, 1)   If ti = tl Then rtem = "F"   ttem......

阅读全文(2236) | 评论:0

用vb实现ftp的上传下载(2005-10-28 20:09:00)

摘要:Option Explicit Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _(ByVal sAgent As String, ByVal LAccessType As Long, ByVal sProxyName As String, _ByVal SProxyBypass As String, ByVal lFlags As Long) As Long Public Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" _(ByVal hInternetSession As Long, ByVal sServerName As String, _ByVal nServerPort As Integer, ByVal sUsername As String, _ByVal sPassword As String, ByVal lService As Long, _ByVal lFlags As Long, ByVal lContext As Long) As Long Public Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" _(ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, _ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, _ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, _ByVal dwContext As Long) As Boolean Public Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" _(ByVal hFtpSession As Long, ByVal lpszLocalFile As String, _ByVal lpszRemoteFile As......

阅读全文(5853) | 评论:0

用VB编写网络寻呼机(2005-10-09 21:55:00)

摘要:用VB编写网络寻呼机 ---- 提起ICQ的大名,爱好电脑的朋友一定不会感到陌生的吧?ICQ就是互联网上的寻呼机,无论什么时候,只要你的朋友在线,你只需在ICQ中输入他的ID号码,你就可以在互联网上呼到他。ICQ由于其方便、快捷,且拥有众多的注册用户而一举成为互联网上最流行的网络寻呼机,它几乎成为每一个上网用户的必备之物。当你在使用ICQ的时候,是否会想过自己动手编写一个网络寻呼机呢?这其实在VB中就可以实现。 ---- 网络寻呼的原理就是当客户端程序连接服务器时,通过服务器搜索所要呼叫的ID号码,如果检测到此用户且该用户正处于联网状态,则服务器通知此用户的客户端程序响应主叫方客户端程序,然后在主叫方和被叫方建立连接后,双方就可以聊天或进行其它的通信。 ---- 在VB中编写网络寻呼机需要建立两个程序,一个为客户端程序Client,一个为服务器端程序Server。 ---- 一、在Client工程中建立一个窗体,加载WinSock控件,称为tcpClient,协议选择TCP。再加入四个文本框,用以输入服务器的IP地址、服务器端口号,被呼叫的网络寻呼ID号以及用户登录ID号。然后再在窗体中加入三个按钮,分别命名为“连接”、“断开”和“退出”,点击“连接”按钮,并进行如下初始化连接,代码如下: Private Sub Command1_Click()If Len(Text1.Text) = 0 And Len(Text2.Text) = 0 ThenMsgBox ("请输入主机名或主机IP地址。")Exit SubElseIf Len(Text1.Text) > 0 ThentcpClient.RemoteHost = Text1.TexttcpClient.RemotePort = Text2.TextEnd IftcpClient.ConnectTimer1.Enabled = TrueEnd SubPrivate Sub Command2_Click()tcpClient.Close   '断开连接End SubPrivate Sub Command3_Click()EndEnd SubPrivate Sub Form_Load()  Text2.Text = "1001"End SubPrivate Sub tcpClient_Connect()tcpC......

阅读全文(2583) | 评论:0

制作自己的网络搜索软件(2005-10-09 21:52:00)

摘要:制作自己的网络搜索软件 ---- 大家都知道,获得信息是我们上网的很大一个目的,而获得信息对于大多数人来说要通过网上的搜索引擎来搜索自己所需要的信息,而搜索软件通过向搜索站点发出特殊搜索字串命令(各个站点的格式不一样),然后用软件对结果进行处理后显示出来。原理简单,可是效果却是显著的,能够迅速而方便的搜索到各个站点的信息。下面我就通过介绍使用 vb制作自己的搜索软件和剖析现在流行的搜索软件程序来介绍这些内容:   我们都知道vb是最简单方便的编程语言,利用vb编写一个小小的搜索软件用不了多少行语句。第一步当然要安装一个vb5.0或者6.0 的运行环境。启动vb以后,首先创建了一个窗体,然后要对运行环境进行一下设置:具体来说呢,就是添加上必要的控件,一般来说,如果您安装了IE4.0以上的浏览器,windows的 system目录中就会有SHDOCVW.DLL的文件,我们通过点击菜单中“工程”-“部件”,在弹出的对话框中找到有一栏写着”microsoft internet controls”的选项,这个选项其实就是上面提到的SHDOCVW.DLL 文件的描述。利用这个文件我们可以初始化一个浏览器的实例。当您选中这个选项后,会发现工具栏中多了一个形状如同地球的按钮,这就是刚才选中的浏览器控件,我们双击这个图标按钮在窗体上生成一个webbrowser1 的部件,接下来我们就使用这个部件来显示查询的结果。   接下来我们在窗体上放上一个文本框和一个按钮,其实就这几个部件已经可以算是一个最小的搜索程序基本结构了。我们现在来所一说网络搜索的原理:上面已经提到是通过向搜索站点发出特殊搜索字串命令(各个站点的格式不一样),然后用软件对结果进行处理后显示出来,但如何发出搜索字符串、发出怎样的字符串还需要有一定的HTML 知识。我们知道对于网上信息的的发送是通过表单的形式来发送的,也就是说当我们在网上点击某些表单时,通过表单中包含的默认地址中的表单处理程序来接受所有包含在表单中的信息,而这些信息有的是显示的,而另外一些却是隐藏的。您可以试着将一个包含有表单的网页用Frontpage或者Dreamwaver打开,这时你就会发现有很多用浏览器看不到的东西,这些隐藏的标志同样在您发送表单时起着重要的作用。没有这些标志,发出的字符串很可能得不到服务器的应答。我们知道了这些,再返回头来看我......

阅读全文(2249) | 评论:0

MD5加密算法(2005-10-03 21:01:00)

摘要:md5.vbp Type=ExeForm=MD5.frmReference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\system32\stdole2.tlb#OLE AutomationModule=Module1; md5.basIconForm="Form1"Startup="Form1"Command32=""Name="工程1"HelpContextID="0"CompatibleMode="0"MajorVer=1MinorVer=0RevisionVer=0AutoIncrementVer=0ServerSupportFiles=0VersionCompanyName="闲暇电脑"CompilationType=0OptimizationType=0FavorPentiumPro(tm)=0CodeViewDebugInfo=0NoAliasing=0BoundsCheck=0OverflowCheck=0FlPointCheck=0FDIVCheck=0UnroundedFP=0StartMode=0Unattended=0Retained=0ThreadPerObject=0MaxNumberOfThreads=1 [MS Transaction Server]AutoRefresh=1   md5.frm VERSION 5.00Begin VB.Form Form1    Caption         =   "Form1"   ClientHeight    =   3195   ClientLeft      =   60   ClientTop       =   345   ClientWidth     =......

阅读全文(3500) | 评论:0

VB问题集 (2005-10-03 20:57:00)

摘要:$?Visual Basic 允许您显示 JPEG 或 TIFF 图像文件吗? 不允许。Visual Basic 本身只支持 .BMP、.PCX、.ICO、.RLE 及 .WMF 格式的图形文件。不过,其他格式的图形文件可以用附带的第三方组件显示。这些组件可从 AccuSoft 公司或 Crescent Software 公司获得。$?Microsoft Visual Basic 支持表单内的弹出方式吗? 支持,Visual Basic 将一种弹出方式,从另一方面讲即所谓的“子表”,称为 MDI 表单或表单对象。详细信息,请参阅 MDI 表单或“子/父”条目或 “微软开发网络订阅”条目下面的 Microsoft Visual Basic 文档。 $?可以在 Windows 3.1 应用程序中使用“Visual Basic 远程数据控件”吗? 不可以。“远程数据控件”被设计为只能在 32 位 Windows 应用程序中使用的控件。在 Windows 3.1 中有一个标准的数据控件,这个控件可通过“微软喷气式(JET)数据库引擎”连接到远程数据库。 $?您可以从 Visual Basic 4.0 中使用 Data Access Objects 3.5 吗? 可以,不过当您在我们产品的旧版中使用新的对象库时将遇到问题(例如,在 Visual Basic 4.0 中使用 Data Access Objects 3.5),尤其是会出现一条使用方法的错误信息,指出“Argument Not Optional (参数不可选)”。这个问题将在所有引用引用任何 '97 自动化服务器(即 Data Access Objects 3.5、Excel 8.0、Access 8.0,等等)的所有 '95 自动化客户机(即 Excel95、Access95、Project95、Visual Basic 4.0,等等)中出现。当 95 版的产品(如 Excel 95)引用了随 '97(即 Data Access Objects 3.5 对象库)提供的对象库时,就会出现这条错误信息。问题是可能会出现许多不同的错误。 错误号 ACCESS96 #7543。请给微软技术支持打电话以获取解决方法。 $?Microsoft Visual Basic 5.0 中文版中的“图像”控件支持什么样的图像文件? 图......

阅读全文(4572) | 评论:0

vb实战1(2005-08-02 09:17:00)

摘要:417198309(417198309) 08:51:02 Team work(183006284) 07:14:53 在一个文本框中有多行文本。 点击其中任意一行,把相应的内容显示在另一文本框中,要怎么实现呢? 自由飞翔(417198309) 08:51:51 你参考这个代码: 点击其中任意一行,把相应的内容显示在另一文本框中,要怎么实现呢? 自由飞翔(417198309) 08:52:57 Option Explicit Const EM_GETSEL = &HB0 Const EM_LINEFROMCHAR = &HC9 Const EM_LINEINDEX = &HBB Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _         (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _          lParam As Any) As Long Public Sub GetCaretPos(ByVal hwnd5 As Long, LineNo As Long, ColNo As Long) Dim i As Long, j As Long Dim lParam As Long, wParam As Long Dim k As Long i = SendMessage(hwnd5, EM_GETSEL, wParam, lParam) j = i / 2 ^ 16  '取得目前光标所在位置前有多少个Byte LineNo = SendMessage(hwnd5, EM_LINEFROMCHAR, j, 0) '取得光标前面有多少行 LineNo = LineNo + 1 k = SendMessage(hwnd5, EM_LINEINDEX, -1, 0) '取得目前光标所在行前面有多少个Byte ColNo ......

阅读全文(2573) | 评论:0

基于VB的分布式监控系统通信设计2(2005-08-02 04:09:00)

摘要:4. 网络通信 VB6.0与旧版本相比较,最明显的特点是增加了强大的网络功能,将其用于分布式监控系统中可以轻松地实现远程通信。VB的WINSOCK控件有效屏蔽了对WINDOWS套接字的低层操作,可方便地建立起网络中任意两个具有唯一IP地址节点间的连接,并通过UDP或TCP协议进行数据交换,可用于创建Client/Server应用程序。 本文举分布式监控系统中节点间通信的实例,其中节点A(IP地址202.114.102.134)作为服务器负责某一区域的数据采集与处理,程序内有一名为TCPServer的Winsock控件;节点B(IP地址202.114.102.135)是同级或上一级的某一节点,作为客户机,其程序内有一名为TCPClient的Winsock控件。 节点A服务器核心程序如下: (1)初始化程序 tcpserver(0).RemoteHostIP = 202.114.102.135 tcpserver(0).LocalPort = 1001   'tcpserver(0)专用于侦听 tcpserver(0).Listen (2)发送数据程序 tcpserver(Index).SendData Text1.Text (3)处理客户机连接请求程序 Private Sub TCPServer_ConnectionRequest(Index As Integer, ByVal requestID As Long) Load tcpserver(Index) tcpserver(Index).Accept requestID End Sub (4)客户机数据到达处理程序 Private Sub TCPServer_DataArrival(Index As Integer, ByVal bytesTotal As Long) Dim RD As String tcpserver(Index).GetData RD, vbString txtRD.text=RD tcpserver(Index).SendData RD End Sub (5)关闭连接程序 Private Sub TCPServer_Close(Index As Integer) tcpserver(Index).Close Unload tcpserver(Index) E......

阅读全文(2727) | 评论:0

基于VB的分布式监控系统通信设计(2005-08-02 04:09:00)

摘要:郭爱文 (武汉大学动力工程系自动化专业) 王  静 (武汉大学电力工程系通讯专业) 武汉  430072 摘  要  本文介绍了利用VB的多种通信手段实现分布式监控系统的多种通信功能,对每一种通信手段给出其原理和应用实例。 关键词  VB  通信  串行口  控件  DDE  API The Communication Design of Distributed Control System Based on VB Abstract:  This article introduces the realization of many communication functions of Distributed Control System with the application on lots of communication methods of VB. Key Words:  VB, Communication, Serial Port, Control Box, DDE, API 1. 概论 分布式监控系统已在工业领域得到广泛应用,许多企业对于中小规模的设备,如中小型热电厂和水电站,出于硬件软件投资利润率和性能价格比的考虑,常常是自行开发或参与开发本企业的监控系统。而许多企业在成套引进大型DCS系统后,也常因实际情况而需要自行开发或改进其监控系统。 分布式监控系统以微机为基础,用数据通信将微机连在一起实现数据共享,从而对工业过程进行集中监视管理和分散控制。因此,分布式监控系统中通信的设计与实现是至关重要的环节。Visual Basic开发语言具有简洁明了、编程效率高、开发周期短的特点,利用VB中的多种通信手段,可实现分布式监控系统的多种通信功能。 2. 与下位机的通信 分布式监控系统的数据采集站可直接与现场带有标准RS-232C接口的智能仪表、PLC和单片机等链接,并可通过扩展控制卡形成一个数据采集子网,以高速准确地获取数据。VB的MSCOMM通信控件具有完善的串口数据发送和接受功能,利用它可以屏蔽对硬件的操作,简易快捷地......

阅读全文(2860) | 评论:0