博文

VB 利用WINRAR 压缩文件及解压 (2005-10-11 20:16:00)

摘要: VB 利用WINRAR 压缩文件及解压 document.title="VB 利用WINRAR 压缩文件及解压 - "+document.title 预备知识: 1. Shell 函数 执行一个可执行文件,返回一个 Variant (Double),如果成功的话,代表这个程序的任务 ID,若不成功,则会返回 0。 语法 Shell(pathname[,windowstyle]) Shell 函数的语法含有下面这些命名参数: 部分 描述 pathname 必要参数。Variant (String),要执行的程序名,以及任何必需的参数或命令行变量,可能还包括目录或文件夹,以及驱动器。 Windowstyle 可选参数。Variant (Integer),表示在程序运行时窗口的样式。如果 windowstyle 省略,则程序是以具有焦点的最小化窗口来执行的。
windowstyle 命名参数有以下这些值: 常量 值 描述 vbHide 0 窗口被隐藏,且焦点会移到隐式窗口。 VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。 VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示。 VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。 VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。 VbMinimizedNoFocus 6 窗口会以一个图标来显示。而当前活动的的窗口仍然保持活动。
说明 如果 Shell 函数成功地执行了所要执行的文件,则它会返回程序的任务 ID。任务 ID 是一个唯一的数值,用来指明正在运行的程序。如果 Shell 函数不能打开命名的程序,则会产生错误。 注意 缺省情况下,Shell 函数是以异步方式来执行其它程序的。也就是说,用 Shell 启动的程序可能还没有完成执行过程,就已经执行到 Shell 函数之后的语句。 2.  WINRAR命令行语法 从命令行也可以运行 WinRAR 命令,常规的命令行语法描述如下:   WinRA......

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

快速将图片等资料转换成二进制的方法(2005-10-11 20:06:00)

摘要:很多时候,我们需要将图片框中的图片保存到数据库,并从数据库中读取出来。虽然VB中的图片框支持直接绑定数据库存入图片和读取图片的方法,但是很多场合并不能使用绑定来解决问题。于是很多人在进行操作时,都使用了类似以下的方法: 读入图片到图片框后 ,再使用 Open "Picture" For Binary 来打开文件并读入为Byte() 数组。而从数据库读取图片格式时,则需要先将 字段数据读取到 Byte(),再使用 Open "Picture" For Binary 写入到磁盘上的临时文件再使用 LoadPicture 来读取临时文件。写入和读取都是多余的步骤,浪费了时间还留下了临时文件,在图片较大的情况下,对效率的影响相当严重。 是否有更快捷方法来保存图片框图片/读取Byte()中的图片呢?是的,在 VB 下有一个鲜为人知的对象: PropertyBag ,该对象原本是保存 ActiveX 中属性中的数据,并把它写到文件中去。但是我们却能利用它来达到读取图片框图片为Byte() 的目的,请看下列代码: '假设Form 上已经存在Picture1的控件,并已经设置好图片 Dim PBag As New PropertyBag Dim B() As Byte PBag.WriteProperty "Picture", Picture1.Picture '读取Picture1.Picture 图片并写到 Pbag 容器中 B = PBag.Contents '获取容器Byte 到 B() 数组中 '这时 B 就时我们想要获得的Byte数组 '读取 Byte() 数组内容到 Picture PBag.Contents = B '指定 PBag容器的内容 '读取容器中的图片 Set Picture1.Picture = PBag.ReadProperty("Picture") 简单的几句代码就可以完成从图片到Byte() ,从Byte()到图片的转换。而且其保存和读取的格式都是使用了原始格式,即:如果你的图片框读入的是Jpg图片格式,则保存的Byte()数组也是该Jpg格式的数组,而非普通位图的数组,所以你也不用担心转换后的......

阅读全文(6202) | 评论:2

基于VB的分布式监控系统通信设计(2005-10-10 20:25:00)

摘要: 基于VB的分布式监控系统通信设计  
  郭爱文 (武汉大学动力工程系自动化专业)
王  静 (武汉大学电力工程系通讯专业) 武汉  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接口的智能仪表、PL......

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

用VB编写网络寻呼机(2005-10-10 20:23:00)

摘要: 用VB编写网络寻呼机  
  用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 Then
