VB6 文件传输互发代码

合集下载

vb6 sendmessage用法

vb6 sendmessage用法

vb6 sendmessage用法
在VB6中,SendMessage函数可以用于向窗口发送消息。

具体用法如下:
1. 在VB6的代码模块中声明SendMessage函数的引用:
```vb
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
```
2. 使用SendMessage函数向窗口发送消息:
```vb
Private Sub SendMessageDemo()
Dim hWnd As Long
Dim msg As Long
Dim wParam As Long
Dim lParam As Long
' 获取目标窗口句柄
' hWnd = ...
' 设置消息和参数
msg = WM_USER + 1
wParam = 0
lParam = 12345
' 发送消息
SendMessage hWnd, msg, wParam, ByVal lParam
End Sub
```
在上面的示例中,`hWnd`代表目标窗口的句柄,可以通过调用FindWindow或者其他Windows API函数获取。

`msg`代表要发送的消息,`wParam`和`lParam`是消息的参数。

需要根据具体的需求设置不同的消息和参数,可以参考Windows API文档来查看特定消息的值和参数的使用方法。

vb6 sub传递参数

vb6 sub传递参数

vb6 sub传递参数在VB6中,可以使用Sub过程来传递参数。

以下是在VB6中详细精确地传递参数的方法:1. 通过值传递参数:在Sub过程的参数列表中声明参数,并在调用Sub过程时传递参数的值。

在Sub过程内部,可以使用参数的值进行操作,但不会影响传递给参数的原始值。

示例代码如下:vbSub MySub(ByVal num As Integer)' 使用传递的参数进行操作MsgBox "传递的参数值为:" & numEnd SubSub Main()Dim x As Integerx = 10' 调用Sub过程并传递参数的值MySub xEnd Sub2. 通过引用传递参数:在Sub过程的参数列表中声明参数,并在调用Sub过程时传递参数的引用。

在Sub过程内部,对参数的任何更改都会影响传递给参数的原始值。

示例代码如下:vbSub MySub(ByRef num As Integer)' 修改传递的参数值num = num + 10End SubSub Main()Dim x As Integerx = 10' 调用Sub过程并传递参数的引用MySub x' 输出修改后的参数值MsgBox "修改后的参数值为:" & xEnd Sub在上述示例代码中,通过值传递参数的Sub过程将显示传递的参数值为10。

而通过引用传递参数的Sub过程将修改传递的参数值,并在调用Sub过程后显示修改后的参数值为20。

需要注意的是,VB6中的Sub过程只能传递参数,而不能返回值。

如果需要返回值,可以使用Function过程。

vb6 sub传递参数

vb6 sub传递参数

vb6 sub传递参数如何在VB6中传递参数到子程序(Sub)中。

步骤一:了解子程序(Sub)和参数的概念在VB6中,子程序(Sub)是一段独立的代码块,用于执行特定的功能操作。

子程序通常会接受输入参数,并根据参数的值进行相应的处理。

参数是一种特殊的变量,它允许在调用子程序时向其传递数据。

步骤二:声明子程序(Sub)在VB6中,使用Sub语句来声明一个子程序。

具体的声明语法如下:Sub SubName(parameters)' 子程序的代码块End Sub其中,SubName是子程序的名称,它可以由字母、数字和下划线组成,但不能以数字开头。

parameters是传递给子程序的参数列表。

步骤三:传递参数到子程序(Sub)在调用子程序(Sub)之前,我们需要先定义并传递参数。

参数可以是任何数据类型,如整数、字符串等。

传递参数到子程序(Sub)的方式有两种:按值传递和按引用传递。

1. 按值传递:在子程序(Sub)声明中,参数前不加ByRef关键字。

按值传递意味着在调用子程序(Sub)时,传递给参数的是变量的值本身。

例如,我们定义一个名为AddNumbers的子程序,该子程序接受两个整数参数,并返回它们的和。

