専用ブラウザ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
あま
記事: 43
登録日時: 9年前

専用ブラウザ

#1

投稿記事 by あま » 9年前

ある掲示板サイトの専用ブラウザを作成しようとしています。
ブラウザの作成は初めてです。

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

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

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

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

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

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 専用ブラウザ

#2

投稿記事 by softya(ソフト屋) » 9年前

公に公開されているものは別に許可は要らないと思いますが、マナー的には許可をとったほうが良いと思います。
あと、著作権の表示を消したりしたら問題ですが。

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レンダリングエンジン自身に興味が有るのなら自分で書いてみるのも面白いです(かなり時間がかかると思います)。
構文解析・字句解析などの勉強をしてください(ようするにインタプリタやコンパイラの前段処理の様なことが必要です)。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 専用ブラウザ

#3

投稿記事 by softya(ソフト屋) » 9年前

UTF-8のコードのことを書き忘れました。
UTF-8とSJISを変換したいならコード変換が必要です。

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

「Libiconv」
http://www.kaoriya.net/
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

YuO
記事: 941
登録日時: 9年前
住所: 東京都世田谷区

Re: 専用ブラウザ

#4

投稿記事 by YuO » 9年前

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

あま
記事: 43
登録日時: 9年前

Re: 専用ブラウザ

#5

投稿記事 by あま » 9年前

softya(ソフト屋)さん

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

あま
記事: 43
登録日時: 9年前

Re: 専用ブラウザ

#6

投稿記事 by あま » 9年前

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を見ながら作ったのですが、間違っていますか?
文字列を入力してもなにも表示されないまま終わってしまうのですが・・・

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 専用ブラウザ

#7

投稿記事 by softya(ソフト屋) » 9年前

あま さんが書きました:softya(ソフト屋)さん

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

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

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

それだとSJISをUTF-8に変換しているのと、もしUTF-8に変換成功してもそのままprintfしても表示されませんよ。
文字コードに付いて調べられたほうが良いと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あま
記事: 43
登録日時: 9年前

Re: 専用ブラウザ

#8

投稿記事 by あま » 9年前

返信遅くなってしまって申し訳ないです>_<

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

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

閉鎖

“C言語何でも質問掲示板” へ戻る