开发网络应用的5个技巧

2016-02-19 18:10 6 1 收藏

get新技能是需要付出行动的,即使看得再多也还是要动手试一试。今天图老师小编跟大家分享的是开发网络应用的5个技巧,一起来学习了解下吧!

【 tulaoshi.com - 编程语言 】

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->

来源:http://www.tulaoshi.com/n/20160219/1616962.html

延伸阅读
标签: windows 操作系统
  Windows XP虽然功能强大,但是也存在着一些不尽人意的地方,比如经常出现的网络故障,这些问题实际上我们只要掌握一些Windows XP的应用方法和技巧,它就会服服帖帖的为您服务。 1、五步轻松解决Windows XP互访问题 曾经遇到很多用户抱怨,在局域网内安装了Windows XP的电脑不能与安装了Windows 98的电脑互相访问,安装...
标签: Web开发
步 骤 1、永远不要相信用户输入的内容具有适当的大小或者包含适当的字符。在使用其做出决策之前应该始终对用户输入进行验证。最佳的选择是创建一个 COM+ 组件,这样您可以从 ASP 页面中调用该组件来验证用户的输入内容。您也可以使用 Server.HTMLEncode 方法、Server.URLEncode 方法,或者本页底部代码示例中的某一个。 2、不要...
标签: 爱情观 孕前
孕育健康宝贝的8支前奏曲 每一对父母都希望生一个健康聪明的宝贝,那么在怀孕前3个月乃至6个月,就应做“奏”响孕育生命的前奏曲,这样才能帮助自己如愿以偿。 1.多吃提高精子和卵子活力的食物 精子和卵子处于高活力状态,有利于形成优质的受精卵,孕育出健康聪慧的孩子。研究表明,在准备怀孕前3个月至半年,多吃一些富锌食物、动物内脏...
优秀的编码和优秀的设计之间是相辅相成的。不幸的是,视觉设计能力偏弱的人通常会觉得自己缺乏天赋,换句话说,就是人们要么觉得自己具有出众的美学天赋,要么就是这方面的白痴。对这个说法,我可不敢苟同。 你只要稍微思考一下就会发现:如果你5岁的时候就停止写作,那么你对写作可能就是一团糟,对于艺术设计,道理是一样的。大多数人都是在...
《网络吸管》开发手记 网络确实是个好东西,文章呀,图片呀什么的都很吸引人。每次上网都能满载而归,但是这些资料的收集过程却很麻烦。对于好文章,每次都要复制、粘贴地在记事本和IE之间切换多次才能保存下来,而且说不定什么时候遇到那种怎么复制也复制不下来的防复制网页;对于图片也要点右键,选择“图片另存为”,再点确定才可以...

经验教程

212

收藏

78
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部