Webブラウザを作っています。
履歴作成で詰まっています。
履歴の作成の仕方の回答をお願いします。
環境 XP
使用言語 VB.NET2003
>履歴の作成の仕方の回答をお願いします。
プログラミングではなく設計次第では?
ファイルに書きだしてもいいし、レジストリに登録しても良いし
どうやって実装したいの?
単純なところでは、NavigateComplete2 など、ページ遷移のイベントにて、
URL を記録しておくとか。
GoBackメソッド等で処理される[戻る][進む]ボタンのことであれば、
使用可/不可の変動を、CommandStateChange イベントで受け取れます。
[戻る][進む]の訪問履歴ということなら、このあたりとか。
http://homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserTravelLogSample.htm
http://d.hatena.ne.jp/santamarta/
IEと同じで進んだ先の履歴が残ればよいのですができません。
> IEと同じで進んだ先の履歴が残ればよいのですができません。
と言われましても、それだけではアドバイスのしようがありません。(^^;
どの部分で躓いているのかを、具体的に質問してみてください。
リストボックスに表示したいのですができません。
そして、閉じると履歴を削除したいのです。
質問はこの二つです。
『リストボックスに表示したい』『履歴を削除したい』といった、
そちらの「仕様(やりたいこと)」はわかりました。
そして、それらをまだ実現できていないという、そちらの状況もわかります。
ですが、「何に困っているのか」については、さっぱり書かれていないので、
やはり回答に困ってしまいます。(そもそも、質問文に主語がありませんし…)
より「具体的に」質問していただければ、こちらも具体的なアドバイスができるかと思います。
・ヘルプ等の意味が理解できなかったのであれば、どのページのどの部分を
理解できなかったのかを書いてみてください。
・自分なりにコードを書いてみて、それが期待動作しなかったのであれば、
どのような結果を期待して、それがどうなってしまうのかを、
現象を再現可能な最低限のコードと共に投稿してみてください。
・どこから手をつければ良いのか分からない状況なら、逆に、どこまでは
理解できているのかを、分かる範囲で記述してみてください。
(とは言っても、掲示板で 1 から 10 まで教えるのは無理ですが……)
> リストボックスに表示したいのですができません。
1. 履歴の何を表示したいのでしょうか?
URL だけなら、先に提示した方法で取得できますよね。
2. 先の回答の意味がわからなかったのだとしたら、その中のどの部分が
不明瞭だったのかを、具体的に追加質問してください。
3. 先の回答では目的を果たせないのだとしたら、どのような機能を
求めているのかを、具体的に教えてください。
4. それとも、ListBox の操作方法がわからない、という事でしょうか?
項目を追加するには、「ListBox1.Items.Add(〜〜)」が使えます。
> 閉じると履歴を削除したいのです。
1. 何を閉じたときでしょうか。フォームですか?
フォームだとしたら、VB.NET 2003 では「Closing イベント」に
削除の処理を書くと良いでしょう。
2. 削除できないのは、ListBox の操作方法がわからないからなのでしょうか?
もしそうなら、.Items.Add() で登録した内容を、.Items.RemoveAt() で削除できます。
3. 削除したい履歴とは、ListBox に表示した、自己管理の履歴の事でしょうか。
それとも、InternetExplorer が持つ、標準の履歴ですか?
後者だとしたら、少々厄介です。先に紹介した URL を参照してください。
どこから手をつけていいのか分かりません。
訪問履歴についてのものを見ても良く分かりませんでした。
それから、リストボックスにはサイト名で閉じるのはフォームです。
どうもすいません。
まずは、WebBrowserコントロール(AxWebBrowser)を使うのか、それとも、
ブラウザ機能を 0 から自分で作るのかを決定する必要があるのですが、
現在の状況で自作は無理でしょうから、WebBrowser を利用するのが良いでしょうね。
> 良く分かりませんでした。
それは裏を返せば、『少しは分かる部分もあった』という事になるでしょうから、
>> どこまでは理解できているのかを、分かる範囲で記述してみてください。
というお願いを繰り返しておきますね。
このまま、単に「分かりません」という言葉が繰りかえされるだけですと、たとえば
履歴以外の機能については、問題なく実装できるレベルなのか……とか、
「イベント」「メソッド」などの開発に必要な用語の意味は理解できるレベルなのか…
といった、shinさんの技術レベルが読み取れないので、当方としても回答しずらいのです。
仕方ないので、先の 13:54:20 時点の投稿では、各パターンに対して、各種の回答を
示しているわけですが、それらの一つ一つを理解できているかどうかの返答や、
質問内容に対する逆質問すら無かったので、こちらも、何を答えれば良いのか…。
で。もしも「良く分かりませんでした。」というのが「全くわかりませんでした。」の
意味だとしたら、先にも書きましたように、1 から 10 まで「すべて」を教えるのは、
掲示板では事実上不可能なので、申し訳ないですが、書籍等を用いるなり、付属のサンプルや
チュートリアルなどを見るなどして、最低限の基礎知識を付けておいて貰わないと、
アドバイスのしようがありません…。m(_ _)m
# ただし、勉強中に分からない点が出た場合は、その内容を「具体的に」示してもらえれば、
# それに対する回答をつける事ができるかと思います。
> それから、リストボックスにはサイト名で閉じるのはフォームです。
「サイト名」というのが、IE のタイトルバーに表示される内容の事だとすれば、
WebBrowser の TitleChange イベントの引数を利用されると良いでしょう。
(Document プロパティから、HTML のタイトル情報を得る方法もあります)
次に「フォームを閉じる」という点ですが、これは、ブラウザコントロールを
貼ってあるフォームと、ListBox を貼ってあるフォームが別物という事でしょうか?
ListBox を貼っているフォームと ブラウザを貼っているフォームとが別物なら、
どちらのフォームであるにしても、先に回答しましたように、Form の Closing を使えば、
フォームを閉じたタイミングで、処理を行う事ができます。
>> フォームだとしたら、VB.NET 2003 では「Closing イベント」
あるいは、ListBox とブラウザの両方が同じフォーム上にあるのだとすれば、
フォーム自体を閉じてしまえば、そこに貼ってあった ListBox の情報も
一緒に消えてしまうでしょうから、履歴を削除する必要自体が無さそうです。
> どこから手をつけていいのか分かりません。
そういうときは、やるべき事を箇条書きにしてみると良いですよ。
手始めに、≪履歴を ListBox に表示する≫ための手順としては…。
0. まず、WebBrowser というものを、どうすれば利用できるのかを調べます。
(フォームへの貼るまでの手順、そこに Webサイトを表示する方法など)
1. そのコントロールに、私が先に回答した「NavigateComplete2」という
「ページ遷移のイベント」があるかどうかを確認し、それがどういう時に発生し、
そのイベント引数に、どのような情報が渡されるのかを調査します。
2. その NavigateComplete2 イベントを使って、表示した URL を取得します。
(可能であれば、「サイト名」も得たいでしょうけれども、それはとりあえず後回し)
3. 取得した URL を、ListBox の末尾に追加します。
さて、上記までの手順を踏むにあたって、何か躓いている点はありますか?
ツイート | ![]() |