扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
题主这个FunctionFindWindow(一堆参数)AsLong,返回值是个Long,而下面wd=FindWindow(),wd却是个Integer类型的,当然会溢出。楼上说都改成Long确实可以,不过题主的API声明是从VB里拷贝过来的吧?VB里的Long到.NET中就是Int32了,所以应该把上面FindWindow的返回类型由Long改为Int32(或者Integer)才是正解。
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了静乐免费建站欢迎大家使用!
现在的vb指的是vb.net,所有的类型都是.net framework提供的(而不是vb自己的),int是4字节(32位)整数,long是64位整数,double和single分别是64和32位的浮点数,string。。。就是字符串类型啊
.Net平台引入了很多先进的技术,导致了VB6和VB.Net之间产生了一个巨大的鸿沟
就语言功能上来讲,VB.net完全是为了.Net技术而生,具有更好的运行效率和更加强大的功能(某些方面甚至超过了C#)
从语法角度上来讲,VB.net成为了真正的OOP(面向对象语言),不但支持类的继承、派生,还支持委托、泛型等等更加高级的编程技术
如果你是从VB6升级到.net的话,建议要将VB.net当作一门新的语言来学。以VB6的经验来应用到VB.net上是会犯很多错误的
关于从VB6升级到VB.net的代码变换问题,注意以下几个重要的要点即可:
1.不再支持Load、Shell、.LoadPicture等语句
请用相关的.net语句替换
2.String类为引用类,也就是说
Dim s1,s2 as String
s1="FFFFFFF"
s2=s1
此时修改s2的值s1也会跟着相应变化
3.不再支持Variant型和Currency型变量
分别用Object和Demical类型代替
4.变量长度的变化:
VB6的byte、Integer、long型分别被vb.net的byte、short、integer代替,而long型则成为64位大小的整数。新增了UInteger、ULong、SByte等无符号整数类型
VB用winsock控件吧,网上例子太多了,你也可以看看书
用Winsock实现点对点通信
作者不详
Winsock控件是VB5.0的新增功能,它解决了以往应用VB编程时网络中应用程序之间无法实现点对点通信的难题。Winsock使用的TCP协议和UDP协议允许建立并保持一个到远程计算机上的连接,且可以在连接结束之前实时地进行数据交换。用户仅通过设置属性并借助事件处理就能够轻而易举地连接到一个远程的计 算机上,而且只用两个命令就可以实现数据交换。
使用TCP协议时,如果需要创建一个客户应用程序,就必须识别服务器的名称或IP地址。
应用程序的通信端口随时都将仔细监测对方发出的消息,这是系统进行可靠连接的保证。一旦连接发生,任何一方都可以通过SendData发送和接收数据,并借助GetData把自己的数据分离出来。传送数据时,需要先设定客户机的LocalPort属性,服务器则只需要把RemoteHost属性设定为客户机以太网的地址,并设定与客户机LocalPort属性相同的端口地址, 借助SendData方法开始发送消息。客户机则在GetData事件中通过DataArrival事件分离出发送的信息。
一个Winsock控件可以让本地计算机连接到远程的计算机上,同时使用UDP或TCP协议,两个协议都能创建客户机和服务器应用。
使用Winsock控件时,通信的双方需要选定相同的协议。TCP协议适用于传送大容量、需要安全性保证的数据文件;而UDP协议适用于需要分别与很多下属通信,或者建立的连接比较多且为时变的情况,特别是在数据量很小的时候。设定时可以使用Winsock1.Protocol =
sckTCPProtocol方法,首先要找到你的计算机的名称,并把它添入Winsock的LocalHost属性中。
创建一个应用程序时,首先要确定你建立的是客户方应用还是服务器服务,只有建立的服务器应用开始工作,并进入监听状态时,客户应用程序才开始建立连接,进入正常的通信状态。笔者建立了一个应用程序,它的功能是当客户方的鼠标移动时,服务器应用程序上能够实时显示该鼠标的位置。下面是建立服务器应用的方法:
1.创建一个新的标准EXE文件;
2.加入一个Winsock控件;
3.加入如下代码:
Private Sub Form Load()
tcpServer.LocalPort = 1001
tcpServer.Localhost = 〃servser〃
tcpServer.remotePort = 1002
tcpServer.Localhost = 〃klint〃
tcpServer.Listen
End Sub
′连接检查
Private Sub tcpServer ConnectionRequest
(ByVal requestID As Long)
If tcpServer.State sckClosed Then
tcpServer.Close
tcpServer.Accept requestID
End Sub
′发送数据
Private Sub frmserver monsemove(x,y)
tcpServer.SendData 〃x〃 str(x)
tcpServer.SendData 〃y〃 str(y)
End Sub
建立客户应用的方法为:
1.创建一个新的标准EXE文件;
2.加入一个Winsock控件;
3.加入两个TEXT框—— txt x和 txt y;
4.加入如下代码:
Private Sub Form Load()
tcpServer.LocalPort = 1002
tcpServer.Localhost = 〃klint〃
tcpServer.remotePort = 1001
tcpServer.Localhost = 〃servser〃
tcpServer.Listen
End Sub
′连接检查
Private Sub tcpklint ConnectionRequest
(ByVal requestID As Long)
If tcpklint.State sckClosed Then
tcpklint.Close
tcpklint.Accept requestID
End Sub
Private Sub tcpClient DataArrival
(ByVal bytesTotal As Long)
Dim strData As String
tcpklint.GetData strData
if left(strData,1)=〃X〃then
txt x.Text = strData
else
txt y.Text = strData
endif
End Sub
以上例程实现的是一个非常简单的点对点通信,在此基础上略加改造,可以形成功能复杂的实时计算机网络A-A交互通信系统,用于控制、图形仿真等。
使用UDP协议建立对等通信和通过TCP建立客户/服务器通信的方法略有不同,它不需要建立客户和服务器,而是建立对等通信。此过程通过以下几步实现:
1.设定Winsock的RemoteHost 属性为一个通信的计算机名称;
2.设定 RemotePort 为一个接口号;
3.调用Winsock的Bind 事件绑定本地的接口号。具体设定方法为:
Private Sub Form Load()
With Winsock1
.RemoteHost= 〃PeerB〃
.RemotePort = 1001 ′远程连接号
.Bind 1002
′绑定的本地号
End With
End Sub
程序的其它部分与TCP方法类似,即通过SendData 和GetData 方法发送或提取数据。UDP和TCP协 议在使用中各有特点,如果灵活使用,可以得到很好的效果。令人欣慰的是,VB5.0 中Winsock给我们提供了一种简便的数据传送方法,使我们得以轻松地实现网络点对点通信。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流