全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3544
推到 Plurk!
推到 Facebook!

webbroser如何同時打開二個需要帳號登入的網頁

答題得分者是:darnell



<!--SHOW LEGUAGE END-->































[/code]

這是表單的架構,檢視原始碼表單部份只看到這一段,但實際上在網頁是一直重覆上面那段語法 我猜是不是用script 一直重覆產生**裡的好像是變數喔

麻煩各位大大教學一下
polohero
一般會員


發表:9
回覆:14
積分:4
註冊:2008-11-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-11-19 18:35:19 IP:59.125.xxx.xxx 訂閱
各位先進,想請教一下 有無辦法在webbrowser1帳號登入後,在webrowser2開啟其他頁面

就像是在證券公司網路下單的網站一樣,是否可以作到同時看到股票資訊頁面還可以同時看到交易

明細頁面,還是有別的方法可以作到,謝謝

pcplayer99
尊榮會員


發表:146
回覆:790
積分:632
註冊:2003-01-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-20 12:40:50 IP:116.30.xxx.xxx 訂閱
应该是可以做到的。你自己摆两个 WebBrowser 上去看看嘛。
darnell
版主


發表:25
回覆:103
積分:145
註冊:2003-03-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-11-20 15:31:02 IP:60.250.xxx.xxx 訂閱
應該是可以的喔~主要要看登錄後認證的方式
如果是存在cookie那是一定可以,如果存在session好像也可以巴

你可以試著放2各webBrowser1,webBrowser2然後在其中
WebBrowser1的事件OnDocumentComplete加入
WebBrowser2.Navigate(Url);
那麼操作第一各webBrowser1時自動也會操作第二個webBrowser2
登入完成後再把WebBrowser1.OnDocumentComplete:=nil;
後續的操作就不會再導過去了就可以分開要去你自己想去的頁面了
polohero
一般會員


發表:9
回覆:14
積分:4
註冊:2008-11-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-11-20 20:55:01 IP:118.169.xxx.xxx 訂閱
謝謝二位大大  試過了可以,但是我要登入的網站 有frame架構,有作判斷不能單獨瀏灠某一頁還是有傳參數才能瀏 我在試試看

在請問一個問題,我有爬了有關取frame 裡資料的方法,但是frame裡又包一個frame

我就不知道怎麼取值了,而且網站表單內容產生都是用script產生的,
[code xml]

<!--SHOW LEGUAGE START-->
*LEG*
*DATE*
*TIME*
*RE*
*LEG* *GAMENUM* *TEAM_H*
*TEAM_C*
*RATIO_MH* *CON_RH* *RATIO_RH* *CON_OUH* *RATIO_OUH* *RATIO_EOO* *CON_HRH* *RATIO_HRH* *CON_HOUH* *RATIO_HOUH*
*RATIO_MC* *CON_RC* *RATIO_RC* *CON_OUC* *RATIO_OUC* *RATIO_EOE* *CON_HRC* *RATIO_HRC* *CON_HOUC* *RATIO_HOUC*
*RATIO_MN*
darnell
版主


發表:25
回覆:103
積分:145
註冊:2003-03-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-11-21 10:57:19 IP:220.128.xxx.xxx 訂閱
兩層frame的話可能需要一層一層進去
利用Webbrowser1.OleObject.Document.Frames.item(i).Document.URL取得要進去的frame位址
然後到達這個網址
到達目標frame倒屬第二層frame的時候再去抓內容
WebBrowser1.OleObject.Document.Frames.Item(i).Document.all.Item('control_id',0).Value
polohero
一般會員


發表:9
回覆:14
積分:4
註冊:2008-11-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-11-22 17:12:22 IP:118.169.xxx.xxx 訂閱
謝謝大大 有試出來了 

我爬文過觸發網頁上的不是都是xxxxxx.item().click

ABC

我用click好像都不會動也,onclick也是,還是要用別的屬性

<input> 的要怎麼用 是都不一樣嗎

謝謝
polohero
一般會員


發表:9
回覆:14
積分:4
註冊:2008-11-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-11-22 17:17:05 IP:118.169.xxx.xxx 訂閱
剛有些字被用斷了

我的意思是要網頁觸發 f o n t 標籤,
a 標籤
i n p u t 標籤, 裡的 o n c l i c k事件 or 超連結方法有不一樣嗎

謝謝
darnell
版主


發表:25
回覆:103
積分:145
註冊:2003-03-04

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-11-23 14:55:51 IP:59.115.xxx.xxx 訂閱
試著用以下方式抓取看看

WebBrowser1.OleObject.Document.all.Item(0).Document.Links.Item(i).Click;
i的位置要因為順序位置不同而變動所以要自己試看看

