• 締切済み

C++でWEBブラウザを作成する

Visual C++ Express 2010 でWEBブラウザを自作しようと思っているのですが、 ブラウザの要となるテキストバーを設置して、 そこにアドレスまたは日本語などの値を入力し、検索ボタンを押下して、 アドレスバーの下に設置したフォームに、 その検索結果を表示させるにはどうすればいいでしょうか? 宜しくお願いします。 まだ具体的な機能は付加していません(とりあえず必要と思うものを予め名前をつけている)が。。

みんなの回答

  • jjk65536
  • ベストアンサー率59% (66/111)
回答No.4

#2です。 Webbrowserコントロールでは、レンダリング結果がIEと完全に一致してしまいますが 許容範囲内でしょうか。 (Javascript無効設定などもIE側の設定に引っ張られたような……) もし自前ということであれば、オープンソースのエンジンをベースにすると コストダウンが図れると思います。 ・Webkit http://ja.wikipedia.org/wiki/WebKit ・Gecko http://ja.wikipedia.org/wiki/Gecko ・GNUstepWeb http://wiki.gnustep.org/index.php/GNUstepWeb (これはObjective-cなので、移植作業が必要) 他には、OSSベースのCUIブラウザとしてlynxやw3mなどがあります。 IEベースかOSSベースかは質問者様に決めていただくとして、やはり個人的には IEベースが簡単でオススメではあります。

s0217071
質問者

補足

そうなのですか。 IE側に引っ張られてしまうの許容範囲ではありません。 全てオリジナルで作成しようと思っていますので、JavaScript等の設定も可能にしたいと考えています。 またWebkitやGeckoをベースに思いましたが、いまいち使い方がわかりませんでした。(;_;) 宜しくお願いします。

  • kirinoma
  • ベストアンサー率53% (288/542)
回答No.3

とりあえず,URLを入力として,サーバー上のファイルにアクセスし, そのファイルが表すWebページの内容を(文字列で)取って来るには 以下の様な手順が必要になります. http://undersourcecode.blog62.fc2.com/blog-entry-3.html 後は,取ってきた文字列をHTMLとして解釈して,文字や絵を適切な位置に 配置する必要があります. 言うと簡単ですが,一から作るとなるとかなりの手間です. 個人的には,他の回答者の方が言われるように,既存のものを流用するのが 楽かと思います. たとえば,以下の様に. http://msdn.microsoft.com/ja-jp/library/3s8ys666(v=VS.80).aspx#Y0 以上,参考になりましたら幸いです.

s0217071
質問者

お礼

有り難うございます。 URLを参考にしまして、WEBページを表示させることができました。

s0217071
質問者

補足

表示できたと思ったのですが、ただ単にIEの情報を持ってきているだけでした。 右クリックしたときに、オリジナルのコンテキストメニューが表示されず、IEのコンテキストメニューが表示されます。 webbrowserコントロールにコンテキストメニューを追加して表示されるようにするにはどうしたらいいでしょうか。

  • jjk65536
  • ベストアンサー率59% (66/111)
回答No.2

いちからブラウザを作るとしたら、たぶん大変だと思いますよ。 ・TCPソケットを使ったHTMLのやりとりはある程度コーディングできているか ・HTTP周りは最低限(GETメソッドと200OKだけでも)コーディングできているか ・HTMLパーサはある程度設計したか、最低限実装したか ・レイアウトエンジンはおおまかにでも設計/実装してあるか ぱっと考えただけでも、Googleとかの検索結果を表示するまでに、このくらい (たぶんもっと)やらないといけないことがありそうです。 MFCのCHTMLViewとかでIEのCOMコンポーネントを貼りつけたほうがよほど簡単だとおもうのですが、 自作にこだわるだけの理由があるんでしょうか。

s0217071
質問者

お礼

他社にはないオリジナルのものを作成したいと思っています。 利用できるコードは、利用したいと思います。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

あなたのいう「検索結果」ってなにのことでしょうか? よくあるブラウザでは、そこには「HTML等を解析して整形して表示」されますが、それのことですか?それとも別のなにかですか? 大きな流れでは ・入力された文字列を解析する。 ・URLなら該当するリソースを入手できるように、サーバーにリクエストを送ったり、ファイルを取りにいったりする ・URLじゃなかったら、エラーにするか、それをキーにして検索サイトで検索するためのURLに変換する。以下は上と同様 ・受け取った内容を確認する。 ・htmlならタグを解釈して、文章としての形を整える ・各種メディアならそれを再生、表示できる状態にする ・表示 となるのではないか、と。 既存のライブラリを使えば、多少は楽にはなりますが、全部やるなら、いろんな知識が必要です。

