开发网络应用的5个技巧
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=“接收Email”。 上一篇:用VisualBasic轻松地设计Browser及Ftp程序 下一篇:防止admin888被远程盗取的简易方法 更多相关文章
|
推荐文章
精彩文章
·显示频道
|