ページ 11

専用ブラウザ

Posted: 2011年2月12日(土) 11:00
by あま
ある掲示板サイトの専用ブラウザを作成しようとしています。
ブラウザの作成は初めてです。

ブラウザの機能は
①JavaScriptは非対応でいい
②CSSは反映させたい
③クッキーの保存はいらない
④Proxyは刺さなくてもいい
⑤専用ブラウザなのであるサイト限定のためブックマークはいらない
⑥同じく履歴の保存はいらない
⑥言語設定はいらない
とりあえず今考えてるのはこのくらいです。
デザイン的には左に投稿フォームをCreateWindowExで作成し
右には現在閲覧中のページを表示します。

ここでいくつか質問なのですが、

HTMLを反映?させる便利なAPIみたいなのはないのでしょうか?
最初にも書きましたが、ブラウザ作成は初めてで、想像では、
ソケットでGET送信して返ってきたレスポンスのHTMLタグを処理するのかな?と思っています。
そのあたりはどう処理するのでしょうか?

それから、掲示板ではUTF-8になります。
CreateWindowExで作成した投稿フォームからWM_COMMANDに送り
そこでソケットのPOST送信で投稿処理をするわけですが、
UTF-8の処理がよくわからないのでどこか参考になるようなページはないでしょうか?

最後に、今回の専用ブラウザの作成はそこの掲示板の管理人より許可を得ていますが、
次回、別の掲示板の専用ブラウザを作成するとなった場合、法的?には許可は必要なのでしょうか?
一応マナー的には許可は必須だと思うのですが、法的にはどうなのか知りたいです。

回答よろしくお願いします。

Re: 専用ブラウザ

Posted: 2011年2月12日(土) 11:53
by softya(ソフト屋)
公に公開されているものは別に許可は要らないと思いますが、マナー的には許可をとったほうが良いと思います。
あと、著作権の表示を消したりしたら問題ですが。

HTMLのレンダリングエンジンは結構難しいので、オープンソースでも大規模なプロジェクトです。
IEなどでも実はHTML規格の規約を完全に守れていなかったりしましすしね。
http://ja.wikipedia.org/wiki/HTML%E3%83 ... 8%E3%83%B3

テキストだけならシンプルなのもありますが、画像なども考えると既存のHTMLエンジンを流用したほうがお手軽です。

●IEのエンジンを使う。
http://ja.wikipedia.org/wiki/Trident
「IEコンポーネントの使い方 [VC++の使い方]」
http://www.nitoyon.com/vc/tips/ie_component.htm
探せばいっぱい出てきます。

●FireFoxのエンジンを使う。
http://ja.wikipedia.org/wiki/Gecko
「Gecko SDK - MDC Doc Center」
https://developer.mozilla.org/ja/Gecko_SDK

[追記]
HTMLレンダリングエンジン自身に興味が有るのなら自分で書いてみるのも面白いです(かなり時間がかかると思います)。
構文解析・字句解析などの勉強をしてください(ようするにインタプリタやコンパイラの前段処理の様なことが必要です)。

Re: 専用ブラウザ

Posted: 2011年2月12日(土) 12:04
by softya(ソフト屋)
UTF-8のコードのことを書き忘れました。
UTF-8とSJISを変換したいならコード変換が必要です。

LGPLで良いならlibiconv.dllがあります。
libiconvを直接リンクするとGPLになるんで全ソースコードを公開する義務が出てきます。
詳しくは調べてください。

「Libiconv」
http://www.kaoriya.net/

Re: 専用ブラウザ

Posted: 2011年2月12日(土) 21:54
by YuO
softya(ソフト屋) さんが書きました:UTF-8のコードのことを書き忘れました。
UTF-8とSJISを変換したいならコード変換が必要です。
CreateWindowExとあるので,Windows前提でよいと思います。
その上で,95系を切り捨てればUTF-16ベースでプログラムを組むことができます。
それであれば,UTF-16とUTF-8の変換はMultiByteToWideChar/WideCharToMultiByteでCodePageとしてCP_UTF8を指定するだけになります。
Shift_JISなどに変換してしまうと文字情報が欠落する可能性もありますし,A系APIを使うメリットはないと思います。

Re: 専用ブラウザ

Posted: 2011年2月13日(日) 23:55
by あま
softya(ソフト屋)さん

ブラウザの作成って大変なんですね・・・
>テキストだけならシンプルなのもありますが
テキストだけって言うのは例えば
<font color="red">テキスト</font>
こんなソースだったら「テキスト」を赤色で表示するということでしょうか?
画像などは使われていない(アップローダーもありません)ので、
今のところは文字の修飾だけでいいのですが。。。

Re: 専用ブラウザ

Posted: 2011年2月13日(日) 23:57
by あま
YuO さんが書きました:UTF-16とUTF-8の変換はMultiByteToWideChar/WideCharToMultiByteでCodePageとしてCP_UTF8を指定するだけになります。
ちょっと試しにコンソールで作ってみました。

コード:

#include <stdio.h>
#include <windows.h>
#include <winnls.h>

#pragma comment(lib,"kernel32.lib")

int main()
{
	char buf[1024];
	char enc_buf[1024];

	printf("入力されてた文字列をUTF-8形式にエンコードします。\n"
	       "文字列を入力してください。\n");
	scanf("%s",buf);

	MultiByteToWideChar(CP_UTF8,MB_PRECOMPOSED,(LPCSTR)buf,sizeof(buf),(LPWSTR)enc_buf,0);

	printf("%s",enc_buf);

	getch();
}
MSDNを見ながら作ったのですが、間違っていますか?
文字列を入力してもなにも表示されないまま終わってしまうのですが・・・

Re: 専用ブラウザ

Posted: 2011年2月14日(月) 00:10
by softya(ソフト屋)
あま さんが書きました:softya(ソフト屋)さん

ブラウザの作成って大変なんですね・・・
>テキストだけならシンプルなのもありますが
テキストだけって言うのは例えば
<font color="red">テキスト</font>
こんなソースだったら「テキスト」を赤色で表示するということでしょうか?
画像などは使われていない(アップローダーもありません)ので、
今のところは文字の修飾だけでいいのですが。。。
もっとシンプルでテキスト文だけ取り出してレイアウトする程度です。
文字サイズも使えないはず。

W3Mとか。W3Mで画像検索してもらうと分かると思います。
http://w3m.sourceforge.net/index.ja.html

【追記】
>MSDNを見ながら作ったのですが、間違っていますか?
>文字列を入力してもなにも表示されないまま終わってしまうのですが・・・

それだとSJISをUTF-8に変換しているのと、もしUTF-8に変換成功してもそのままprintfしても表示されませんよ。
文字コードに付いて調べられたほうが良いと思います。

Re: 専用ブラウザ

Posted: 2011年2月18日(金) 12:22
by あま
返信遅くなってしまって申し訳ないです>_<

文字コードの方は解決しました。
ブラウザの方はまだちょっとわからないのでこれからもっと勉強していきます。

ありがとうございました。