开发网络应用的5个技巧

已婚未成年艹

已婚未成年艹

2016-02-19 18:10

get新技能是需要付出行动的,即使看得再多也还是要动手试一试。今天图老师小编跟大家分享的是开发网络应用的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)
  IfRetVal0Then
  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”。
  在Form上加入一个按钮(Getmail),将其Caption改为取邮件。
  在Getmail_Click()事件中加入以下程序代码,程序的功能是使我们接收Email。
  MAPIMessage1.Fetch
  Form1.Caption=MAPIMessage1.MsgCount
  MAPIMessage1.MsgIndex=CINT(Indexno.text)
  Subject.Text=MAPIMessage1.MsgNoteText
  Content.Text=MAPIMessage1.MsgSubject
  其中Fetch命令用来将信件抓到系统存储器的inbuffer中。我们将信件抓回来后,可以通过MsgCount属性知道信件数量,接着可以用MsgIndex设置要看哪一封信件的内容、标题等。
  设计E-mail的发送部分
  1.参数设置
  进入Exchange系统,选择新增设置文件后屏幕上会显示所需要的信息服务,选择InternetMail。
  把设置文件的名称设为test。屏幕会显示两个选项,您可以选择以Modem方式或以Network方式连接。笔者所用的是Modem方式;假若您是使Internet专线,就要选择Network方式。
  选择Modem方式后,Exchange会要求我们输入邮件服务器的IP地址。接着将TransformMessage的模式设置为Automatic,这样当我们连接到邮件服务器时,新的信息会自动下载到本地端。接下来,将您所使用的Email地址、全名、口令和下载路径等一一设置好。
  2.程序设计
  在Form上加入一个MAPIMessage控件,取名为MAPIMessage1;加入一个MAPISession控件,取名为MAPISession1;并加入三个TextBox控件,取名为Subject、Content和Addr。并在三个TextBox前各加入一个Label,将Caption分别改为标题、内容和地址。
  将MAPIMessage1的各项属性设置如下:
  ●DownLoadMail=TRUE;
  ●LogonUI=TRUE;
  ●NewSession=FALSE;
  ●UserName=“发送Email”。
  这里将DownLoadMail设置为TRUE,当程序和邮件服务器第一次连接时,会将新的邮件下载到本地端。将LogonUI设置为TRUE,则当您程序中Logon名称输入错误时,系统会显示一个MessageBox来让您输入正确的名称。
  由于这个程序仅使用一个Session,所以可将NewSession设置成FALSE。如果您有许多Session要建立的话,则将它设置成TRUE。UserName中所填的,是我们在Exchange中所新增的设置文件名称,如果没有填内容的话,系统将会显示一些MessageBox请您输入文件。
  在Form上加入三个按钮,Logon、Logoff和Send,并分别将它们的Caption改为登录、离网和发送。
  在Logon_Click()事件中加入以下程序代码,程序的功能是使我们登录到邮件服务器:
  MAPISession1.SignOn
  MAPIMessage1.SessionID=MAPISession1.SessionID
  sgBox“YourIDis”+Str
  (MAPISession1.SessionID)
  其中MAPISession1.SignOn是作登录的动作。在登录时,因为已经将MAPIMessage1控件的DownLoadMail属性设置为TRUE,所以可以在屏幕上看到MessageBox,显示系统正在下载邮件。登录成功后,系统会传回一个SessionID,将该ID填入MAPIMessage1的SessionID中,这样就可以利用该Session来传送Email,同时用MessageBox通知用户发送成功。
  在Logoff_Click()事件中加入以下程序代码,程序的功能是使我们离开邮件服务器:
  MAPIS1.SignOff
  在Send_Click()事件中加入以下程序代码,程序的功能是使我们发送Email:
  MAPIMessage1.Compose
  MAPIMessage1.RecipDisplayName=Addr.text
  MAPIMessage1.AddressResolveUI=TRUE
  MAPIMessage1.MsgSubject=Subject.text
  MAPIMessage1.MsgNoteText=Content.text
  MAPIMessage1.Send
  MsgBox“您发送成功啦!”
  其中Compose命令的主要目的是使您可以改变RecipDisplayName的内容,将所需传送的Email地址、主题和文章内容分别填入RecipDisplayName、MsgSubject和MsgNoteText,接着用Send命令发送出去。
  访问Internet并调用Explorer
  1.实现方法和控件介绍
  首先在VB6菜单上点击“工程/部件...”,弹出“部件”对话框,在对话框的控件卡中选中MicrosoftInternetControls控件,点击“确定”按钮后工具箱上增加一个WebBrowser图标,将它加到Form中。
  该控件有以下几个重要的方法和事件:
  ●GoHome:装入IE设定的起始页;
  ●Navigate:装入页面,如Object.Navigateurl,其中url为URL地址,如http://www.microsoft.com;
  ●GoBack:返回上一个页面;
  ●GoForward:进入下一个页面;
  ●Stop:停止载入页面;
  ●BeforeNavigateEvent:在每次装入页面前调用该事件;
  ●StatusTextChangeEvent:每次浏览器的操作状态改变时调用该事件。
  2.具体的访问方法
  将WebBrowser图标添加到Form中。并在Form上添加4个命令按钮,Name属性分别为:GoButton、BackButton、ForwardButton和StopButton,通过这4个命令按钮可以实现对浏览器的操作。在Form上添加一个TextBox控件,用来输入和显示当前的页面地址。在Form上添加一个Label控件,用来显示当前浏览器操作状态。
  /*载入Form*/
  PrivateSubForm_Load()
  /*程序装入后进入IE设定的起始页*/
  WebBrowser1.GoHome
  EndSub
   
  /*改变Form尺寸*/
  PrivateSubForm_Resize()
  /*改变窗口大小后同时改变控件的大小*/
  WebBrowser1.Width=Form1.ScaleWidth
  WebBrowser1.Height=Form1.ScaleHeight-900
  Label1.Width=Form1.ScaleWidth
  Label1.Top=Form1.ScaleHeight-300
  EndSub
   
  PrivateSubBackButton_Click()
  /*返回上一个页面*/
  WebBrowser1.GoBack
  EndSub
   
  PrivateSubForwardButton_Click()
  /*进入下一个页面*/
  WebBrowser1.GoForward
  EndSub
   
  PrivateSubGoButton_Click()
  /*浏览输入的页面*/
  WebBrowser1.Navigate(Text1.Text)
  EndSub
   
  PrivateSubStopButton_Click()
  /*停止浏览*/
  WebBrowser1.Stop
  EndSub
   
  PrivateSubText1_KeyPress(KeyAsciiAsInteger)
  /*输入地址后进行浏览*/
  IfKeyAscii=13Then
  WebBrowser1.Navigate(Text1.Text)
  EndIf
  EndSub
   
  PrivateSubWebBrowser1_BeforeNavigate(ByValURLAsString,ByValFlagsAsLong,ByValTargetFrameNameAsString,PostDataAsVariant,ByValHeadersAsString,CancelAsBoolean)
  /*将当前显示的页面的URL地址显示在Text1上*/Text1.Text=URL
  EndSub
   
  PrivateSubWebBrowser1_StatusTextChange(ByValTextAsString)
  /*Label1显示当前页面装入情况*/
  Label1.Caption=Text
  EndSub->

展开更多 50%)
分享

猜你喜欢

开发网络应用的5个技巧

编程语言 网络编程
开发网络应用的5个技巧

利用Delphi开发网络数据库应用

编程语言 网络编程
利用Delphi开发网络数据库应用

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用C#开发网络防火墙技术分析

编程语言 网络编程
用C#开发网络防火墙技术分析

windowsXP网络应用技巧集锦

windows 操作系统
windowsXP网络应用技巧集锦

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

使用ActiveX控件开发网页常见的问题

ASP
使用ActiveX控件开发网页常见的问题

windows XP网络应用技巧集锦

windows 操作系统
windows XP网络应用技巧集锦

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

用VisualBasic窗体背景花纹的实现

用VisualBasic窗体背景花纹的实现

用VB编写网络寻呼机

用VB编写网络寻呼机
下拉加载更多内容 ↓