具体的代码如下:Sub AddNumbers(ByVal a As Integer, ByVal b As Integer) Dim sum As Integersum = a + bMsgBox "The sum of " & a & " and " & b & " is " & sumEnd Sub在主程序中调用该子程序,并传递参数:Private Sub Command1_Click()Dim num1, num2 As Integernum1 = 10num2 = 20AddNumbers num1, num2End Sub运行上述代码后,会弹出一个消息框,显示两个数值的和。

vb6中copyfile用法

vb6中copyfile用法

vb6中copyfile用法VB6中CopyFile用法简介CopyFile函数是VB6中用于复制文件的一个重要函数。

它可以将一个文件从一个位置复制到另一个位置,同时还可以指定是否覆盖已存在的文件。

使用语法Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVa l lpNewFileName As String, ByVal bFailIfExists As Long) As Long参数说明: - lpExistingFileName:被复制的文件的路径和文件名。

- lpNewFileName:新文件的路径和文件名。

- bFailIfExists:指示如果目标文件已存在时是否覆盖。

0表示覆盖,非0表示不覆盖。

示例用法基本用法Dim sourceFile As StringDim destinationFile As StringsourceFile = "C:\Temp\"destinationFile = "C:\Temp\"CopyFile sourceFile, destinationFile, 0上述代码将把C:\Temp\文件复制到C:\Temp\。

覆盖已存在文件Dim sourceFile As StringDim destinationFile As StringsourceFile = "C:\Temp\"destinationFile = "C:\Temp\"CopyFile sourceFile, destinationFile, 1上述代码将把C:\Temp\文件复制到C:\Temp\,如果``已存在,则会被覆盖。

VB6基于TCP协议实现局域网内文件夹传送

VB6基于TCP协议实现局域网内文件夹传送

VB6基于TCP协议实现局域⽹内⽂件夹传送刚刚拿到这个需求时,为了实现⽅便(传送⽂件已经实现,传送⽂件夹采取压缩的话也只需传送⼀个⽂件),计划采取的实现⽅法是:调⽤压缩组件,将⽂件夹压缩成⼀个⽂件,传送到另⼀端;在接收时,解压缩此⽂件得到⽂件夹。

由此带来的问题是:没有⼀个免费的压缩⽂件夹的组件。

于是想到的策略是:⽤shell程序调⽤dos下的arj.exe压缩。

但是由于arj是dos⼯具,有⼀个⽂件名的问题:⽂件名长度超过8位(中⽂4位),就会⾃动截断。

针对这个问题:⼜想了⼀种很笨的解决办法:将传送前,遍历⽂件夹,记录所有⽂件和⽂件夹名,传送时附带传过去,接收端接收完⽂件,解压缩后,修改⽂件名。

经过这么⼀折腾,由⼀个问题带来很多的头痛的问题。

(陷⼊了怪圈)。

后来经过仔细考虑,觉得⽤上述⽅法传送⽂件夹,有很多的隐患。

⼀:如果⽂件夹很⼤或⽂件很多,发送前的压缩操作需要很长时间,⽤户可操作性太差;⼆:由于要压缩⽂件夹,就需要保存,删除临时⽂件,如果处理不得当,会错删⽂件;三:⽤arj需要修改⽂件和⽂件夹名字,改名算法如果不健壮同样是⼀个隐患。

综合考虑了以后,决定修改传送算法。

基本思路是:既然传送⼀个⽂件已经实现,传送⽂件夹的话,⽆⾮是在⼀个连接过程多进⾏⼏次传送⽂件的过程。

详细⽅法描述:发送⽂件夹之前,⾸先遍历⽂件夹,保存每个⼦⽂件夹和⽂件信息(包括⽂件相对于选中的⽂件夹的路径,⽂件⼤⼩,⽂件名);传送之前,先发送传送请求,附带待传送⽂件夹的总体信息(⽂件夹名和⽂件夹总⽂件⼤⼩),接收端收到请求信息后,保存这些信息,选择保存路径,并发送确认标志符。

发送端收到确认标志符,⾸先传送单个⽂件的信息(单个⽂件的⼤⼩,⽂件名);接收端收到后,保存单个⽂件⼤⼩,在本地创建⽂件,发送请求发送⽂件内容标志符。