MsgBox ("请输入主机名或主机IP地址。")
Exit Sub
ElseIf Len(Text1.Text) > 0 Then
tcpClient.RemoteHost = Text1.Text
tcpClient.RemotePort = Text2.Text
End If
tcpClient.Connect
Timer1.Enabled = True
End Sub

Private Sub Command2_Click()
tcpClient.Clos......

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

用Visual Basic 5.0开发无线通讯数据采集应用程序(2005-10-10 20:22:00)

摘要: 用Visual Basic 5.0开发无线通讯数据采集应用程序2
 
  下面的部分程序代码是计算机和900M无线电台之间的传输程序,本程序已经在486计算机和PII586上调试通过。

1 从串口读入电台数据程序GetStringFromComm()

功能:(1) 主要完成从端口获得数据,将二进制的数据转换为ASCII码数据

Public Function GetStringFromComm() As String

定义变量(略)

If frmTerminal.MSComm1.InBufferCount < 7 Then

    GetStringFromComm = ""

    Exit Function

End If

'//读入标志码

frmTerminal.MSComm1.InputLen = 6

ReDim Preserve BinDataarr(6) As Byte

BinData = frmTerminal.MSComm1.Input

BinDataarr = BinData

UserDataLenth = BinDataarr(5) '用户数据的长度

Wait1:

    If BinDataarr(5) > frmTerminal.MSComm1.InBufferCount Then   '未接受完数据

        delay 6 '延时6s

        GoTo Wait1

    End If

   ......

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

