如何解決重新整理網頁時出現的詢問視窗?【已解決】

Home Home
引用 | 編輯 joker_chat
2009-10-14 18:25
樓主
推文 x0
各位先進好!
最近在寫個即時追蹤網頁資訊的小程式
..

訪客只能看到部份內容,免費 加入會員



獻花 x0
引用 | 編輯 三仙
2009-10-14 19:42
1樓
  
下面是引用 joker_chat 於 2009-10-14 18:25 發表的 如何解決重新整理網頁時出現的詢問視窗?: 到引言文
各位先進好!
最近在寫個即時追蹤網頁資訊的小程式
但重整網頁時總是會跳出如上圖的視窗
請問VB.net該如何抓到該視窗的控制權呢? 或者有更好的解決方案?
先謝謝各位了表情


雖然不太懂
你在講什麼
但是重整網頁時總是會跳出如上圖的視窗
這問題
你可以用 mata 試試看
<meta http-equiv="refresh" content="10" />

獻花 x0
引用 | 編輯 joker_chat
2009-10-14 20:21
2樓
  
 
下面是引用 三仙 於 2009-10-14 19:42 發表的: 到引言文


雖然不太懂
你在講什麼
但是重整網頁時總是會跳出如上圖的視窗
這問題
你可以用 mata 試試看
<meta http-equiv="refresh" content="10" />



不好意思..應該是我問題敘述得太籠統了
導致您誤會我的問題...表情  
我在寫的小程式是個windows form應用程式

要取得的像是股市行情這類持續在更新的資訊
我是以webbrowser去連結公布資訊的網頁,並取得網頁資料 (此網頁並不是自己架的,是類似奇摩股市之類公開的網頁)
在程式上以datagridview呈現給使用者看
利用timer來達成自動更新網頁資料
但就卡在網頁重新整理時,會跳出要求確認的視窗
導致不手動處理的話,就會卡在那裡無法繼續執行...

問題大致是這樣,還有描述不清楚的地方再麻煩您點一下
感謝您的回覆!!表情

獻花 x0
引用 | 編輯 三仙
2009-10-15 22:00
3樓
  
下面是引用 joker_chat 於 2009-10-14 20:21 發表的 : 到引言文 
  不好意思..應該是我問題敘述得太籠統了
導致您誤會我的問題...表情  
我在寫的小程式是個windows form應用程式

要取得的像是股市行情這類持續在更新的資訊
我是以webbrowser去連結公布資訊的網頁,並取得網頁資料 (此網頁並不是自己架的,是類似奇摩股市之類公開的網頁)
在程式上以datagridview呈現給使用者看
利用timer來達成自動更新網頁資料
但就卡在網頁重新整理時,會跳出要求確認的視窗
導致不手動處理的話,就會卡在那裡無法繼續執行... 


我記得像那種的網頁
都會設定時間 reload
pchome 的設定 60 s
yahoo 的沒用過

至於利用timer來達成自動更新網頁資料
等我 vs 2008 裝好後再來測

獻花 x0
引用 | 編輯 三仙
2009-10-15 23:35
4樓
  
剛剛測試 timer + webbrowser control
沒有上述狀況
你可能要看一下程式了

獻花 x1
引用 | 編輯 joker_chat
2009-10-16 00:08
5樓
  
  
下面是引用 三仙 於 2009-10-15 23:35 發表的 : 到引言文
剛剛測試 timer + webbrowser control
沒有上述狀況
你可能要看一下程式了


感謝您還費心裝了 VS 2008來幫忙測試 

可能我要重新整理的網頁有SSL保護,而且有傳送查詢參數,所以會要求確認吧?
下面是會出現同樣狀況的監理站查詢網頁,給您參考看看

