Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->编程语言 ->ViualBasic ->正文

开发网络应用的5个技巧

来源:Linuxdby.com 作者:Webmaster 时间:2007-06-05 点击: [收藏] [投稿]
VisualBasic6.0(以下简称VB6)以其强大的功能为广大软件开发人员所喜爱,被用来开发各种应用程序。随着Internet的迅猛发展,VB6在网络方面的应用开发也越来越多。本文介绍笔者在实际编程开发中总结的5个技巧,希望能为进行网络开发的朋友们提供一点参考。
连通检测
许多应用程序常常需要在程序中直接进行联网操作,以便进行一些必要的处理(如在线注册和在线帮助等),这就要求我们在程序中建立某些连接。很多软件在不知用户是否联网的情况下就启动浏览器查找网址,结果只能查出一错误网页,既浪费用户时间又没有任何效果。如果应用程序在查找网页之前能自动判断用户是否已经联网,就会节约许多时间,提高程序运行效率。
下面是实现网络连通检测的VB6代码:
PrivateSubForm_Load()
IfIsConnected=TRUEThen
MsgBox(“您已经连通了Internet!”)
EndIf
IfIsConnected=FALSEThen
MsgBox(“您还没有连通Internet!”)
EndIf
EndSub
 
OptionExplicit
/*有关的API声明和定义*/
PublicDeclareFunctionRasEnumConnectionsLib“RasApi32.dll”Alias“RasEnumConnectionsA”(lpRasConAsAny,lpcbAsLong,lpcConnectionsAsLong)AsLong
 
PublicDeclareFunctionRasGetConnectStatusLib“RasApi32.dll”Alias“RasGetConnectStatusA”(ByValhRasConAsLong,lpStatusAsAny)AsLong
 
/*常数和变量的设定*/
PublicConstRAS95_MaxEntryName=256
PublicConstRAS95_MaxDeviceType=16
PublicConstRAS95_MaxDeviceName=32
PublicTypeRASCONN95
dwSizeAsLong
hRasConAsLong
szEntryName(RAS95_MaxEntryName)AsByte
szDeviceType(RAS95_MaxDeviceType)AsByte
szDeviceName(RAS95_MaxDeviceName)AsByte
EndType
PublicTypeRASCONNSTATUS95
dwSizeAsLong
RasConnStateAsLong
dwErrorAsLong
szDeviceType(RAS95_MaxDeviceType)AsByte
szDeviceName(RAS95_MaxDeviceName)AsByte
EndType
 
/*函数IsConnected返回连通的状态,如果为True则表示已连通*/
PublicFunctionIsConnected()AsBoolean
DimTRasCon(255)AsRASCONN95
DimlgAsLong
DimlpconAsLong
DimRetValAsLong
DimTstatusAsRASCONNSTATUS95
TRasCon(0).dwSize=412
lg=256*TRasCon(0).dwSize
RetVal=RasEnumConnections(TRasCon(0),lg,lpcon)
IfRetVal<>0Then
MsgBox“错误”
ExitFunction
EndIf
Tstatus.dwSize=160
RetVal=RasGetConnectStatus(TRasCon(0)
.hRasCon,Tstatus)
IfTstatus.RasConnState=&H2000Then
IsConnected=TRUE
Else
IsConnected=FALSE
EndIf
EndFunction
启动拨号网络中的连接
由于拨号网络不是一个可执行文件,所以要启动拨号网络,需要借助explorer.exe。但若是要启动拨号网络中的某一个连接,则要借助rundll.exe和rnaui.dll两个文件。启动方法如下(假定此连接名称为163):
Shell“rundllrnaui.dll,RnaDial163”,vbNormalFocus
上面假定了连接名称,但在实际编程中我们是不知道连接名称的。在窗体上放置一个命令按钮(cmdCallConnect),在其单击事件中进行连接处理。下面的代码介绍如何取得默认的连接名称并启动它:
OptionExplicit
/*有关的API声明*/
PrivateDeclareFunctionRegOpenKeyExLib“advapi32”Alias“RegOpenKeyExA”(ByValhKeyAsLong,ByVallpSubKeyAsString,ByValulOptionsAsLong,ByValsamDesiredAsLong,phkResultAsLong)AsLong
 
PrivateDeclareFunctionRegQueryValueExLib“advapi32”Alias“RegQueryValueExA”(ByValhKeyAsLong,ByVallpValueNameAsString,ByVallpReservedAsLong,ByReflpTypeAsLong,ByValszDataAsString,ByReflpcbDataAsLong)AsLong
 
PrivateDeclareFunctionRegCloseKeyLib“advapi32”(ByValhKeyAsLong)AsLong
 
/*常数的设定*/
ConstHKEY_CURRENT_USER=&H80000001
ConstERROR_SUCCESS=0
在命令按钮(cmdCallConnect)中加入如下代码:
PrivateSubcmdCallConnect_Click()
/*启动默认拨号连接*/
Shell“rundllrnaui.dll,RnaDial”+GetConnect,vbNormalFocus
EndSub
 
/*取得连接的函数(GetConnect)*/
PublicFunctionGetConnect()AsString
DimhKeyAsLong
DimSubKeyAsString
/*主键*/
hKey=HKEY_CURRENT_USER
/*子键*/
SubKey=“RemoteAccess”
/*取得默认连接名*/
GetConnect=GetRegValue(hKey,SubKey,“Default”)
EndFunction
/*取得注册的函数(GetRegValue)*/
PublicFunctionGetRegValue(hKeyAsLong,lpszSubKeyAsString,szKeyAsString)AsVariant
OnErrorGoToErrorRoutineErr:
DimphkResultAsLong
DimlResultAsLong
DimszBufferAsString
DimlBuffSizeAsLong
/*创建缓冲区*/
szBuffer=Space(255)
lBuffSize=Len(szBuffer)
/*打开注册键*/
RegOpenKeyExhKey,lpszSubKey,0,1,phkResult
/*取得查询结果*/
lResult=RegQueryValueEx(phkResult,szKey,0,0,szBuffer,lBuffSize)
/*关闭注册键*/
RegCloseKeyphkResult
/*返回结果*/
IflResult=ERROR_SUCCESSThen
GetRegValue=Left(szBuffer,lBuffSize-1)
Else
GetRegValue=“”
EndIf
ExitFunction
/*意外处理*/
ErrorRoutineErr:
GetRegValue=“”
EndFunction
设计E-mail的接收部分
在VB6菜单上点击“工程/部件...”,弹出“部件”对话框,在对话框的控件卡中选中MicrosoftMAPIControls6.0控件,点击“确定”按钮后,工具箱上增加了MAPIMessage和MAPISession两个图标。
在Form上加入一个MAPIMessage控件,取名为MAPIMessage1;再加入一个MAPISession控件,取名为MAPISession1;再加入三个TextBox控件,分别取名为Subject、Content和Indexno,将它们的Caption分别改为邮件标题、邮件内容和邮件索引号;在TextBox前各加入一个Label控件,将Caption分别改为标题、内容和索引号。
将MAPIMessage1的各项属性设置如下:
●DownLoadMail=TRUE;
●LogonUI=TRUE;
●NewSession=FALSE;
●UserName=“接收Email”。

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:用VisualBasic轻松地设计Browser及Ftp程序   下一篇:防止admin888被远程盗取的简易方法

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号