• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
VB驱动pcAnyWhere进行文件传输
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
VB驱动pcAnyWhere进行文件传输
软件发布 VB驱动pcAnyWhere进行文件传输
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 编程技术 >> VB & VB.NET教程 >> VB驱动pcAnyWhere进行文件传输

VB驱动pcAnyWhere进行文件传输

添加时间: 2006-2-16 9:22:50  作者: VB教程  阅读次数:139   来源: http://www.d9soft.com

       

  PCAnyWhere的使用非常简单,它的使用方法在网上有非常详细的介绍,我就不再多说,我介绍一下利用VB驱动PCAnyWhere的方法。

  在我的一个项目中有特别的应用,有五个处于不同地方的计算机,有实时数据采集文件,我需要定时拔号上去,将上面的数据文件下载下来,这些数据文件随时间的不同就有不同,所以没有办法做固定的自动文件传输,为此我分别研究了软件提供script与OLE白皮书,最终决定选用OLE。

  一、利用OLE进行远程连接

  在OLE白皮书上,将OLE驱动写得十分明白,我只要将我的连接代码帖上来,应该十分明白。

  1、 检查MODEM是否在使用,由于PCAnyWhere启动后不能再由程序控制,我们必须检查MODEM是否是空闲才能确保拔号可以顺利外拔。检查MODEM空闲可能通过打开MODEM所在的串口是否成功来判断。

  2、 生成RemoteDataManager对象

  3、 进入C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere,由于 PCAnyWhere安装时将配置文件都放在这个目录下,我们将运行路径切换到这个目录下,可以更方便地使用。

  4、 生成RemoteData对象,这要求在配置文件路径下有对应CHF文件上,这是在PCAnyWhere中配置的,只要名称与连接方式相同就可以了。

  5、 设置拔号的电话号码,设置登录的用户名与密码,设置进行自动传输的ATF文件,并将RunOnConnect设为TRUE,并将这此配置的修改进行保存。

  6、 开始拔号并自动传输文件。

  7、 延时,判断MODEM是否空闲,空闲则这一次拔号、文件传输完毕(也有可能失败)。判断已下载的文件,如果修改时间已更新,则这次是成功的。否则是失败的。

  8、 将RemoteData、RemoteDataManager对象释放。

  9、 拔下一个点。

If checkMODEMIdle Then

showBegin 注释:显示开始信息

注释:Create CRemoteDataManager object

Set RemoteDataManager = CreateObject("WINAWSVR.RemoteDataManager")

RemoteDataManager.ChangeDirectory "C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere"

S = RemoteDataManager.CurrentDirectory()


CHFile = xProfile.GetValue(WatchPoint(nowRunID), "CHFFILE") 注释:用于拔号的配置

Set RemoteData = RemoteDataManager.RetrieveObject(CHFile, 2, 0)

RemoteData.PhoneNumber = xProfile.GetValue(WatchPoint(nowRunID), "PHONENUM")

RemoteData.AutoXferFile = filename

RemoteData.AutoLoginName = xProfile.GetValue(WatchPoint(nowRunID), "USERNAME")

RemoteData.AutoLoginPassword = xProfile.GetValue(WatchPoint(nowRunID), "PSW")

RemoteData.RunOnConnect = True

RemoteData.WriteObject (0)

S = RemoteData.PhoneNumber

RemoteData.Launch

Sleep 30000

Do

If checkMODEMIdle Then Exit Do

DoEvents

Sleep 5000

Loop

注释:取文件结束,要进行转存处理

moveDBFData localpath

Set RemoteData = Nothing

Set RemoteDataManager = Nothing

nowRunID = nowRunID + 1

End If


  注意:一次完毕后必须将RemoteData、RemoteDataManager对象释放,不然会出现错乱的现象。

  好了,拔号自动文件传输已经实现了,但这个文件传输是在PCANYWHERE中配置好的不变的自动文件传输,不能实现我要的根据时间不同下载不同文件的要求。

  二、动态生成自动文件传输文件

  为了动态生成自动文件传输,自然要修改自动文件传输文件的配置,可OLE中没有给出这方面的功能,我不得不另辟蹊径了。

  用文本编辑器打开ATF文件(自动文件传输文件),发现全是乱码,只有路径可以识别。灵机一动用UltraEdit-32打开并用十六进制打开,哈,秘密全在其中。

  ATF的系统文件格式如下:


  04 40 41 54 46 01 00 01 01 00 01 01 01 01 00 01 注释:第八位:00表示增量下载,01全部重新下载

  00 00 00 00 00 00 00 01 00 FF FF 00 00 11 00 43 注释:第八位:00表示文件传输完毕后不挂断,01表示文件传输完毕后不挂断言 C

  41 75 74 6F 58 66 65 72 5F 43 6F 6D 6D 61 6E 64 AutoXfer_Command

  01 13 45 3A 5C 55 53 42 42 41 4B 5C 32 30 30 33 第一位是传输方式:00 发到主机01从主机接收 02同步 第二位是本地文件路径长度 ,后面的是本地文件路径


  31 2E 64 62 66 14 44 3A 5C 71 74 64 61 74 61 31 注释:第六个主机文件路径长度, 后面的是主机文件路径

  5C 32 30 30 33 31 2E 64 62 66


  有了文件的组成格式,生成这么一个文件就不在话下了。只要用二进制方式生成这个文件,就一切OK了。

Public Sub makeATFFile(ByVal localpath As String, ByVal remotepath As String, ByVal filename As String)

