トップページ⇒tech
922コメント290KB

IEコンポーネントを使い倒すスレ

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001IUnknownNGNG
=====================================

IEコンポーネントを利用したブラウザのプログラミングに関する情報の交換及び再
利用を目的とした総合情報スレッドです。

=====================================


最近IEコンポーネントを利用してブラウザを作るプログラマが増えてきました。こ
れから自作してみようという人も多いでしょう。コンポーネントを貼り付けるだけ
なら誰でも出来ますが複雑な制御を行うにはそれなりの経験や知識が要るようです。
私自身が知りたいのも山々ですが、似たような質問が分散するのを避けるためにも
統一しましょう。ブラウザ作者、COM に精通した方大歓迎です。もちろん公開した
くない "禁断のテク" もあると思いますが、そこは各人の判断ということでお願い
します。

※ 開発言語は問わないことにしますので質問するときはその辺を踏まえてお願いし
ます。
0872869NGNG
>>871
ありがと。
それ調べてみるよ。

ところで、なんで分かったの?
MSDNのリファレンスを1個1個見ていったんじゃないんでしょ?
調べ方のヒントが有れば教えて欲しい。
0873デフォルトの名無しさんNGNG
>>872
ドキュメントを1つ1つ見ているんだよ。
0874デフォルトの名無しさんNGNG
>>872
このスレを頭から読むことをすすめる。
みんな、色々やってたyp!
0875デフォルトの名無しさんNGNG
>>872
リファレンスくらい、大した量じゃないんだから、目を通しておけ。
一字一句読まなくても、どんな機能があるか目を通しておけば、ここで単純な質問をする手間も無くなるぞ。
0876山崎 渉NGNG

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0877デフォルトの名無しさんNGNG
JavaScriptの実行を無効にしたいのですが良い方法はありませんか?
0878デフォルトの名無しさんNGNG
IEのツールバーをなんとか使う方法はありませんか?
0879デフォルトの名無しさんNGNG
>>878
HTMLを埋め込んで外部操作。
0880デフォルトの名無しさんNGNG
MFCでIEコンポーネントを利用したプログラム(単純にWEBをはめ込み表示)
を作成しているのですが、個々の環境のIEのバージョンに依存したくないので、
必要なDLLなどをアプリ本体に埋め込みたいのですが、何かいい
手はないでしょうか?

アドバイスよろしくおねがいします
0881デフォルトの名無しさんNGNG
>>880
IE4しか入ってないのに6以降の機能を使いたいとかそうゆうこと?
必要なDLL多いし、レジストリ登録もあるし、元々の環境壊さずとかなったら、無理。
第一、やったらMSに訴えられるおそれ有り。
IE以外のコンポを探すべし。
0882デフォルトの名無しさんNGNG
>IE以外のコンポを探すべし。
Geckoベースのブラウザを作ろう。
http://pc2.2ch.net/test/read.cgi/tech/1023546699/
0883880NGNG
参考になりました、あきらめます
ありがとうございましたー
0884デフォルトの名無しさんNGNG
すれ立てるまでもない質問スレから誘導されました。
VB6.0でWebBrowserコントロールを貼り付けて処理をしています。

Form_Loadに WebBrowser.Navigate "about:blank" を書き、
WebBrowser_DocumentCompleteで
WebBrowser.Document.body.Style.innerHTML = _
       "<textarea id='text1'>ほげほげ(実際は1KBくらいの文字列)</textarea>"
を書いているのですが、WebBrowser.Document.body.Style.innerHTML
の反映が物凄く遅い(内容が表示されるまで10秒前後かかる)のです。
textarea 内の文字列をなしにするとすぐに反映してくれます。
この原因は何でしょうか? また、これは回避できるものなのでしょうか?
どうか宜しくお願いします。
0885デフォルトの名無しさんNGNG
>>884
関係無いかもしれんが、
WebBrowser.Document.body.Style.innerHTML
っておかしくないの?
WebBrowser.Document.body.innerHTML
じゃない?
0886884NGNG
>>885
すみません、打ち間違いでした。
0887あぼーんNGNG
あぼーん
0888あぼーんNGNG
あぼーん
0889デフォルトの名無しさんNGNG
保守
0890デフォルトの名無しさんNGNG
>>887-888
昔はこんなバカはム板にはいなかったもんだがなあ。
0891デフォルトの名無しさんNGNG
>>890 夏だからねw
0892デフォルトの名無しさんNGNG
もう全部夏のせいにして思考停止w
0893デフォルトの名無しさんNGNG
MSNメッセンジャーVer6から、
アプリが追加されたけど、
このアプリを自作するための仕様って公開されてるのかな?
0894893NGNG
ぐは、誤爆しますた
0895デフォルトの名無しさんNGNG
monazilla BBS に書いたんですけど、反応無いのでちょいと質問。
向こうも読んでいる方にはマルチになります。すいません

