国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

開(kāi)發(fā)網(wǎng)絡(luò)應(yīng)用的5個(gè)技巧

2019-11-18 17:36:04
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
VisualBasic6.0(以下簡(jiǎn)稱(chēng)VB6)以其強(qiáng)大的功能為廣大軟件開(kāi)發(fā)人員所喜愛(ài),被用來(lái)開(kāi)發(fā)各種應(yīng)用程序。隨著Internet的迅猛發(fā)展,VB6在網(wǎng)絡(luò)方面的應(yīng)用開(kāi)發(fā)也越來(lái)越多。本文介紹筆者在實(shí)際編程開(kāi)發(fā)中總結(jié)的5個(gè)技巧,希望能為進(jìn)行網(wǎng)絡(luò)開(kāi)發(fā)的朋友們提供一點(diǎn)參考。
連通檢測(cè)
許多應(yīng)用程序常常需要在程序中直接進(jìn)行聯(lián)網(wǎng)操作,以便進(jìn)行一些必要的處理(如在線(xiàn)注冊(cè)和在線(xiàn)幫助等),這就要求我們?cè)诔绦蛑薪⒛承┻B接。很多軟件在不知用戶(hù)是否聯(lián)網(wǎng)的情況下就啟動(dòng)瀏覽器查找網(wǎng)址,結(jié)果只能查出一錯(cuò)誤網(wǎng)頁(yè),既浪費(fèi)用戶(hù)時(shí)間又沒(méi)有任何效果。如果應(yīng)用程序在查找網(wǎng)頁(yè)之前能自動(dòng)判斷用戶(hù)是否已經(jīng)聯(lián)網(wǎng),就會(huì)節(jié)約許多時(shí)間,提高程序運(yùn)行效率。
下面是實(shí)現(xiàn)網(wǎng)絡(luò)連通檢測(cè)的VB6代碼:
PRivateSubForm_Load()
IfIsConnected=TRUEThen
MsgBox(“您已經(jīng)連通了Internet!”)
EndIf
IfIsConnected=FALSEThen
MsgBox(“您還沒(méi)有連通Internet!”)
EndIf
EndSub
 
OptionExplicit
/*有關(guān)的API聲明和定義*/
PublicDeclareFunctionRasEnumConnectionsLib“RasApi32.dll”Alias“RasEnumConnectionsA”(lpRasConAsAny,lpcbAsLong,lpcConnectionsAsLong)AsLong
 
PublicDeclareFunctionRasGetConnectStatusLib“RasApi32.dll”Alias“RasGetConnectStatusA”(ByValhRasConAsLong,lpStatusAsAny)AsLong
 
/*常數(shù)和變量的設(shè)定*/
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
 
/*函數(shù)IsConnected返回連通的狀態(tài),如果為T(mén)rue則表示已連通*/
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“錯(cuò)誤”
ExitFunction
EndIf
Tstatus.dwSize=160
RetVal=RasGetConnectStatus(TRasCon(0)
.hRasCon,Tstatus)
IfTstatus.RasConnState=&H2000Then
IsConnected=TRUE
Else
IsConnected=FALSE
EndIf
EndFunction
啟動(dòng)撥號(hào)網(wǎng)絡(luò)中的連接
由于撥號(hào)網(wǎng)絡(luò)不是一個(gè)可執(zhí)行文件,所以要啟動(dòng)撥號(hào)網(wǎng)絡(luò),需要借助explorer.exe。但若是要啟動(dòng)撥號(hào)網(wǎng)絡(luò)中的某一個(gè)連接,則要借助rundll.exe和rnaui.dll兩個(gè)文件。啟動(dòng)方法如下(假定此連接名稱(chēng)為163):
Shell“rundllrnaui.dll,RnaDial163”,vbNormalFocus
上面假定了連接名稱(chēng),但在實(shí)際編程中我們是不知道連接名稱(chēng)的。在窗體上放置一個(gè)命令按鈕(cmdCallConnect),在其單擊事件中進(jìn)行連接處理。下面的代碼介紹如何取得默認(rèn)的連接名稱(chēng)并啟動(dòng)它:
OptionExplicit
/*有關(guān)的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
 
/*常數(shù)的設(shè)定*/
ConstHKEY_CURRENT_USER=&H80000001
ConstERROR_SUCCESS=0
在命令按鈕(cmdCallConnect)中加入如下代碼:
PrivateSubcmdCallConnect_Click()
/*啟動(dòng)默認(rèn)撥號(hào)連接*/
Shell“rundllrnaui.dll,RnaDial”+GetConnect,vbNormalFocus
EndSub
 
