WebBrowserでフォーカスがある所のリンクURLを取得したい

解決


おかか  2006-04-26 22:15:24  No: 95205

VB6 IE6
タイトルがわかりづらくてすいません、
WebBrowserで開発をしているのですが対象のURLがhttpsなので
中身はいっさい見れません、マウスでClickさせようと思ってみたのですが
座標が特定できません、いろいろ考えていたら[TAB]で移動させて[Return]
キーを送れば良いのだなと気がつきました、[TAB]で移動した時にフォーカスが
あるフィールドにリンクがあるとIEの一番下にリンクされているURLが表示されています、もしくはマウスの右クリックでプロパティーを見ればここにも載っています。このURLを取得するにはどうしたらよいのでしょうか?
もしご存知でしたらご指導くださいよろしくお願いします。


魔界の仮面弁士  2006-04-27 05:06:08  No: 95206

各リンクを For Each〜 Next で列挙して、それぞれの href プロパティを探ってみましょう。


おかか  2006-04-27 06:48:09  No: 95207

>各リンクを For Each〜 Next で列挙して、それぞれの href プロパティを探っ
>てみましょう。
すいません、これってどういう意味ですか?
対象のホームページが"https:"のため中身が見れませんので
For Each ObjClick In WebBrowser.Document.links
などは使えません、ので仕方がなくホームページの上から[TAB]
をSendkeyで送って、その時、リンクがある時はIEの左下にリンクの
URLが表示しています、これを取得したいのです、
それとも私の無知でフォーカスがある所のプロパティをFor Each〜 Next
で取得できるのでしょうか?、もしそうでしたらもう少しやり方教えていただけませんか、よろしくお願いします。


VB梅  2006-04-27 08:28:07  No: 95208

https:だからといって取れないことは無いです。
現に大和証券のログイン画面より自動で株価も取得できています。
もちろん大和証券はHttpsです。

ページの内容を
もう少し詳しく、ご説明されてはいかがでしょうか?

ちなみに、ご質問の現在のフォーカスしているのリンクや名前の取得は、私にはわかりません。

過去記事にあるように、フレーム構造になっていて、フレームごとに
アドレスが違うとセキュリティーエラーになるようです。


おかか  2006-04-27 09:20:38  No: 95209

VB梅さんありがとうございます。
>https:だからといって取れないことは無いです。
確かにそうですね。

>フレーム構造になっていて、フレームごとに
>アドレスが違うとセキュリティーエラーになるようです。
今回の場合もフレーム構造になっています、トップのURLはhttp
ですが、フレームの中身はhttpsです、そこのSRCにURLが書いてあるので
ブラウザで直接ナビゲートしてみましたがトップに戻されてしまいます。
TXT=WebBrowser.Document.Frames("Main").Document.Body.InnerHtml
などと書いてもエラーになります、いろいろ試したのですが
どうしても中身がみれないのでコントロールする事はあきらめました。
次なる方法はマウスコントロールかSendKeyしかなくなり
マウスコントロールは座標が毎回若干ずれているので止めました、
[TAB]をSendKeyで送るのですが、送る回数がたまに違ってきます
のでフォーカスがあるコントロールのプロパティの中のURLを取得して
決定して[Return]を送りたいのです、ブラウザの左下には表示しているので
取得できそうでやり方が判らなく歯がゆい思いをしております。
もしご存知でしたら教えてください、よろしくお願いします。


犬ひろし  2006-04-27 18:19:39  No: 95210

>TXT=WebBrowser.Document.Frames("Main").Document.Body.InnerHtml

WebBrowser.Document.Frames(int).Document.Body.InnerHtml
int = 0 〜 全フレーム数-1(の範囲の整数)

もしくは・・

TXT=WebBrowser.Document.Main.Document.Body.InnerHtml

みたいになるのではなかったっけ?
あてずっぽうですが参考になれば・・


VB梅  2006-04-27 19:12:05  No: 95211

おかかさんへ
Private Sub WebBrowser_StatusTextChange(ByVal Text As String)
Text1.Text = Text
End Sub
で対応できないでしょうか?


おかか  2006-04-27 19:28:36  No: 95212

犬ひろしさんありがとうございます。
>WebBrowser.Document.Frames(int).Document.Body.InnerHtml
これも0〜3まで試してみました、0は取得可能でしたが関係ない
HTMLでした(画像が1つあるだけ)、なので中を見ることはあきらめております。
もしみれたとしてもたぶんHttpsはSSLで暗号化されているので解読不能だと思いますし、なので[TAB]でトライしております、昨日からさんざん探していたらVB.NET
ならなにかできそうなものを見つけたのですが、VB.Netから追加された機能みたいでよくわかりませんでした、VB6ではブラウザ上でフォーカスがあるフィールドのプロパティの取得は無理なのでしょうかね?


ガッ  2006-04-27 20:02:38  No: 95213

> もしみれたとしてもたぶんHttpsはSSLで暗号化されているので解読不能だと思いますし、
最初の方から気になって悶々としていたのですが、
WebBrowserコントロールって、下層レイヤまで直に扱わなければ使えないものでしたっけ…
('A`)そんなに複雑?


VB梅  2006-04-27 20:20:22  No: 95214

ガッさんへ
>WebBrowserコントロールって、下層レイヤまで直に扱わなければ使えないものでしたっけ…
複雑です、レイヤ→フレームですね、フレームを多様しているページ、
特に、フレームの中にフレームを使用しているなどの場合、解析が大変です。
大和証券のページがそうでしたから。
もし、ログインできる方は、確認してみるのも良いかもです。

おかかさんの希望される、TABでフォーカスがあたっているところの
アドレスを抽出する場合はイベントのStatusTextChangeで可能です。
ただし
>ブラウザ上でフォーカスがあるフィールドのプロパティの取得は無理なのでしょうかね?
とURLから、プロパティに変更されているので、プロパティーの取得はわかりかねます。

URLは先ほどのイベントで取得可能ですから、TABキーで目的のURLが表示されたら、Enterキーを送信することも可能かと思います。


ガッ  2006-04-27 20:28:31  No: 95215

> >WebBrowserコントロールって、下層レイヤまで直に扱わなければ使えないものでしたっけ…
> 複雑です、レイヤ→フレームですね、フレームを多様しているページ、
> 特に、フレームの中にフレームを使用しているなどの場合、解析が大変です
"ドキュメントオブジェクトまで上がってきたら別に下のプロトコルなんて関係ないんじゃないかなー"
って思ってたのに、おかかさんが何度も下のプロトコルを話題に上げていたのか分からなかったのです。

で、下のプロトコルを"下層レイヤ"ってよんでしまいますた(orz
もう一回寝てきます


おかか  2006-04-28 02:00:22  No: 95216

VB梅さんありがとうございます。
>Private Sub WebBrowser_StatusTextChange(ByVal Text As String)
>Text1.Text = Text
>End Sub
上記で何とかできました、完璧ではないのですがフォーカスがある
フィールドがだいたい判別できます、これで今まであきらめていた
ホームページにトライできます、ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加