用VB编写网络寻呼机(2005-10-10 20:15: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 Then
MsgBox ("请输入主机名或主机IP地址。")
Exit Sub
ElseIf Len(Text1.Text) > 0 Then
tcpClient.RemoteHost = Text1.Text
tcpClient.RemotePort = Text2.Text
End If
tcpClient.Connect
Timer1.Enabled = True
End Sub

Private Sub Command2_Click()
tcpClient.Close   '断开连接
End Sub

Private Sub Command3_Cli......

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

VB中窗体控制特效代码收集(2005-10-10 20:14:00)

摘要: VB中窗体控制特效代码收集  
  在Visual Basic中如何拖动窗体或控件
现在的许多Windows下的应用程序,都采用了图形化的界面,例如:WINAMP等!这样做的好处是可以使程序界面更漂亮生动,更具吸引力。但是在这样的界面下就不能使用Windows原来的标题条了,否则会影响界面的美观性。那么在没有标题条的情况下如何用鼠标拖动窗体呢?或者拖动其它的控件呢?
其实,采用API函数调用很容易实现,下面我们以拖动窗体(Form1)为例来具体讲一下实现方法:
1.新建立一个项目,名称为:test.vbp.
2. 填加一个模块,名称为:test.bas,并且在声明部分加入以下代码:
Declare Function ReleaseCapture Lib "user32" () As Long
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 Const WM_SYSCOMMAND = &H112
Public Const SC_MOVE = &HF012
其中ReleaseCapture函数是用来释放鼠标捕获的,SendMessage函数是一个在WindowsAPI中非常重要的函数,在这里的作用是用来向Windows发送移动窗体的消息。WM_SYSCOMMAND是向Windows发送消息的常量。SC_MOVE是控制移动窗体的常量。请注意:这里SC_MOVE的赋值一定要是&HF012,它表示鼠标对象。
3.在窗体的MouseDown过程中加入以下代码:
ReleaseCapture
SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_MOVE, 0
其中ReleaseCapture函数用来释放鼠标捕获,SendMessage函数向Windows发送移动窗体的消息。
4.保存......

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

男女之间六大隐密私语(2005-10-09 20:16:00)

摘要:暧昧是盛大的成人游戏,我们需要技法,我们需要攻略,我们亦需要暧昧的语言
——这会让过程变得更加曲折有趣。

情欲火花

  ——彼此都知道有这么点意思,想让这么点意思发展成燎原之势,到时候能不能扑灭是一回事,先烧起来再说。

1、女的打电话给男的,语气期期艾艾:今晚你有事吗?

男的充满期望又拿腔作势地说:那要看是什么事了。

潜台词:要是公事,对不起,我很忙,要是私事,嘿嘿嘿嘿...

2、餐桌上,男女二人边吃边聊。女子目光躲闪,不时作娇羞状。

男子富含深意地看着女子眼睛:“你一直喜欢这么压抑自己的感情?”

潜台词:我知道你对我有意思,可光有意思还不够,还要快快有所“行动”啊!

高手说这句话时,一定将深情与痛惜之情通过富于磁性的声音传达得淋漓尽致。此话一出,保证气氛一下子变得暧昧万分。

3、酒吧,男女对酌。

女人叫侍应生:给我和我先生每人来一杯马提尼。
男受宠若惊中,女大方一笑:这里最近对夫妻打折。
男正恍然若失,女嫣然一笑,眼带横波……

潜台词:想想吧,连先生都叫了,傻子都知道下面该如何。

4、深夜,男送女至楼下。

即将告别时,男贴近女面孔:“我可以上去喝杯咖啡吗?”

潜台词:你以为,他真的喝完咖啡就走吗?

5、深夜,男送女至楼下。

即将告别时,女含情脉脉一笑,似乎随意地说:“要不要上来坐坐?”

潜台词:这男的要是真的坐坐就走,后面的事儿可就难说了。听过那么个故事吧——
“你为什么挨打?因为没得到允许就吻了她?”
“不,是因为得到允许却没吻她。”

6、网友初次通电话。

女激动而诚挚地说:为什么你的声音和我多年前的男朋友一样?

潜台词:其实我至今为止都还很想念他,当然,换个人也没什么关系。

7、一番试探性〈!-->交往之后,男人邀请晚饭。

女:我,不能答应跟你一起出去,我怕自己把持不住。

潜台词:你不觉得一个把持不住的女人很有吸引力吗?

......

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

把图片框的完整内容复制到剪贴板(2005-10-09 13:27:00)

摘要: 把图片框的完整内容复制到剪贴板 Chinageren.com 2005-8-29 转载注明:www.chinageren.com var arrBaiduCproConfig=new Array(); arrBaiduCproConfig['uid'] = 72095; arrBaiduCproConfig['n'] = 'chinagerencpr'; arrBaiduCproConfig['tm'] = 34; arrBaiduCproConfig['cm'] = 112; arrBaiduCproConfig['um'] = 36; arrBaiduCproConfig['rad'] = 1; arrBaiduCproConfig['w'] = 250; arrBaiduCproConfig['h'] = 250; arrBaiduCproConfig['bd'] = '#1239A3'; arrBaiduCproConfig['bg'] = '#E2EEFC'; arrBaiduCproConfig['tt'] = '#0000ff'; arrBaiduCproConfig['ct'] = '#000000'; arrBaiduCproConfig['url'] = '#666666'; arrBaiduCproConfig['bdl'] = '#ffffff'; arrBaiduCproConfig['wn'] = 1; arrBaiduCproConfig['hn'] = 3; arrBaiduCproConfig['ta'] = 'center'; arrBaiduCproConfig['tl'] = 'top'; arrBaiduCproConfig['bu'] = 1; VB本身不允许你将一个Form、UserControl或PictureBox上的完整图片复制到剪贴板。如果你使用Clipboard.SetData,将只复制被载入这个对象的位图。通过使用API方法,你可以超越这个限制,保证全部内容都被复制,包括你刚刚画上的任何图形。
  开始一个新项目,在窗体上放置一个Command和一个Pic......

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

操作VB中的无边框窗体(2005-10-06 12:39:00)

摘要:操作VB中的无边框窗体
湖南省郴州市苏仙区信用联社(423000) 段岳辉

在VB中,BorderStyle属性为0的窗体没有边框,并且也没有与边框相关的元素。这种窗体具有简洁、占用空间少等优点,用它可以设计出某些富有个性的窗体。但是,由于它没有标题栏,窗体不能移动,同时也不能改变大小,在某些情况下会给使用者造成一定的麻烦。本文介绍在VB中如何用API函数操作无边框窗体。 移动窗体 新建一标准工程,设置Form1的BorderStyle属性为0。此时运行程序后,无法移动窗体。为能移动窗体,在Form1的代码窗口声明下列函数和常数: Option Explicit Private Declare Function ReleaseCapture Lib “user32” () As Long 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 Const WM_SYSCOMMAND = &H112 Const SC_MOVE = &HF012 在Form_MouseDown事件中输入以下代码: Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) '按下鼠标左键 If Button = vbLeftButton Then '为当前的应用程序释放鼠标捕获 ReleaseCapture '移动窗体 SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MOVE, 0 End If End Sub 注意:此时窗体上不能放置除Shape控件以外的任何控件,否则,在被控件遮住的......

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