/*取得連接的函數(shù)(GetConnect)*/
PublicFunctionGetConnect()AsString
DimhKeyAsLong
DimSubKeyAsString
/*主鍵*/
hKey=HKEY_CURRENT_USER
/*子鍵*/
SubKey=“Remoteaccess
/*取得默認(rèn)連接名*/
GetConnect=GetRegValue(hKey,SubKey,“Default”)
EndFunction
/*取得注冊(cè)的函數(shù)(GetRegValue)*/
PublicFunctionGetRegValue(hKeyAsLong,lpszSubKeyAsString,szKeyAsString)AsVariant
OnErrorGoToErrorRoutineErr:
DimphkResultAsLong
DimlResultAsLong
DimszBufferAsString
DimlBuffSizeAsLong
/*?jiǎng)?chuàng)建緩沖區(qū)*/
szBuffer=Space(255)
lBuffSize=Len(szBuffer)
/*打開(kāi)注冊(cè)鍵*/
RegOpenKeyExhKey,lpszSubKey,0,1,phkResult
/*取得查詢(xún)結(jié)果*/
lResult=RegQueryValueEx(phkResult,szKey,0,0,szBuffer,lBuffSize)
/*關(guān)閉注冊(cè)鍵*/
RegCloseKeyphkResult
/*返回結(jié)果*/
IflResult=ERROR_SUCCESSThen
GetRegValue=Left(szBuffer,lBuffSize-1)
Else
GetRegValue=“”
EndIf
ExitFunction
/*意外處理*/
ErrorRoutineErr:
GetRegValue=“”
EndFunction
設(shè)計(jì)E-mail的接收部分
在VB6菜單上點(diǎn)擊“工程/部件...”,彈出“部件”對(duì)話(huà)框,在對(duì)話(huà)框的控件卡中選中MicrosoftMAPIControls6.0控件,點(diǎn)擊“確定”按鈕后,工具箱上增加了MAPIMessage和MAPIsession兩個(gè)圖標(biāo)。
在Form上加入一個(gè)MAPIMessage控件,取名為MAPIMessage1;再加入一個(gè)MAPISession控件,取名為MAPISession1;再加入三個(gè)TextBox控件,分別取名為Subject、Content和Indexno,將它們的Caption分別改為郵件標(biāo)題、郵件內(nèi)容和郵件索引號(hào);在TextBox前各加入一個(gè)Label控件,將Caption分別改為標(biāo)題、內(nèi)容和索引號(hào)。
將MAPIMessage1的各項(xiàng)屬性設(shè)置如下:
●DownLoadMail=TRUE;
●LogonUI=TRUE;
●NewSession=FALSE;
●UserName=“接收Email”。
在Form上加入一個(gè)按鈕(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命令用來(lái)將信件抓到系統(tǒng)存儲(chǔ)器的inbuffer中。我們將信件抓回來(lái)后,可以通過(guò)MsgCount屬性知道信件數(shù)量,接著可以用MsgIndex設(shè)置要看哪一封信件的內(nèi)容、標(biāo)題等。
設(shè)計(jì)E-mail的發(fā)送部分
1.參數(shù)設(shè)置
進(jìn)入Exchange系統(tǒng),選擇新增設(shè)置文件后屏幕上會(huì)顯示所需要的信息服務(wù),選擇InternetMail。
把設(shè)置文件的名稱(chēng)設(shè)為test。屏幕會(huì)顯示兩個(gè)選項(xiàng),您可以選擇以Modem方式或以Network方式連接。筆者所用的是Modem方式;假若您是使Internet專(zhuān)線(xiàn),就要選擇Network方式。
選擇Modem方式后,Exchange會(huì)要求我們輸入郵件服務(wù)器的ip地址。接著將TransformMessage的模式設(shè)置為Automatic,這樣當(dāng)我們連接到郵件服務(wù)器時(shí),新的信息會(huì)自動(dòng)下載到本地端。接下來(lái),將您所使用的Email地址、全名、口令和下載路徑等一一設(shè)置好。
2.程序設(shè)計(jì)
在Form上加入一個(gè)MAPIMessage控件,取名為MAPIMessage1;加入一個(gè)MAPISession控件,取名為MAPISession1;并加入三個(gè)TextBox控件,取名為Subject、Content和Addr。并在三個(gè)TextBox前各加入一個(gè)Label,將Caption分別改為標(biāo)題、內(nèi)容和地址。
將MAPIMessage1的各項(xiàng)屬性設(shè)置如下:
●DownLoadMail=TRUE;
●LogonUI=TRUE;
●NewSession=FALSE;
●UserName=“發(fā)送Email”。
這里將DownLoadMail設(shè)置為T(mén)RUE,當(dāng)程序和郵件服務(wù)器第一次連接時(shí),會(huì)將新的郵件下載到本地端。將LogonUI設(shè)置為T(mén)RUE,則當(dāng)您程序中Logon名稱(chēng)輸入錯(cuò)誤時(shí),系統(tǒng)會(huì)顯示一個(gè)MessageBox來(lái)讓您輸入正確的名稱(chēng)。
由于這個(gè)程序僅使用一個(gè)Session,所以可將NewSession設(shè)置成FALSE。如果您有許多Session要建立的話(huà),則將它設(shè)置成TRUE。UserName中所填的,是我們?cè)贓xchange中所新增的設(shè)置文件名稱(chēng),如果沒(méi)有填內(nèi)容的話(huà),系統(tǒng)將會(huì)顯示一些MessageBox請(qǐng)您輸入文件。
在Form上加入三個(gè)按鈕,Logon、Logoff和Send,并分別將它們的Caption改為登錄、離網(wǎng)和發(fā)送。
在Logon_Click()事件中加入以下程序代碼,程序的功能是使我們登錄到郵件服務(wù)器:
MAPISession1.SignOn
MAPIMessage1.SessionID=MAPISession1.SessionID
sgBox“YourIDis”+Str
(MAPISession1.SessionID)
其中MAPISession1.SignOn是作登錄的動(dòng)作。在登錄時(shí),因?yàn)橐呀?jīng)將MAPIMessage1控件的DownLoadMail屬性設(shè)置為T(mén)RUE,所以可以在屏幕上看到MessageBox,顯示系統(tǒng)正在下載郵件。登錄成功后,系統(tǒng)會(huì)傳回一個(gè)SessionID,將該ID填入MAPIMessage1的SessionID中,這樣就可以利用該Session來(lái)傳送Email,同時(shí)用MessageBox通知用戶(hù)發(fā)送成功。
在Logoff_Click()事件中加入以下程序代碼,程序的功能是使我們離開(kāi)郵件服務(wù)器:
MAPIS1.SignOff
在Send_Click()事件中加入以下程序代碼,程序的功能是使我們發(fā)送Email:
MAPIMessage1.Compose
MAPIMessage1.RecipDisplayName=Addr.text
MAPIMessage1.AddressResolveUI=TRUE
MAPIMessage1.MsgSubject=Subject.text
MAPIMessage1.MsgNoteText=Content.text
MAPIMessage1.Send
MsgBox“您發(fā)送成功啦!”
其中Compose命令的主要目的是使您可以改變RecipDisplayName的內(nèi)容,將所需傳送的Email地址、主題和文章內(nèi)容分別填入RecipDisplayName、MsgSubject和MsgNoteText,接著用Send命令發(fā)送出去。
訪(fǎng)問(wèn)Internet并調(diào)用Explorer
1.實(shí)現(xiàn)方法和控件介紹
  首先在VB6菜單上點(diǎn)擊“工程/部件...”,彈出“部件”對(duì)話(huà)框,在對(duì)話(huà)框的控件卡中選中MicrosoftInternetControls控件,點(diǎn)擊“確定”按鈕后工具箱上增加一個(gè)WebBrowser圖標(biāo),將它加到Form中。