s0217071
質問者

お礼

もちろん広く知られているブラウザのことです。 「HTMLを解析して、それを整形して表示する」ものです。 利用できるコードは、利用したいと思います。

関連するQ&A

  • C#を用いての簡易ブラウザ作成

    タイトル通りなのですが、Visual studio 2005 C#で簡単なブラウザ作成方法を知りたいのです。 ブラウザの機能としては、urlを入力しての移動、戻る、進むといったボタン配置を基本として、ホームに戻る機能、検索エンジン(Google)を呼び出す機能などもつけたいのです。 visual studio 2005のツールボックスでFormをつくり、そこにButtonや textBox WebBrowserなどのコントロールを貼り付け概観は作成できたのですが、そこにどのようなメソッドをどこに記述すればいいのかが分からないのです。 おそらくNavigate()やGoBack()やGoforward()などのメソッドを記述すればいいのだと思うのですが… いろいろとサイトを見たのですが自分には敷居が高いのかいまいちなのです。C#はほとんど初心者に近く困っています。 どなたか分かる方教えていただきたいのですが。

  • accessやExcelにウェブブラウザはないのでしょうか?

    accessやExcelにウェブブラウザはないのでしょうか? オフィス2003を使用しています。 フォーム上のコントロールでvbのようにウェブブラウザを設置したいのですが オフィスでは無理なのでしょうか?

  • 自作ブラウザを既定のブラウザにするには

    VB 2008 Express EditionでWebBrowserコントロールを使って、自作のWebブラウザを作りました。 自作ブラウザのフォーム内にテキストボックスを配置し、そこでURLを指定すれば、Webサイトを開く事は可能です。 しかし、例えばOutlookなどのメールにあるURLをクリックするとIEが起動してしまいます。そこでWindows OSの拡張子の関連付けで自作ブラウザを設定してしました。しかし、自作ブラウザが起動するだけで、メールにあるURLのサイトが開けません。 どうにかしてそのURLを取得しないといけないと思うのですが、やり方が分かりません。 ご存じの方、いらっしゃいますでしょうか?

  • ブラウザ閉じるボタンの押下後もセッションを破棄させてプログラムを終了させたい

    開発環境 Visual Studio 2008 Professional Edition Visual Basic 2008 .NET Framework 3.5 SP1 ASP.NETを利用してWebページを作成しています。 現在、Webページにログアウトボタンを配置し、そのボタンを押して ログインページへ遷移する前にセッションの破棄をさせています。 ブラウザ閉じる(×)ボタンの押下後もセッションを破棄させ、 その後、プログラムを終了させたいのですがどのようにすればいいのでしょうか? 尚、現在はブラウザ閉じる(×)ボタンの押下後、セッションの破棄がされずプログラムも終了しません。 よろしくお願いします。

  • このサイトのバグ発見

    任意のURLを画面TOPにある、「キーワードQ&Aを検索」に入力後、検索ボタンを押下すると、どうなるでしょう。 なんと、検索結果画面ではなく、TOP画面に移行してしまいます。しかも、ブラウザのアドレスバーを見ると、なんとなんと、入力したURLがこのサイトの末尾に付加されているではないですか????? サニタジがされていないのでは???? 例: 以下のURLを入力 ja.wikipedia.org/wiki/%E6%A1%83%E5%A4%AA%E9%83%8E TOP画面に戻り、http://okwave.jp/searchkeyword/ 以下に上記URLが付加したアドレスがブラウザのアドレスバーに表示されている。このサイトの会社の開発力なんて、たいしたことないね。 とんでもない会社だ。

  • VB.NETでWebブラウザのお気に入り機能を作成する

    今後の仕事で使用するとのことで、自主的にVB.NETをVisualStudio2005で学習中の者です。 ちなみにレベルは初心者で学習の日も浅いです。 現在、自分でプログラムを組んでみようと思い、Webブラウザを作成しています。 困っていることですが、一般的なブラウザに見られる「お気に入り」という機能をこれから自分で作成したブラウザに追加しようと思っているのですが、一体どうやって作成すればいいのかが全くわかりません(泣) そもそもこの機能がVB.NETでできるのかも私にはわかりません(^^; 現段階では、 (1)フォーム内の「お気に入り」ボタンを押すとフォームの左側にIEと同じようにお気に入りのホームページへのリンクが記してあるはずのPanelが表示される。(私の場合真っ白なPanelが表示されるだけで、 リンクラベルはまだ何も配置していません。) (2)フォーム内のMemuStrip内の「お気に入りに追加」というMemuItem(でいいのでしょうか?)と押すと、「現在表示しているページをお気に入りに追加しますか?」というメッセージと「OK」「キャンセル」ボタンがある別のフォームが現在のフォームの上に表示される。 ここまで作成して作業が止まっています。私が一番わからないのは「お気に入りに追加しますか?」というフォームが表示された後、「OK」ボタンを押下するとお気に入りのホームページへのリンクが記されるPanelにリンクラベルを追加したいのですが、どのようなやり方でやればいいのかということです。 非表示のリンクラベルをPanel上に予めたくさん作っておいて…という考えも浮かびましたが、それだと作成できるリンクの数が決まってしまいますし、第一面倒ですよね。 皆さんの知恵を貸していただきたいです。 参考のホームページ等があればそれも教えていただきたく思います。 よろしくお願いいたします。

  • ■VS2005によるモバイルWebフォームの作成について

    ■VS2005によるモバイルWebフォームの作成について [開発環境] Visual Studio2005 [開発言語] ASP.NET / VB2005 / .netFw3.5 [概要]  モバイルWebフォームで携帯サイト作成中 [質問内容] ・いつもお世話になります。m(__)m  現在モバイルサイトを作成中なのですが、  何点か解らない事があり、困っています。  ご存じの方いらっしゃいましたら、ご教授  願えませんでしょうか。 (1)モバイルWebフォーム上にセットした、「Link」コントロールを  押下した時、遷移先のページへ動的な値を渡したい。  (DBから取得中の情報)  単純に次のページに値を渡す方法も解りませんm(_ _)m  クリックイベントのようなものがあるのでしょうか? (2)モバイルWebフォーム上では、HTMLタグの「<hr>水平線」が使用  出来ないが、水平線のようなものをセットし、区切りを作りたい。  良い方法はありませんでしょうか? (3)携帯端末(Docomo,AU,SoftBank)で、下記の内容を実装して問題は無いでしょうか?  1.Session変数を使用して、遷移時に値を渡す。  2.Server.Transferでの画面遷移  3.Response.Redirectでの画面遷移 (4)コントロールの頭に文字を入れたい。  例:  検索文字列:[TextBox]  ↑↑↑↑↑↑  (モバイルWebフォームでは1行に1個のコントロール?) 以上4点ですが、どうぞ宜しくお願いします。

  • C# ボタンを押すとyahooのサイトへジャンプするには?

    C#(Visual Studio 2005)でフォームベースのアプリケーションを作成しています。 フォームにはボタンがあり、このボタンを押すとIEを立ち上げてyahooへジャンプする、というものをつくりたいのですが、方法がわかりません。 フォームにボタンをつける方法や、ボタン押下時の処理をかくためのメソッドを自動生成する方法はわかります。が、肝心の押下時の処理をどう書けばいいのかがわからないのです。 ヒントになりそうなこと、位のものでも良いので、どなたかお知恵を貸してください。

  • C# ブラウザをコントロール

    C#でブラウザをコントロールすることは可能でしょうか? Webサイト上にあるフォームに任意の値を入力させたいのですが。 また、任意の箇所でイベントを発生させることは可能でしょうか? クリックや、Enterキーを入力するなど。 具体的に言うと、自動的にログインしたいです。

  • Webセッション停止

    Webのブラウザ-サーバ間のセッションですが、ブラウザのストップボタンを 押下した場合、Webサーバは自身が行っている処理を停止してくれるので しょうか。それともブラウザのストップには関係なく、サーバで実行している 処理は継続されるのでしょうか。 例えば、ブラウザからDBへの検索リクエストを出し、サーバ上のプログラムが DB接続をし検索を行っている間に、ブラウザのストップボタンを押下すると、 サーバ側の検索処理はどのようになるでしょうか。検索は中断されるのですか。 それとも、そのまま実行されるのでしょうか。そのまま実行されるとすると、 クライアント側で、送信ボタンが何度も押された場合、サーバ側で無駄な プロセスが複数走るばかりか、必要な新規のリクエストも受け付けることが できなく思うのですが、この場合どのような対処を行う必要があるのでしょうか。 環境は、Oracle8、iPlanet WebServer、Servletを使用しています。

    • 締切済み
    • CGI

専門家に質問してみよう