お世話になっています。
FOWといいます。
早速質問なのですが
現在開いているWebページのアドレスを
フォーム上にあるコマンドボタンをクリックしたら
テキストボックスに表示させる
というプログラムを作成したいのですが
どのような処理、参照をさせればよろしいのでしょうか?
よろしくお願いいたします。
質問の内容が、VB6 の DHTML アプリケーション プロジェクトを意味するなら、
Private Function Button1_onclick() As Boolean
TextField1.Value = DHTMLPage.BaseWindow.Document.url
End Function
という感じで、テキストに URL を代入できるかと。
VB6 の IIS アプリケーション プロジェクトの場合は、クライアント スクリプトを埋め込んで
Private Sub WebItem1_MyCustomEvent()
Response.Write "<input type=text id=Text1 size=300>"
Response.Write "<input type=button value=URL"
Response.Write " onclick='Text1.value=document.location.href'>"
End Sub
などとした方が良いかと思いますが、もし、サーバサイドのコードで実装するのであれば、
Private Sub WebItem1_Respond()
Response.Write "<input value='"
Response.Write WebClass.Request.ServerVariables("SCRIPT_NAME")
Response.Write "' size=30>"
End Sub
という感じで。
WebBrowser コントロールや InternetExplorer オブジェクトの場合、
> フォーム上にあるコマンドボタンをクリックしたら
> テキストボックスに表示させる
というのが、「VB6 フォーム上のボタン/テキスト」という意味であれば、
Private Sub Command1_Click()
Text1.Text = browser.LocationURL
End Sub
という感じになりますし、「Web フォーム上のボタン/テキスト」という
意味であれば、ページにもよりますが、たとえばこうかな。
'MSHTML.TLB を参照設定
Option Explicit
Private WithEvents oForm As MSHTML.HTMLFormElement
Private WithEvents oText As MSHTML.HTMLInputElement
Private WithEvents oButton As MSHTML.HTMLInputButtonElement
Private Function oForm_onsubmit() As Boolean
oForm_onsubmit = False
oText.Value = WebBrowser1.LocationURL
End Function
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Set oForm = WebBrowser1.document.Forms(0)
Set oText = oForm("WORD")
oText.previousSibling.nodeValue = "サンプル"
oText.nextSibling.nodeValue = "に"
oText.Width = 300
Set oButton = oForm(1)
oButton.Value = "URL取得"
End Sub
Private Sub Form_Load()
WebBrowser1.Navigate2 "http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi"
End Sub
魔界の仮面弁士さんありがとうございます。
説明が足らず申し訳ありませんでした。
私がやりたかったことは
「VB6 フォーム上のボタン/テキスト」なので
Private Sub Command1_Click()
Text1.Text = browser.LocationURL
End Sub
これでした。
他のやり方も説明していただきありがとうございます。
さらに質問なのですが
browser.LocationURLの「browser」はオブジェクトですよね?
これの宣言は
Dim browser As Object
でよろしいのでしょうか?
>WebBrowser コントロールや InternetExplorer オブジェクトの場合、
編集 削除通ってみたさん
返信遅れましてすいません。
ご指摘ありがとうございました。
自分で調べてみたところ
WebBrowser コントロールや InternetExplorer オブジェクトは
VBでブラウザを作る時につかうものと解釈しましたがいかがでしょうか?
魔界の仮面弁士さん、説明がものすごく足りなくてもうしわけありませんでした。
えっと、やろうとしたことは
1、すでにInternetExplorer(ブラウザ)は立ち上がっていて
某サイトを表示している
2、作成したexeファイルを起動させる
3、VBフォーム上のボタンをクリックしたらフォーム上のテキストボックス にInternetExplorerで表示されているサイトのURLが表示される
という流れです。
この場合でもWebBrowser コントロールや InternetExplorer オブジェクト
を使用すればいいのでしょうか?
質問ばかりですいませんがよろしくお願いします。
Text1.Text = CreateObject("Shell.Application").Windows().Item().LocationURL
となります。
補足
>2、作成したexeファイルを起動させる
をエクスプローラからやると駄目です。
>1、すでにInternetExplorer(ブラウザ)は立ち上がっていて
のお気に入りやリンクなどから起動します。
これでどうかな。
Dim browser As Object
For Each browser In CreateObject("Shell.Application").Windows()
If TypeName(browser.document) Like "*HTMLDocument*" Then
Debug.Print browser.LocationURL
End If
Next
魔界の仮面弁士さん、
If TypeName(browser.document) Like "*HTMLDocument*" Then
と書いているのは
If TypeName(ie.Document)="HTMLDocument" Then
では、うまく行かないケースがあるということですね?
私はまだそういうケースに遭遇したことがないのですが、
どういうときにどうなるのでしょう?
スクリプトプログラマさん
魔界の仮面弁士さん
返信遅れて申し訳ありませんでした。
足りない頭で四苦八苦してたら余計に解らなくなってしまいました・・・。
参考書を読んで一応解った事が既に保存したURLならブラウザで表示が可能なんだなという程度だけでした。
で、えっとスクリプトプログラマさんの
Text1.Text = CreateObject("Shell.Application").Windows().Item().LocationURL
はexeファイルをお気に入りやリンクなどに置いて(保存?)そこから起動させるということですよね?
実行してもそのexeファイルまでの絶対パスがでてくるだけなのですが・・・。
魔界の仮面弁士さんが提供してくださったコードも
Dim browser As Object
For Each browser In CreateObject("Shell.Application").Windows()
If TypeName(browser.document) Like "*HTMLDocument*" Then
Debug.Print browser.LocationURL
End If
Next
Debug.Print browser.LocationURLにおいてなにも表示されない=このコードをちゃんと理解できていないのが現状です。
本来ならbrowser.LocationURLでURLが取得されているはずだと思うのですがどこのURLを取得するの???と常に頭の中で疑問符が出ています。
申し訳ありませんが、
Dim browser As Object
For Each browser In CreateObject("Shell.Application").Windows()
If TypeName(browser.document) Like "*HTMLDocument*" Then
Debug.Print browser.LocationURL
End If
Next
の動きを教えてもらえますでしょうか?
よろしくお願いします。