該控件有以下幾個(gè)重要的方法和事件:
●GoHome:裝入IE設(shè)定的起始頁(yè);
●Navigate:裝入頁(yè)面,如Object.Navigateurl,其中url為URL地址,如http://www.microsoft.com;
●GoBack:返回上一個(gè)頁(yè)面;
●GoForward:進(jìn)入下一個(gè)頁(yè)面;
●Stop:停止載入頁(yè)面;
●BeforeNavigateEvent:在每次裝入頁(yè)面前調(diào)用該事件;
●StatusTextChangeEvent:每次瀏覽器的操作狀態(tài)改變時(shí)調(diào)用該事件。
2.具體的訪(fǎng)問(wèn)方法
將WebBrowser圖標(biāo)添加到Form中。并在Form上添加4個(gè)命令按鈕,Name屬性分別為:GoButton、BackButton、ForwardButton和StopButton,通過(guò)這4個(gè)命令按鈕可以實(shí)現(xiàn)對(duì)瀏覽器的操作。在Form上添加一個(gè)TextBox控件,用來(lái)輸入和顯示當(dāng)前的頁(yè)面地址。在Form上添加一個(gè)Label控件,用來(lái)顯示當(dāng)前瀏覽器操作狀態(tài)。
/*載入Form*/
PrivateSubForm_Load()
/*程序裝入后進(jìn)入IE設(shè)定的起始頁(yè)*/
WebBrowser1.GoHome
EndSub
 