或者WebBrowser1.OleObject.Document.GetElementByID('submit').Click;
polohero
一般會員


發表:9
回覆:14
積分:4
註冊:2008-11-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-11-25 10:03:56 IP:59.125.xxx.xxx 訂閱
謝謝有試出來了 links好像是針對超連結樣子
第一次用webbrowser
我一直搞不太懂 WebBrowser1.OleObject.Document開頭
跟 WebBrowser1.Document 感覺之後的用法好像很像的樣子
polohero
一般會員


發表:9
回覆:14
積分:4
註冊:2008-11-11

發送簡訊給我
#10 引用回覆 回覆 發表時間:2008-11-25 10:28:47 IP:59.125.xxx.xxx 訂閱
不好意思前面有關一次開二個窗的問題
我想在請教一下,我想瀏灠的網頁架構第一層是由二個frame組成
分別是check和index,而check的長度設為0所以是隱藏
在index又分三個frame,a、b、c,也就是說a b c 這三個頁面才是網頁主要的畫面,問題來了我現在只想在第二個webbroser顯示c 當我登入後沒辦法指定a b c(有確實捉到c網址) 其中一個頁面的網址,大概是有確核哪頁不存在就無法顯示吧,我想可能是第一個frame的check,那我就想退而求其次 那我在第二個webbrowser顯示整頁好了(有包括 a b c ),可是網頁上的網址不管在哪一頁都是顯示一樣的網址,所以沒辦法讓我直接可以達到跳頁的功能
版主大大 這有救嗎
謝謝
darnell
版主


發表:25
回覆:103
積分:145
註冊:2003-03-04

發送簡訊給我
#11 引用回覆 回覆 發表時間:2008-11-25 12:38:28 IP:220.128.xxx.xxx 訂閱
基本上OleObject與Document只是透由不同方法存取網頁的內容而已
一般使用Ole的方式比較方便簡單但某些情況不適用
WebBrowser1.Document as IHTMLDocument2可以透由DOM物件結構來取得網頁完整結構
可以搜尋微軟的線上使用來參考

至於你說的相同網址不同頁無法直接到達則可能因為
相同網頁中依據不同情況顯示不同網頁,其實都是同一頁只是利用不同參數(ex.HideField,Session Param)來判斷而顯示不同
或者切不同frame載入frame依據不同情況載入不同網址,利用ajax技術等等很多的作法

所以基本上會無法直接連過去那也無彷,只要利用類似前面程式Links.Item(i).Click; 等操作方法
讓網頁自己導過去就行了不然的話就要想辦法分析網頁內容去繞過檢查了會比較麻煩~~

polohero
一般會員


發表:9
回覆:14
積分:4
註冊:2008-11-11

發送簡訊給我
#12 引用回覆 回覆 發表時間:2008-11-26 22:17:06 IP:118.169.xxx.xxx 訂閱
那版本主大大 我想到不知道delphi有沒有什麼web的元件可以用,
可以讓我在元件裡寫html,因為我已經會把資料讀出來了,也就是
把讀出來的tag放上去,讓人看起來像是在瀏覽畫面一樣,不知道有沒有
這種元件啊

謝謝
polohero
一般會員


發表:9
回覆:14
積分:4
註冊:2008-11-11

發送簡訊給我
#13 引用回覆 回覆 發表時間:2008-11-26 22:49:30 IP:118.102.xxx.xxx 訂閱
在請問一下 webbrowser當遇到會 彈出要點確定的那種視窗,
要怎樣可以自動把他給關掉

謝謝
darnell
版主


發表:25
回覆:103
積分:145
註冊:2003-03-04

發送簡訊給我
#14 引用回覆 回覆 發表時間:2008-12-01 11:01:47 IP:220.128.xxx.xxx 訂閱
如果是因為錯誤彈出的視窗
在最開始使用WebBrowser1.Silent:=True;
可以防止視窗的彈出
darnell
版主


發表:25
回覆:103
積分:145
註冊:2003-03-04

發送簡訊給我
#15 引用回覆 回覆 發表時間:2008-12-01 11:07:02 IP:220.128.xxx.xxx 訂閱
不太懂你的意思?
html碼只是單純的文字標記碼而已用Tmemo寫好後存檔成.html
就可以使用TWebBrowser讀出來了
WebBrowser1.Navigate('c:\xxx.html')

===================引 用 polohero 文 章===================
那版本主大大 我想到不知道delphi有沒有什麼web的元件可以用,
可以讓我在元件裡寫html,因為我已經會把資料讀出來了,也就是
把讀出來的tag放上去,讓人看起來像是在瀏覽畫面一樣,不知道有沒有
這種元件啊

謝謝
polohero
一般會員


發表:9
回覆:14
積分:4
註冊:2008-11-11