Dim tx() As Byte

Dim ii As Integer

Dim len1, len2 As Integer

len1 = Len(localpath)

len2 = Len(remotepath)

ReDim tx(0 To 48 + len1 + len2 + 2)

注释:04 40 41 54 46 01 00 01 01 00 01 01 01 01 00 01 注释:第八位:00表示增量下载,01自然下载

注释:00 00 00 00 00 00 00 01 00 FF FF 00 00 11 00 43 C

注释:41 75 74 6F 58 66 65 72 5F 43 6F 6D 6D 61 6E 64 AutoXfer_Command

注释:01 13 45 3A 5C 55 53 42 42 41 4B 5C 32 30 30 33 第一位是传输方式:00 发到主机01从主 机接收 02同步 第二位是本地文件路径长度

注释:31 2E 64 62 66 14 44 3A 5C 71 74 64 61 74 61 31 注释:第六个主机文件路径长度

注释:5C 32 30 30 33 31 2E 64 62 66

tx(0) = &H4

tx(1) = &H40

tx(2) = &H41

tx(3) = &H54

tx(4) = &H46

tx(5) = &H1

tx(6) = &H0

tx(7) = &H1

tx(8) = &H1

tx(9) = &H0

tx(10) = &H1

tx(11) = &H1

tx(12) = &H1

tx(13) = &H1

tx(14) = &H0

tx(15) = &H1


tx(16) = &H0

tx(17) = &H0

tx(18) = &H0

tx(19) = &H0

tx(20) = &H0

tx(21) = &H0

tx(22) = &H0

tx(23) = &H1

tx(24) = &H0

tx(25) = &HFF

tx(26) = &HFF

tx(27) = &H0

tx(28) = &H0

tx(29) = &H11

tx(30) = &H0

tx(31) = &H43

注释:41 75 74 6F 58 66 65 72 5F 43 6F 6D 6D 61 6E 64 AutoXfer_Command

tx(32) = &H41

tx(33) = &H75

tx(34) = &H74

tx(35) = &H6F

tx(36) = &H58

tx(37) = &H66

tx(38) = &H65

tx(39) = &H72

tx(40) = &H5F

tx(41) = &H43

tx(42) = &H6F

tx(43) = &H6D

tx(44) = &H6D

tx(45) = &H61

tx(46) = &H6E

tx(47) = &H64


注释:01 13 45 3A 5C 55 53 42 42 41 4B 5C 32 30 30 33 第一位是传输方式:00 发到主机01从主

tx(48) = &H1

tx(49) = len1

For ii = 1 To len1

tx(49 + ii) = Asc(Mid(localpath, ii, 1))

Next ii

tx(49 + len1 + 1) = len2

For ii = 1 To len2

tx(49 + ii + len1 + 1) = Asc(Mid(remotepath, ii, 1))

Next ii


注释:二进制文件打开

On Error Resume Next

Open filename For Binary As #1

For ii = 0 To 48 + len1 + len2 + 2

Put #1, , tx(ii)

Next ii

Close 1

End Sub


  输入本地文件路径,主机文件路径,ATF文件名,就可生成这么一个文件,再将RemoteData.AutoXferFile设成新生成的ATF文件,你就可以想传什么就传什么文件了,不过,有一点要注意:这两个文件路径都是必须存在的,不然会出错。

  结论:

  利用VB驱动pcAnyWhere是一件非常简单的事件,但不是很好,首先它无法完成由程序控制,还有是在拔号与文件传输时会出现操作界面,无法将其置为一个后台程序,而人工的干预也过于容易,不过,在解决我当前的问题方面,它是一个非常好的选择。

 

上下文章:

 

上一篇文章: VB编程之路-如何让界面美化 下一篇文章: VB环境多媒体压缩数据流播放技术

相关文章:

  • 新蠕虫伪装成文件夹图标,让你防不胜防
  • Vista找不到Config文件夹的解决办法
  • 解瘳Vista系统OpenGL驱动问题整理
  • 病毒猖獗,怎么打开电脑文件会较安全?
  • 卑鄙病毒:加密你的文件勒索你的钱

相关软件:

  • 文件管理精灵 V3.21
  • PcAnywhere V11.5.1 updates
  • PcAnywhere V12.0 Beta
  • FTP远程文件同步更新程序 1.0.0.0
  • 系统文件备份工具 1.0a
  • excel文件转marc文件工具 V2.5

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • C++程序设计之四书五经
  • VB入门教程之四
  • VB入门教程之三
  • VB入门教程之二
  • VB入门教程之一
  • 压缩被DBGIRD控件正在使用的MDB数...
  • 谈谈VB的数据库编程方式
  • 在VB中用DAO实现数据库编程
  • Data控件使用有密码的Access数据库
  • 用DAO或ADO正确访问Access 2000

VB & VB.NET教程阅读排行

  • VB入门教程之一
  • VB入门教程之二
  • VB入门教程之三
  • VB入门教程之四
  • 如何编写高质量的VB代码
  • 初学者必知:VB10个小编程
  • VB访问SQL Server数据库技术全揭密
  • 怎样在VB中控制Word?
  • 用DAO或ADO正确访问Access 2000
  • VB中列表框的使用技巧说明

编程技术阅读总排行

  • VB入门教程之一
  • Java连接数据库实例
  • 第二章 PowerBuilder 入门之创建新...
  • VC++之List Box/Check List Box控...
  • 第一章 什么是PowerBuilder
  • VC++ List Ctrl控件
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有