/*改變Form尺寸*/
PrivateSubForm_Resize()
/*改變窗口大小后同時(shí)改變控件的大?。?
WebBrowser1.Width=Form1.ScaleWidth
WebBrowser1.Height=Form1.ScaleHeight-900
Label1.Width=Form1.ScaleWidth
Label1.Top=Form1.ScaleHeight-300
EndSub
 
PrivateSubBackButton_Click()
/*返回上一個(gè)頁(yè)面*/
WebBrowser1.GoBack
EndSub
 
PrivateSubForwardButton_Click()
/*進(jìn)入下一個(gè)頁(yè)面*/
WebBrowser1.GoForward
EndSub
 
PrivateSubGoButton_Click()
/*瀏覽輸入的頁(yè)面*/
WebBrowser1.Navigate(Text1.Text)
EndSub
 
PrivateSubStopButton_Click()
/*停止瀏覽*/
WebBrowser1.Stop
EndSub
 
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
/*輸入地址后進(jìn)行瀏覽*/
IfKeyAscii=13Then
WebBrowser1.Navigate(Text1.Text)
EndIf
EndSub
 
PrivateSubWebBrowser1_BeforeNavigate(ByValURLAsString,ByValFlagsAsLong,ByValTargetFrameNameAsString,PostDataAsVariant,ByValHeadersAsString,CancelAsBoolean)
/*將當(dāng)前顯示的頁(yè)面的URL地址顯示在Text1上*/Text1.Text=URL
EndSub
 
PrivateSubWebBrowser1_StatusTextChange(ByValTextAsString)
/*Label1顯示當(dāng)前頁(yè)面裝入情況*/
Label1.Caption=Text
EndSub->


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 丽江市| 灵山县| 胶南市| 莱州市| 亚东县| 儋州市| 灵璧县| 金阳县| 西平县| 井冈山市| 科技| 雅江县| 邯郸市| 东丰县| 长汀县| 兴山县| 日照市| 兰溪市| 海安县| 突泉县| 鲁甸县| 满城县| 淄博市| 奉节县| 绥中县| 岳普湖县| 抚松县| 宜都市| 台安县| 嘉兴市| 梓潼县| 卓资县| 台湾省| 怀仁县| 富裕县| 鄂尔多斯市| 鲜城| 福泉市| 莲花县| 扶沟县| 巩留县|