时间: 2021-07-31 作者:daque
url
帐号
暗号
其它参数
sohu邮箱
http://login.sohu.com/chkpwd.php
username
password
网易风行证
http://reg4.163.com/checkuser.jsp
username
password
csdn风行证
http://www.csdn.net/member/logon.asp
login_name
password
cookietime=0&
x=42&y=10
表格中的参数即是依照前方引见的本领获得的,在步调中将要用到。
先证明一点, webbrowser也是不妨径直post数据给web效劳器的,我将在第四局部给出代码。这边先看看inet与webbrowser彼此共同的功效。
兴建一个工程,元件中勾选中“microsoft internet transfer controls 6.0”、“microsoft internet controls”,顺序增添inet1、webbrowser1、text1、text2、combo1在窗体上,不妨把webbrowser1符合拉大学一年级点,将各控件场所安置好(不妨参考运转后的图片),底下是代码:
dim url1(2) as string: dim url2(2) as string
dim c1(2) as string: dim c2(2) as string: dim c3(2) as string
private sub form_load()
text1.text = ""
text2.text = ""
text2.passwordchar = "*"
combo1.additem "sohu邮箱", 0
combo1.additem "网易风行证", 1
combo1.additem "csdn风行证", 2
combo1.additem "请采用一个登岸", 3
combo1.text = combo1.list(3)
url1(0) = "http://login.sohu.com/chkpwd.php": url2(0) = "http://www34.mail.sohu.com/control/entry"
url1(1) = "http://reg4.163.com/checkuser.jsp": url2(1) = "http://reg4.163.com/main.jsp?"
url1(2) = "http://www.csdn.net/member/logon.asp": url2(2) = "http://www.csdn.net/member/passport.asp"
c1(0) = "username": c2(0) = "password": c3(0) = ""
c1(1) = "username": c2(1) = "password": c3(1) = ""
c1(2) = "login_name": c2(2) = "password": c3(2) = "cookietime=0&x=42&y=10"
end sub
private sub form_resize()
if me.windowstate <> 1 then
webbrowser1.left = 10
webbrowser1.width = me.width - 120
webbrowser1.height = me.height - 800
end if
end sub
private sub text2_keyup(keycode as integer, shift as integer)
if keycode <> 13 then exit sub
if combo1.listindex = 3 then msgbox "请采用一个登岸": exit sub
if text1.text = "" then msgbox "请输出用户名": exit sub
if text2.text = "" then msgbox "请输出暗号": exit sub
dim strformdata as string
strformdata = c1(combo1.listindex) + "=" + text1.text + "&" + c2(combo1.listindex) + "=" + text2.text + "&" + c3(combo1.listindex)
inet1.execute url1(combo1.listindex), "post", strformdata, "content-type: application/x-www-form-urlencoded "
do until inet1.stillexecuting = false '这边阻碍前方的inet1,保证登岸胜利之后再取页面,你不妨将此do废除了试一次。
doevents
loop
if combo1.listindex = 1 then
webbrowser1.navigate url2(combo1.listindex) + c1(combo1.listindex) + "=" + text1.text
else
webbrowser1.navigate url2(combo1.listindex)
end if
end sub
大师不妨抉择一个本人仍旧备案过的站点看看功效。
不妨看到,登岸胜利之后, inet与webbrowser是不妨维持住同一个session对话的!然而当咱们在webbrowser中表露出来的页面上点击了一个贯穿之后,乞求却不许胜利(请读者群本人试一下,在登岸胜利的站点中大肆点击一个与用户关系的贯穿,弹出来的将是一个“你没有登岸”的页面)。干什么?
由于咱们此刻点击的贯穿仍旧运用ie(操纵体例默许的欣赏器)翻开的,而ie乞求页面包车型的士功夫运用的是效劳器新发送过来的session,这个新的session与你在webbrowser中运用的session也即是身份id不一律,起码效劳器是这么觉得的,它觉得是另一个没有登岸的用户。以是说session的效率范畴不是对所有存户机的,经过本质的代码不妨很好的领会这一点。(不妨运用这一点,运用代码在一台电脑上实行两个之上的用户同声登岸,以至还能对同一中心举行无缝谈话。)
以是接下来咱们要使页面连接停在webbrowser中表露。由于很明显,既是webbrowser与inet是不妨维持住同一个session对话的,那么webbrowser与webbrowser里面天然也是不妨的!
要增添的代码很大略——
private sub webbrowser1_newwindow2(ppdisp as object, cancel as boolean)
dim frm2 as new form2
frm2.webbrowser1.registerasbrowser = true
set ppdisp = frm2.webbrowser1.object
frm2.show
end sub
而后在工程中增添一个form2,上头再放一个webbrowser1,安排好场所,form2的代码窗口增添上以次代码:
private sub form_load()
webbrowser1.silent = true
end sub
private sub form_resize()
if me.windowstate <> 1 then
webbrowser1.left = 10
webbrowser1.width = me.width - 120
webbrowser1.height = me.height - 600
end if
end sub
private sub webbrowser1_newwindow2(ppdisp as object, cancel as boolean)’这边为了制止在form第11中学同样爆发的工作。
dim frm2 as new form2
frm2.webbrowser1.registerasbrowser = true
set ppdisp = frm2.webbrowser1.object
frm2.show
end sub
运用inet发送登岸乞求,webbrowser欣赏本质页面,简直是个很不错的构想,在登岸站点对立教少的情景下该当是没有什么题目的。然而这也会使工作变得越发搀杂。除去不许缺乏的post地方(url1)、帐号参数(c1)、暗号参数(c2)、其它参数(c3)除外,还必需要有供webbrowser乞求欣赏的页面地方参数(url2)。 固然不过多了一个参数,但却增添了很多烦恼(比方网易邮箱的乞求页面是按照用户的帐号名机动天生的,不恒定)。惟有运用webbrowser径直post数据本领制止第四个参数。