发送端收到后开始发送⽂件体;接收端开始接收⽂件体,当保存单个⽂件⼤⼩和接收到的数据相等时,请求发送第⼆个⽂件的⽂件信息,依次下去。

VB6httppost发送与返回内容处理

VB6httppost发送与返回内容处理

VB6httppost发送与返回内容处理今天帮同事做另一家公司的Web系统数据对接,我方发送请求,对方返回一些数据,用的是客户端用的是VB6,代码记录如下:[vb] view plain copy1.Dim postData As String2.Dim url As String3.4.url = "http://111.11.11.11/services/getQuickInfoService"5.postData = TextContent.Text6.7.'--- post8.Dim HttpClient As Object9.10.Set HttpClient = CreateObject("Microsoft.XMLHTTP")11.HttpClient.Open "POST", url, False12.HttpClient.setRequestHeader "Content-Type", "text/xml; charset=UTF-8"13.HttpClient.Send pvToByteArray(postData)14.15.Do While HttpClient.readyState <> 416.DoEvents17.Loop18.19.TextResponse.Text = HttpClient.responseText20.21.22.MsgBox "发送完毕"下面是发送内容的编码部分:[vb] view plain copy1.' 下面是两个转换函数2.3.Private Function pvToByteArray(sText As String) As Byte()4.pvToByteArray = GB2312ToUTF8(sText)5.6.End Function7.8.Public Function GB2312ToUTF8(strIn As String, Optional B yVal ReturnValueType As VbVarType = vbString) As Variant9.Dim adoStream As Object10.11.Set adoStream = CreateObject("ADODB.Stream")12.adoStream.Charset = "utf-8"13.adoStream.Type = 2 'adTypeText14.adoStream.Open15.adoStream.WriteText strIn16.adoStream.Position = 017.adoStream.Type = 1 'adTypeBinary18.GB2312ToUTF8 = adoStream.Read()19.adoStream.Close20.21.If ReturnValueType = vbString Then GB2312ToUTF8 = Mid(GB2312T oUTF8, 1)22.23.End Function效果:VB6比较老了,没有Java和C#那么完备,也没什么插件可以实现特定功能,但任然可以用原始的语句写出很多功能。

VB6.0文件操作详细攻略

VB6.0文件操作详细攻略

VB6.0文件操作详细攻略文件:存储在外部介质上数据的集合。

按名存取1. 记录由若干个相互关联的数据项组成。

例如,由学生的学习成绩信息组成的记录:2. 文件及其种类文件是记录的集合(1) 顺序文件按顺序依次把记录写入文件;按顺序依次把记录读出来。

(2) 随机文件随机文件可以直接访问文件中的任意一个记录。

记录长度相同根据记录号访问(1) ASCII码文件数据是以ASCII码进行编码储存的。

(2) 二进制文件(Binary File)数据是以二进制格式进行编码保存的。