發送簡訊給我
#16 引用回覆 回覆 發表時間:2008-12-01 15:51:43 IP:59.125.xxx.xxx 訂閱
謝謝版大  關於html那個有找到跟你差不多的解法 可能是我想的太複雜了^^||

我說的那個不是script的錯誤,是那種訊息框而以,比如說登入後會彈出 你已登入的script的訊息框,如果不按確定沒辦法讓網頁繼續執行,我現在的作法是在登入二秒後模擬按下enter把那個視窗關掉但是假如網路有點慢訊息窗在二秒後才出來,那二秒時模擬的enter鍵就會出錯,還是有辦法可以強制webbrowser不執行script那也就不會跳出框來,知道這個script的名字有辦法讓這個script不執行嗎,因為其他的還要讓網頁執行

謝謝
darnell
版主


發表:25
回覆:103
積分:145
註冊:2003-03-04

發送簡訊給我
#17 引用回覆 回覆 發表時間:2008-12-01 17:39:52 IP:60.250.xxx.xxx 訂閱
這個問題比較麻煩,參考這裡
http://delphi.ktop.com.tw/board.php
可以解決~
polohero
一般會員


發表:9
回覆:14
積分:4
註冊:2008-11-11

發送簡訊給我
#18 引用回覆 回覆 發表時間:2008-12-04 09:15:07 IP:59.125.xxx.xxx 訂閱
版主大大 拍謝
那篇我有看了一下 那個事件觸發的事件是要寫在哪啊 timer嗎
謝謝
darnell
版主


發表:25
回覆:103
積分:145
註冊:2003-03-04

發送簡訊給我
#19 引用回覆 回覆 發表時間:2008-12-04 09:21:07 IP:60.250.xxx.xxx 訂閱
不是那是在本身類別的private區段加入一各procedure
那個procedure會自己接收WM_ACTIVATE類的訊息做處理
安全性資訊那些字自己替換成你想關閉的對話框上面的標題

[code delphi]
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TForm1 = class(TForm)
private
{ Private declarations }
procedure WMActivate(var Msg: TWMActivate); message WM_ACTIVATE;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }

procedure TForm1.WMActivate(var Msg: TWMActivate);
var
S: String;
wnd: HWND;
I: Integer;
begin
If Msg.Active=0 then
begin
wnd := Msg.ActiveWindow;
I := GetWindowTextLength(wnd);
SetLength(S, I 1);
GetWindowText(Wnd, PChar(S), I 1);
If Pos('安全性資訊', S)>0 then Sendmessage(wnd,WM_CLOSE,0,0);
end;
end;

end.

[/code]
polohero
一般會員


發表:9
回覆:14
積分:4
註冊:2008-11-11

發送簡訊給我
#20 引用回覆 回覆 發表時間:2008-12-06 14:07:53 IP:59.125.xxx.xxx 訂閱
太厲害了版主大大 真的消失了

在請問一下 webbrowser的焦點有辦法鎖定某個frame嗎,就是說我只是想看到網頁上的某一個區塊的東西其他的我不想讓人可以看到
還有一個就是,DocumentComplete在判斷是否讀完頁面,那就是說我一些重覆讀取網頁資料判斷等等的動作都要寫在這裡面,是不是有更好的處理的方法
darnell
版主


發表:25
回覆:103
積分:145
註冊:2003-03-04

發送簡訊給我
#21 引用回覆 回覆 發表時間:2008-12-11 12:20:11 IP:60.250.xxx.xxx 訂閱

基本上要只顯示部分其實就是要將下載的網頁做修改了,這裡提供你幾個方向~

  1. 將原始碼下載後存成文字檔將不顯示的部分去掉,再載入給User看(參考innerHTML關鍵字)
  2. 使用IHTMLDocument2進階的操作來寫入一些東西將其他frame或區塊隱藏或加以控制(這是比較細節的部份請參考微軟的使用說明了)
  3. 想辦法將載入網頁的捲頁等功能鎖定或遮住,在擺幾個Panel之類的控制項動寫程式態控制位置將不顯示地方遮住(偷吃步但也不失為解決問題的方法)

另一個問題可以使用如下語法會到下載完才繼續做下面動作

[code delphi]
//讀取前........執行讀取

while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;

//以下為讀取完要做的.....
[/code]
編輯記錄
darnell 重新編輯於 2008-12-11 12:25:08, 註解 無‧
polohero
一般會員


發表:9
回覆:14
積分:4
註冊:2008-11-11

發送簡訊給我
#22 引用回覆 回覆 發表時間:2008-12-19 00:27:47 IP:118.160.xxx.xxx 訂閱
謝謝版大這陣子細心的回答 大致上的問題都解決了 
感恩 感恩
系統時間:2024-04-23 14:31:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!