www.mvdis.gov.tw/wps/portal/!ut/p/_s.7_0_A/7_0_AF/.cmd/ad/.ar/sa.com.cht.mvdis.portal.menu.core.ExecuteServiceAction/.c/6_1_18U/.ce/7_1_2R9/.p/5_1_2KS/.d/0?PC_7_1_2R9_ExecuteServiceClass=com.cht.mvdis.portal.gu.qtf.DefaultState&PC_7_1_2R9_ActionDescriptorName=com.cht.mvdis.portal.portlet.flow.FlowActionDescriptor&PC_7_1_2R9_ActionDescriptorString=com.cht.mvdis.portal.menu.core%23#7_1_2R9

目前是克難的用findwindow去處理彈出的視窗,但總覺得似乎不是很正確的做法就是啦...

獻花 x0
引用 | 編輯 overing
2009-10-16 01:40
6樓
  

圖 1.


我之前寫的來查學校宿舍流量的程式也是會
他是因為網頁的憑證過期了
會跳出跟使用者確認是否要繼續流覽的對話框
像附圖那樣
之前因為一直想不到解法
所以就在瀏覽網頁前先popup另一個提示
解是一下那個視窗出現的原因
順便告訴用者該按哪個

前幾天又把這個程式挖出來更新
花了點時間想到解法
大致上的做法是
WebBrowser 一去Navigate url之後
開一個計時器用API去列舉所有視窗(find windows的方向應該是對的)
然後找出那個彈出提示的視窗之後(我用title去比對)
對那個視窗送出按鍵event把他關閉(或按確定)

用到的API有
* FindWindow (依據給的條件列舉視窗的hWnd)
* SetForegroundWindow (將上面API找到的hWnd帶進這個API使其取得焦點)
* SendKeys (這VB6內建的函數 送出 "^y")
理論上這樣的做法有點不太妥
因為可能會有相同TITLE但是不是自己成是造成的視窗
或者Set Foreground不順利把Key send給別的視窗
不過實測之後發現其實還好
只有一瞬間而已 可以正常長達到要求
.Net 應該也可以比照辦理 參考看看表情

片段
複製程式
Private Sub timer_AutoCloseTip_Timer()
    Dim hw As Long
    hw = FindWindow(vbNullString, "安全性警訊")
    If hw > 0 Then
        SetForegroundWindow hw
        SendKeys "^y"
        timer_AutoCloseTip.Enabled = False
    End If
End Sub


獻花 x2
引用 | 編輯 joker_chat
2009-10-16 16:49
7樓
  
下面是引用 overing 於 2009-10-16 01:40 發表的 : 到引言文
用到的API有
* FindWindow (依據給的條件列舉視窗的hWnd)
* SetForegroundWindow (將上面API找到的hWnd帶進這個API使其取得焦點)
* SendKeys (這VB6內建的函數 送出 "^y")
理論上這樣的做法有點不太妥
因為可能會有相同TITLE但是不是自己成是造成的視窗
或者Set Foreground不順利把Key send給別的視窗
不過實測之後發現其實還好
只有一瞬間而已 可以正常長達到要求
.Net 應該也可以比照辦理 參考看看.......



目前解決方案也是這種組合
唯一缺點是雖然彈出視窗是會自己關掉...不過還是會在畫面上閃一下
不過這也沒辦法避免了吧

感謝overing和三仙 版主熱心回覆囉!

獻花 x0
引用 | 編輯 三仙
2009-10-17 00:24
8樓
  
下面是引用 joker_chat 於 2009-10-16 16:49 發表的 : 到引言文

目前解決方案也是這種組合
唯一缺點是雖然彈出視窗是會自己關掉...不過還是會在畫面上閃一下
不過這也沒辦法避免了吧

感謝overing和三仙 版主熱心回覆囉!


你真的是要感謝 overing 大表情 
 
不過畫面上閃一下
應該是正常的
因為你有 postback 動作
就算用程式取得 html tag
來做自動登入、轉頁
也都會這樣的

獻花 x0
引用 | 編輯 overing
2009-10-17 01:24
9樓
  
除非自己用socket來做自己的WebBrowser 表情

獻花 x0