6.2 顺序文件1. 打开文件Open "文件名" [For 模式] [Access 操作类型] [锁定] As [#]文件号 [Len=记录长度](1) 模式OUTPUT:写操作INPUT:读操作APPEND:追加到文件未尾(2) 操作类型READ:只读WRITE:只能写READWRITE:读写皆可(3) 锁定:用于多进程环境,是否允许其他进程对打开的文件进行操作Shared(缺省):共享Lock Read:禁止其他进程对该打开的文件进行读操作Lock Write:禁止其他进程对该打开的文件进行写操作Lock Read Write:禁止其他进程对该打开的文件进行读写操作(4) 文件号1~511,可以用FreeFile函数获得下一个可利用的文件号。

(5) 记录长度小于或等于32767的整数。

它指定数据缓冲区的大小。

例如,打开C:\VB\SCORE,供写入数据,指定文件号为#1。

命令:OPEN "C:\VB\SCORE" FOR OUTPUT AS #12. 写入命令Print #文件号,[输出列表]输出列表的意义同Print方法。

保存文本框假定文本框的名称为txtTest,文件名为TEST.DAT。

方法1:把整个文本框的内容一次性地写入文件。

Open "TEST.DAT" For Output As #1Print #1, txtTest.TextClose #1方法2:把整个文本框的内容一个字符一个字符地写入文件。

基于VB6.0的双机文件传送系统

基于VB6.0的双机文件传送系统

基于VB6.0的双机文件传送系统
曹金华;王宜怀
【期刊名称】《计算机应用研究》
【年(卷),期】2000(017)004
【摘要】在Visual Basic 6.0环境下,利用MSComm控件开发的双机文件传送系统,着重阐述了MSComm控件用于文件传送的使用要点以及相关设计方法,探讨了MSComm控件应用于文件传送中的特殊问题.
【总页数】3页(P53-54,60)
【作者】曹金华;王宜怀
【作者单位】苏州大学计算机工程系,苏州,215006;苏州大学计算机工程系,苏州,215006
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于VB6.0的双机远程通信 [J], 唐建雄
2.基于嵌入式系统的X-MODEM协议下的文件传送 [J], 李帅;聂慧饶;马浩;张文增
3.基于嵌入式系统的X—MODEM协议下的文件传送 [J], 李帅;聂慧饶;马浩;张文增
4.基于代理的异步安全文件传送系统的实现 [J], 毕岱君;陈文博
5.基于双机联合故障检测的双机热备系统可靠性和安全性研究 [J], 覃庆努;魏学业;于蓉蓉;吴小进
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VB6 文件传输互发代码大| 中| 小[2006/03/04 10:56 | 分类: .Net | by NetFetch ]Visual Basic 6.0 文件发送端'********************版权信息********************'*隶属工程: FileTran1'*模块名称: frmMain'*模块描述: 发送文件'*成员个数: 11'*代码行数: 101'*声明行数: 16'*创建时间: 2006-02-21 14:22:29(创建人:MysticBoy)'*修改时间: 2006-02-21 14:22:29(修改人:MysticBoy)'*代码说明: 该模块负责发送文件。

'* 您需要向窗体内添加一个名为ws的winsock控件。

'*版权说明: 版权所有(c) ?-2006 Mysticsoft.'* 保留所有权'***********************************************Dim cState As String '当前状态Dim cmd As String '传输协议的命令Dim e As ErrObject ' 错误对象'********************成员[Command2_Click]说明信息******************** '*代码编辑: 2006-02-21 14:49:04'*成员类型: 对象[Command2]的[Click]事件'*HelpCtID: 0'*成员描述:'*功能说明: 测试发送一个文件。

'******************************************************************** Private Sub Command2_Click()SendFile \"E:影视&音乐韩国辣妹4th WhyKiller(boby vox).mpg\", \"127.0.0.1\"'发送文件'E:影视&音乐韩国辣妹4th WhyKiller(boby vox).mpg'MsgBox \"OK\"End Sub'********************成员[SendFile]说明信息********************'*代码编辑: 2006-02-21 14:49:04'*成员类型: 公有方法'*HelpCtID: 0'*成员描述: 发送文件'*输入参数: 参数名称说明'* FileName 要发送的完整文件名及其路径'* R emoteHost 接受文件的主机'* R emotePort [此参数可选] 接受文件的主机侦听的端口。

'*功能说明: <在此键入说明>'**************************************************************Public Function SendFile(FileName As String, RemoteHost As String, Optional RemotePort As Long = 1123) As BooleanIf ws.State <> 0 Then ws.Close '如果状态不为0说明正在使用,为发送当前文件,强制关闭,避免错误ws.Connect R emoteHost, RemotePort '连接到远程主机,该主机接受文件.DoEvents '释放CPU时间If Waiting(\"ok\") = False Then '等待接受机回应.如果连接,在连接事件中设置状态'ok\"SendFile = False '如果等待超时,那么返回,并退出Exit FunctionElse'连接成功。

这里您可以提示用户连接成功End Ifws.SendData \"file\" '请求发送文件DoEvents '这对于VB6来说,这是发送数据后,程序必须做的,如果不释放,真正的发送将在CPU空闲时If Waiting(\"filename\") = False Then '等待接受机要求文件名SendFile = False '如果等待失败,退出Exit FunctionEnd If'服务器要求文件名''''''''Dim Fnx() As StringFnx = Split(FileName, \"\") '按照路径分隔符,分割路径Dim Fnam As StringFnam = Fnx(UBound(Fnx)) '然后取数组中最后一个索引的值,该值即文件名ws.SendData Fnam '发送文件名。

DoEvents '这对于VB6来说,这是发送数据后,程序必须做的,如果不释放,真正的发送将在CPU空闲时If Waiting(\"filedata\") = False Then '等待接受机请求文件数据的命令SendFile = False '如果等待失败,退出。

Exit FunctionEnd IfDim fn As LongDim cFileName As Stringfn = FreeFile '为打开要发送的文件准备一个有效的文件句柄Dim bArys() As Byte '为要发送的文件准备内存。

ReDim bArys(FileLen(FileName) - 1) '按文件大小准备内存,注意:这里必须减一Open FileName For Binary As #fnGet #fn, , bArys '读取文件到数组中Close #fnws.SendData bArys '发送该数组。

DoEvents '这对于VB6来说,这是发送数据后,程序必须做的,如果不释放,真正的发送将在CPU空闲时cState = \"sendok\" '然后设置状态为发送完成。

DoEvents '释放CPU事件。

以便开始发送。

Waiting \"end\" '等待发送结束。

End Function'********************成员[Waiting]说明信息********************'*代码编辑: 2006-02-21 14:49:00'*成员类型: 公有方法'*HelpCtID: 0'*成员描述:'*输入参数: 参数名称说明'* txt 要等待的状态文本内容。

'* tmout [此参数可选] 超时'*功能说明: <在此键入说明>'************************************************************* Function Waiting(txt As String, Optional tmout As Long = 30) As BooleanDim sn As Singlesn = TimerDo Until cState = txt '一直等到状态为指定字符串时退出循环If tmout > 0 Then '如果设置的超时大于0If Timer - sn > tmout Then '开始等待的时间到目前为止的时间长超过超时时间时 Waiting = False '等待失败。

Exi t Function '退出函数End IfEnd IfDoEvents '释放cpu,因为我们不能霸道,因为这是个多任务的平台。

LoopWaiting = True '等待成功时返回。

End Function'********************成员[ws_Connect]说明信息********************'*代码编辑: 2006-02-21 14:49:04'*成员类型: 对象[ws]的[Connect]事件'*HelpCtID: 0'*成员描述: '如果连接成功设置状态为\"ok\"'*功能说明: '如果连接成功设置状态为\"ok\"'**************************************************************** Private Sub ws_Connect()cState = \"ok\" '如果连接成功设置状态为\"ok\"End Sub'********************成员[ws_DataArrival]说明信息******************** '*代码编辑: 2006-02-21 14:49:04'*成员类型: 对象[ws]的[DataArrival]事件'*HelpCtID: 0'*成员描述: 接受'*输入参数: 参数名称说明'* bytesTotal 接受到的数据大小'*功能说明:'********************************************************************Private Sub ws_DataArrival(ByVal bytesTotal As Long)Dim dat As Stringws.GetData dat, , bytesTotalcState = dat '接受到数据后立即设置状态信息。

以便Waiting结束等待End Sub'********************成员[ws_Error]说明信息********************'*代码编辑: 2006-02-21 14:49:04'*成员类型: 对象[ws]的[Error]事件'*HelpCtID: 0'*成员描述:'*输入参数: 参数名称说明'* Number '错误代码'* Description '错误描述'* Scode '错误的源代码标记'* Source'错误来源'* HelpFile'帮助文件'* HelpContext'帮助内容'* CancelDisplay'是否显示'*功能说明:'**************************************************************Private Sub ws_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)e.Number = Number '如果发生意外错误。

相关文档
最新文档