Delphi6 Pro 使ってます。TWebBrowser よりは、EmbeddedWB を使った方がいいと言われ、
EmbeddedWB をインストールしようと思いましたが、TWebBrowser があるせいで
インストールエラーが起きたので削除してからインストールしました。インストール方法は
これでよろしかったのでしょうか?

あと、EmbeddedWB.pas の中で MSHTML_tlb と SHDocVw_tlb が use されているのですが、
これを MSHTML と SHDocVw に変更しても問題無いでしょうか?

もうひとつ、ActiveX のコンポーネントパレットの所を見ると物凄い数のコンポが入りましたが、
これは何でしょうか?(((( ;゚Д゚)))
0896884NGNG
_ト ̄|○
0897895NGNG
>>896
あぁ…。俺 VB よく知らないんだけど、こうじゃ駄目かい?
WebBrowser.Document.write( "<textarea id='text1'>ほげほげ(実際は1KBくらいの文字列)</textarea>" )
0898デフォルトの名無しさんNGNG
>>884
漏れも使ったことは無いが、window.offscreemBufferingを調べるとよろしいかと。
0899デフォルトの名無しさんNGNG
typoった(汗
offscreenBufferingな。
0900あぼーんNGNG
あぼーん
0901あぼーんNGNG
あぼーん
0902あぼーんNGNG
あぼーん
0903デフォルトの名無しさんNGNG
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0904884NGNG
>>897
8.62秒:8.44秒でした。
>>898-899
ヒントありがとうございます。調べてみます。
0905デフォルトの名無しさんNGNG
>>904
IEコンポーネントはVBSでちょっと触っただけなので、
見当違いのレスかも知れんが、

textarea内の文字列をなしにするとすぐに反映されるなら、
textareaをつくってから、そこに文字列を書いたらどう?


0906あぼーんNGNG
あぼーん
0907あぼーんNGNG
あぼーん
0908あぼーんNGNG
あぼーん
0909あぼーんNGNG
あぼーん
0910884NGNG
>>レスしてくださった皆様
あっちこっち修正して半分弱まで抑えきることに成功しました。
どうしてもダメなトコは他の処理を並行でやって誤魔化します(;´∀`)
>>905
textareaのスタイルをいじるのでそのときにinnerTextで文字列を入れるように
してみました。

あとおまじない程度にtimeBeginPeriod(1)を入れてみました。
なんか凄いようです。
http://pc2.2ch.net/software/kako/1042/10422/1042285221.html
の>>320以降と
http://pc3.2ch.net/software/kako/1041/10410/1041058846.html
の>>582以降及び>>817以降

多くのレスが貰えて嬉かったです。皆様ありがとうございました。
0911895NGNG
で、>>895 解る方いませんか?
0912デフォルトの名無しさんNGNG
>895
ttp://www.euromind.com/iedelphi/getting_started.htm
ここ読むと、
最初から入ってるShDocVwとMSHTMLは外して、
ShDocVw_TLBとMSHTML_TLBを取り込むのを推奨。って書いてある気がするけど、
英語苦手だから違うかもしんない。
あとEmbeddedWB使うなら、
このサイトのTEmbeddedWB関連は一通り目を通しておいた方がいいかも。
でないと無駄に悩む羽目になりかねない。

ActiveXタブのは、TInternetExplorerとかの事言ってるなら、
IE操ったりとか。
0913山崎 渉NGNG
(^^)
0914895NGNG
>>912
レスありがとう

ShDocVw_TLB と MSHTML_TLB どうも好きじゃないんだよね。
これ、Pro 以上には _TLB 無しが標準で入ってくるから、
TWebBrowser 消して、ActiveX コントロールをコンポとして
入れる時に自動生成されたんだけど、その時に Delphi が
固まった感じになったんだよね。で、Imports ディレクトリ見たら、
MSHTML_TLB.pas が 9MB だったw

> ActiveXタブのは、TInternetExplorerとかの事言ってるなら、
> IE操ったりとか。

最初コンポパレット見たら、凄い数のアイコンが出てたのでバグったか?
と、思いましたが、それっぽい名前が出てますねぇ…。多分使うことないと思うが
0915デフォルトの名無しさんNGNG
Thread keep...
0916イベントシンクNGNG
  EventSinkについての質問です。

  Code Guruのhttp://www.codeguru.com/ieprogram/dhtmlhook.htmlにある
 サンプルプロジェクトを実行してみたのですが、コンパイルエラーやリンク
 エラーで実行できませんでした。
  しかしコメントを読み、なんとかエラーはなくなり実行はできたのですが、
 どうしてもInvokeでイベントをキャッチしてくれません。正常に動作させる
 方法をご存知の方がいたら、アドバイスをいただけませんか。
0917デフォルトの名無しさんNGNG
>916
あんま詳しくないけど、
イベントを受け取るためにIDispatchを実装したクラスを用意して、
IConnectionPointContainer::FindConnectionPointと
IConnectionPoint::Adviseを使えばInvokeメソッドでイベントを受け取れるはず。
あと、この辺が参考になるかも。
ttp://www.eu.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnguion/htm/drgui082399.asp
0918デフォルトの名無しさんNGNG
CHtmlViewを使ってページを表示して、その内容を丸ごと保存したいのですが、
下の方法でそのまま保存は出来ました。

http://216.239.57.104/search?q=cache:rXPLfATVHocJ:n76cd-01p05.ppp11.odn.ad.jp/old/a3975.html+m_pView-%3EGetHtmlDocument()&hl=ja&ie=UTF-8
--------------------------------------------------
ファイルに保存する例です。
#include <comdef.h>
#include <afxpriv2.h>
void CXXXXDoc::Serialize(CArchive& ar)
{
 if (ar.IsStoring()) {
  IPersistStreamInitPtr pPersistStmInit;
  // HTMLドキュメントのIPersistStreamInitを得る
  pPersistStmInit = m_pView->GetHtmlDocument();
  if ((bool)pPersistStmInit) {
   CArchiveStream stm(&ar);
   pPersistStmInit->Save((IStream*)&stm, VARIANT_TRUE);
  }
 }
}
IEでいうところの「完全」な保存ではありません。
あれをやるには、IHTMLElementをたぐっていかないとできないと思います。
--------------------------------------------------

で、IEでリンクもローカルなものに自動的に変更して保存しているのを
やりたいのですが、これは上で書いてあるように自力でhtmlのリンクを
解析する必要があるのでしょうか?
お手軽な関数とかが用意されているのであればそれを利用したいのですが。
よろしくお願いします。
0919vNGNG
お色気たっぷりなんですがどこか可愛らしさが漂う綺麗な人妻です。
スレンダーなボディーが更に色気を倍増させている気がします。
じっくり見つめながらフェラをし、小さめのオマンコに男根を導いていきます。
こういう年の取り方をしたいですね。
無料ムービーからどうぞ
http://www.excitehole.com/
0920山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0921デフォルトの名無しさんNGNG
WebDAVとか使えばできるだろ。
0922デフォルトの名無しさんNGNG
WinInetを使用してHTTPサーバと情報をやり取りするプログラムを
作成しています。(VC++ 6.0です。)
そこで使用している、CHttpFile::EndRequestメソッドについて
質問があります。

アプリでは、OpenRequestにて、HTTPにPOSTで接続し、
その後、
�@SendRequestEx
�AWriteString
�BFlush
�CEndRequest
で要求を送信し、

その後、サーバからの回答をReadしています。

ほとんどの場合は正常に動作するのですが、まれに、�CのEndRequest
で固まってしまうことがあります。(try〜catchでも捕まらない・・・)

そもそも、上記�Bのメソッドは、何のために呼ばれているのかが
よくわかりません。
サーバ⇔クライアントのパケットをキャプチャしてみたのですが、
�@のタイミングでHTTPヘッダ送信、
�Aのタイミングでアプリからのデータ送信
を行っているようですが、�Cのタイミングではサーバに対し、何の
通信もしていないようでした。

この、EndRequestは、何を持って成功としているのか?
また、どんなときにエラーとなるのか?
をもしご存知の方がいましたら、教えてください。
レス数が900を超えています。1000を超えると表示できなくなるよ。