[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 02/17 11:13 / Filesize : 145 KB / Number-of Response : 555
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2006/04/16(日) 21:08:42 ]
=====================================

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

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


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

※ 開発言語は問わないことにしますので質問するときはその辺を踏まえてお願いし
ます。

(以上、前スレより)

IEコンポーネントを使い倒すスレ
pc5.2ch.net/test/read.cgi/tech/982930049/

かなり前のスレですが続編を立てました。

304 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 03:06:13 ]
IDocHostUIHandlerインターフェース実装してGetExternalでIDispatchインターフェース実装したクラスのポインタ食わせてやればいけるはずだったと思うが。

305 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 04:43:11 ]
>>304
とりあえずIDocHostUIHandlerインタフェースの実装が出来そうで出来ないところまできてます。
MSDNを参考にしているのですが、なかなかCOM自体に不慣れでてこずってます。
1日中やってて何も進まないと鬱になってきますね。何か本買ったほうがいいのでしょうか?
ネットの情報だけじゃとても出来るようになる気がしません。

それとはまた違う話になってしまうのですが、

char cmd[128];
for( i=0; i<5; i++){
  wsprintf(cmd, "javascript:test(%d);", i);
  CComVariant vUrl(cmd), vempty;
  pWB2->Navigate2(&vUrl, &vempty, &vempty, &vempty, &vempty);
}

このような形でJSの test(int) 関数を5回実行しようとしても、どうやら実際には1回しか実行されないようです。
実際に実行されるのは test(5); のみです。これは仕様なのでしょうか?普通の関数のように使えないですか?

306 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 11:30:43 ]
NavigateComplete2とか待たないといけないんじゃね

307 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 12:38:17 ]
>>306
それをキーワードに検索するといい感じのがヒットしたので使ってみました。
以下のコードをNavigate2の後に入れたのですが無限ループになってしまいますね。

while(pWB2->get_Busy(&pBusy)==VARIANT_TRUE || pWB2->get_ReadyState(&state)!=READYSTATE_COMPLETE){
  Sleep(100);
}

なんか全然COMを理解してないような気がするのですが、少しソースを見ていただけないでしょうか?
ossan.fam.cx/up/uploda1/loda.cgi?mode=dl&file=441
パスはieです。

308 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 15:01:57 ]
>>307
こいつはマルチ野郎なので以後放置で

309 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 20:24:04 ]
IEコンポーネントなんだけど、そのプロセスでだけキャッシュの保存先を
変更ってできる?

310 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 21:23:06 ]
>>307
当たり前じゃん。


311 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 23:00:51 ]
ゲッラゲラ笑った

C++系以外の言語から移植して気付いてないとかか?

312 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 23:06:26 ]
Returns S_OK if successful, or an error value otherwise.





313 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 04:02:40 ]
>>312
MSDN見て設計を変えてみました。

pWB2->Navigate2(&vUrl, &vempty, &vempty, &vempty, &vempty);
if(pWB2->get_ReadyState(&state)==S_OK){
 MessageBox(NULL, "ReadyStateが成功", NULL, MB_OK);
}

これでMessageBoxが出るのですが、一応目的通り、01234と表示されました。
しかし、MessageBoxをSleep(100);に置換すると 4 とだけ表示されてしまいます。
stateの値をチェックしたところ常に1であるようです。
1はREADYSTATE_LOADINGで読み込み中(?)という事らしいのですが、
ここでREADYSTATE_COMPLETEが来ないのは何故なんでしょうか?

314 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 05:03:59 ]
やはり、READYSTATE_COMPLETEが来ないです。

while(hr=pWB2->get_Busy(&pBusy), (hr!=S_OK || pBusy==VARIANT_TRUE)){
  MessageBox(NULL, "get_Busy failed, or the control is busy", NULL, MB_OK);
}

while(hr=pWB2->get_ReadyState(&state), (hr!=S_OK || state!=READYSTATE_COMPLETE)){
  MessageBox(NULL, "get_ReadyState failed or Object hasn't received all of its data", NULL, MB_OK);
}

同じような症状の方がいたのでそれを参考に調べてみて以下のコードを足してみたのですが解決できませんでした。
pWB2->put_Visible(VARIANT_TRUE);

315 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 10:48:14 ]
COMどころかスレッドも理解してないじゃん

316 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 02:45:43 ]
javascript:test();に問題があるかも

317 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 10:14:14 ]
結局どうすれば解決できるのでしょうか?

318 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 10:27:56 ]
はい

319 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 13:53:42 ]
>>317
こいつは自分で考える気が微塵もないクソ野郎です。以下放置で。

320 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 00:33:58 ]
>>319
なんでそんなに執拗にからんでくるんですか?
ちゃんと考えてるし、色々努力してます。どうやら才能がないらしいですが。。。

321 名前:デフォルトの名無しさん [2007/10/18(木) 05:17:57 ]
質問です。
クッキーによるセッション管理をしてるサイトなのですが
途中まで、WebRequestクラスでログイン処理などをした後
その情報を使って、WebBrowserコンポーネントでそのサイトにアクセスしたいのです。
そこでクッキーを引き継がせる方法を考えたのですが
WebRequest側は、CookieContainerでクッキーを保持してるのですが
IEコンポネ側に対応したプロパティーが見当たりません。

何かいい方法はありませんでしょうか?
よろしくお願いします。

環境はC♯です。

322 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 12:55:03 ]
いい方法はあります。



323 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 03:46:31 ]
なんか、変な流れになっちまったな。
変な応答してるヤツは何がしたいんだ?

>>321
手軽な方法としては、一度、
WebBrowserのdocumentプロパティを
mshtml.IHTMLDocument2にキャストして
writeの中に、WebRequestクラスで受信したデータを放り込めば
クッキー情報含めて引き継がれるよん。


324 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 04:23:16 ]
>>323
出来ない。
APIのInternetSetCookie で設定する。


325 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 19:09:00 ]
C++ MFC で、HEADメソッドを手軽に送信できるような関数ないかな
いちいち
HEAD hoge.fuge.com HTTP/1.1
とか書きたくないんだぜ

326 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 04:41:11 ]
つくればいいじゃない

327 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 19:01:07 ]
Temporary Internet Files の保存先を任意のフォルダに変更したいんだけど
どこいじればいい?
同時に立ち上がってるほかのプロセスに影響なく、特定のIWebBrowserのインスタンスだけ
変更できるとうれしいんだけど。

328 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 22:00:06 ]
普通に無理だろ常識的に考えて

329 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 23:41:56 ]
IEコンポーネントを使わなければおk

330 名前:327 mailto:sage [2007/11/08(木) 11:06:15 ]
>>328
そうかな。。。出来ても良さそうなもんだけどなあ。。

331 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 19:51:17 ]
IEの関数コールを監視して、どこでフォルダアクセスしてるか見れば?
最悪その関数をそのプロセスに対して差し替えて実現。

332 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:47:34 ]
関数とかAPIとかのレベルじゃなくね?




333 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 02:51:06 ]
フック。

334 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 13:26:31 ]
定番の質問だが
・IEのクリック音を止めたい
・Temporary Internet Filesの位置を変えたい
・Proxyを追加したい。
この辺の事は、コンポネには装備されてなくて
IE自体も、直接レジストリを操作してるから
どうしてもやりたいなら、該当するレジストリの箇所を書き換えるしかない。


335 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 04:33:33 ]
レジストリを書き替えたら当然純正IEにも影響が出ることをお忘れなく

336 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 04:59:44 ]
if( strcmp(id, "foo") == 0 ){
pElement->put_innerHTML(A2OLE(boo));
}

こんな感じでidがfooである領域を書き換える事は可能だけど、
この領域に文字列を単純に追加する事って出来る?
今のところfoo内を読み込んで、strcatで文字を追加した後put_innerHTMLでやってるんだけど、
これじゃ二度手間な気がするんだが。。。

337 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 18:39:20 ]
あるツールの開発でIEコンポーネントを使うか否かを検討しています。
例えば、IEコンポーネントを用いたミニブラウザの場合、複数起動しても、
それぞれが独立したcookie情報を用いることは可能でしょうか。



338 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:34:07 ]
独立したCookieってどういうこと?
つかIE複数立ち上げて見ればわかるんじゃね

339 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:54:19 ]
>>337
ブラウザが起動してる限り有効なクッキーの話だよね?
>>338がいうようにIE複数起動したときの動作がそのままIEコンポアプリ複数起動だとおもう。
たぶんクッキーは別になるんじゃないかな。

340 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:10:30 ]
ちょっと質問が分かりにくかったようで、すみません。
例えば、mixiなどのオートログインが可能なサービスの場合、Cookie情報で
これを実現しています。ブラウザを複数起動しても、そのCookie情報が当然、
同じものがサーバーに送られます。(でないと、オートログインできません)

で、IEコンポーネントを用いたツールは、あくまでも別ツールなので、
仮にmixiにアクセスしたからと言って、自動でログインされても困るんですね。
そこで、Cookie情報はツールとブラウザとで異なったものにしておきたい。
また、ツールを複数起動した場合も、ツール毎にCookieは分けたいんですね。

で、IEの標準の動作では、複数起動しても、Cookieは共有というか共通になって
しまうんですが、IEコンポーネントの使い方次第で、Cookieをブラウザとは
別のものとして管理できるのかを知りたかったのですが、可能でしょうか。

341 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:18:49 ]
Cookie自体はIEとの共有は避けられないと思った。
ただ、プロセス毎にCookieを利用しないようには出来るから、そのツール側で扱う情報を
Cookie以外の手法でなんとかするのがいいんじゃないの?

342 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:47:10 ]
BeforeNavigate2でヘッダ弄ればなんとでもなるんじゃね?



343 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:06:51 ]
返答ありがとうございました。
実験してみます。
感謝です

344 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 05:40:24 ]
delphi7proでTwebbrowserを使って
チェックボックスやボタンを自動でクリックしたりするのをするようなソフトを作っています
そこで
e := WebBrowser1.OLEObject.Document.documentElement.getElementsByName('なまえ');
としているのですがオートメーションオブジェクトでサポートしていませんというエラーが出てしまいます
このエラーはどのような意味なのでしょうか

345 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 05:41:56 ]
調べましたが、とっかかりさえ見つからないような状況ですので
わかる方がいらっしゃったら教えてください

346 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 11:07:04 ]
getElementsByNameメソッドがあるのはDocumentだけだからじゃね?
"documentElement"が余計なんじゃね

347 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 20:21:41 ]
ありがとうございます
e := WebBrowser1.OLEObject.Document.getElementsByName('なまえ');
e.Item(0).click();
のような感じで自動クリックできました

348 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:20:50 ]
IEコンポーネントでは、HTMLをサイトから読み込んだあと、<IMG>や<IFRAME>内のCGやHTMLを
自動的にサーバーにアクセスして取得しますが、BeforeNavigate2のように、それらのデータを
取得しにいく前にイベントとして拾う方法がありましたら、教えてください。

また、redirectで別サイトにgetを送信する前に、それをイベントとして取得する方法があり
ましたら、これについてもお願いします。

349 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 04:28:54 ]
自分でイベント作ったら?

350 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 16:40:32 ]
>>349
そこまでの自由度あるの?

351 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 18:21:37 ]
>>348 Proxy

352 名前:327 mailto:sage [2007/11/28(水) 10:52:27 ]
NtQueryValueKeyにフックをかけて
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cache
にウソを返すようにしたんだけど、切り替わらないorz



353 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 07:17:28 ]
レジストリの値変更しても再起動するまで反映されないんだから
システムがどっかメモリ上にキャッシュしてるんだろ

354 名前:デフォルトの名無しさん [2007/12/01(土) 18:17:18 ]
VBを使用しております。
IEオブジェクトに表示中の画像ファイルを、指定のフォルダに保存するには
どのようにすればよいでしょうか?
要するに、マウスの右クリックで表示される「名前を付けて画像を保存」を自動行いたいのです。

アクセスするたびに、画像は変わるため、URLから指定しDLすることは出来ませんでした。

IEオブジェクトの保存したい画像のアイテムは
ie.document.all.item(x)
取得できました、この先がわかりません。

おわかりの方がおられましたらお教えください


355 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 20:39:58 ]
SRC見てダウンロードすればいいんじゃね

356 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 22:12:03 ]
>>355
URLを見てDLということですか?
アクセスのたびに変わるからNGと記載したのですが・・・

357 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 23:58:20 ]
SRCプロパティのことじゃねーのかハゲ

358 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 13:40:06 ]
>>357
うーんよくわかりません。
そのSRCプロパティのURLからDLすると、画像ファイルが変更されNGなのですが?

359 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 16:48:18 ]
いみがわからない

360 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 18:02:41 ]
>>359
下のセキュリティ画像みたいにアクセスすると画像が変わります。
https://signup.live.com/newuser.aspx?mkt=JA-JP&revipc=JP&ts=4164537&sh=kfjF&ru=http%3a%2f%2fmail.live.com%2fmail%2fmail.aspx&rollrs=04&lic=1
変わると困るので、IEに表示中の画像がほしいのです

361 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 18:18:45 ]
アクセスするたびに変わるのは、画像じゃなくてURLのほうじゃねえかw
それも変数の値が変わる程度で、呼び出し先のCGIは固定だか?

362 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:44:25 ]
tool-6.net/?cnum
VS2005でアセーションエラーが出まして
なぜhMyIEがNULLになるのかがわかりません。



363 名前:デフォルトの名無しさん [2007/12/04(火) 22:56:08 ]
CreateWindowの戻り値がNULLだから。

364 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 23:21:29 ]
>>361
画像のURL指定し、ブラウザで表示させ、更新してもそのたびに変わるのですが?
いったいどう固定すると、画像も固定できるのでしょうか?

365 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 23:41:44 ]
IEコンポーネントでphpを表示させているのですが
同じURLで、GETで渡す値も全く同じにしてphpにアクセスすると
キャッシュを読み込んでいるだけなのか、php自体が実行されません。

php内でMySQLと連携してDBを操作させているのですが、2回目の
アクセス以降はDBの操作がされていません。

同じURL、同じGET値でも毎回phpが実行されるようにするにはどうすればいいでしょうか。

試しにIUrlHistoryStgを使って履歴を削除しようと思いましたが
下記のようにインスタンスを取得しようとすると、CLSID_CUrlHistoryが
定義されていない識別子だと言われてしまいます。

IUrlHistoryStg* pUrlHistoryStg = NULL;
hr = CoCreateInstance (CLSID_CUrlHistory, NULL, CLSCTX_INPROC, IID_IUrlHistoryStg, (void**)&pUrlHistoryStg);

366 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 01:28:41 ]
GET値に乱数を追加する

367 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 11:27:57 ]
>>364
画像URLは固定でリロードするたびに画像の内容が変わってしまうと言うことか
だからIEコンポで表示させた画像を取得したいと言うわけか
一時キャッシュ覗いて探してみるとか・・・
まぁ無理なんじゃね?

368 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 18:48:02 ]
>>363
解決するためにはどうすればよいですかね?

369 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 11:29:13 ]
いくら考えても解決出来ません。
お願いします。
解決方法を教えて下さい。

370 名前:デフォルトの名無しさん mailto:age [2007/12/06(木) 19:16:38 ]
www.ezinfo.jp/contents/script/src/index.php?ura=http%3A%2F%2Ftool-6.net%2F%3Fcnum&agent=DoCoMo%2F2.0+SH903iTV%28c100%3BTB%3BW30H20%29&ref=http%3A%2F%2Fwww.ezinfo.jp%2F&type=sosu
アセーションエラーが出るのは、初期化がいけないのですかね?

371 名前:デフォルトの名無しさん mailto:age [2007/12/06(木) 20:32:51 ]
うっほほほへ!??!
できた!!!
クハハハハハハwwww
やっべぇwwww何コレwwwww気付かなかった俺バカスwwwww
ありがとうございましたぁ!!
うっひょひょひょwwww

372 名前:デフォルトの名無しさん [2007/12/07(金) 19:12:42 ]
C++を使用しています。

子ウィンドウを立ち上げてIEコンポーネントのブラウザを表示させたいのですが、
一度子ウィンドウを消して再度立ち上げるとファイルのダウンロードが発生して表示することができません。

原因に心あたりがある方、教えていただけませんか?



373 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 03:35:54 ]
>>360
1.ドキュメント全体をビットマップで保存する
2.特定画像のみビットマップで保存する
3.キャッシュから見つけだして画像を表示する
と、いろいろ試してみたが、そのページのころころ変わる画像はキャッシュされてないっぽいので、
VBでやるなら、1か2になるかなあ
本気でやるならVBじゃなくてC++にしたほうがいいかと

374 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 12:04:27 ]
IHTMLDocumentのwrite()ってjavascriptのdocument.writeとは違いますよね。
最初にabout:blank開いてからIHTMLDocument#write()すると書き込めるけど
特定のアドレスのHTML開いた後にIHTMLDocument#write()すると
いったんHTMLがクリアされて書き込みになる。
javascriptのdocument.writeみたいに、いつでも書き込むことができるインタフェースないですかね。
innerHTMLとかouterHTMLは事情により使いたくないのです。

375 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 12:52:00 ]
同じだよ
読み込み完了後ならjavascriptのdocument.writeもページの置き換えになる
やってみろ

376 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 13:20:44 ]
ページ移動時のカチッって音を消すにはどうすればいいのでしょうか?

377 名前:374 mailto:sage [2007/12/16(日) 13:28:08 ]
>>375
うむープラガブルプロトコルとか特殊なことやって
ページ表示した後だから、うまくいかんのかなー

378 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 16:54:12 ]
>>376
visible = falseにしとくか
レジストリいじるかしかない

379 名前:374 mailto:sage [2007/12/16(日) 16:57:30 ]
ああああ、言っている意味を把握した。
なるほど、確かにHTML完全に読み終わった後の
javascriptのdocument.writeもページ置き換えになるね。
根本的な部分で理解が欠けていた・・・
ふむーじゃあ何とかしてDocumentCompleteさせなきゃいいのか。

380 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 17:21:29 ]
innerHTMLとかで書けばいいんでないの?

381 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 17:38:58 ]
>>378
pWB2.setVisible(FALSE);
じゃダメですか?何も変化がないのですが・・・

382 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 19:23:51 ]
>>380
いや、それだと糞重いんで、なんとかしてdocument.write使いたいなと。
iframe src="about:blank"
として、そこに書き出すことで解決!



383 名前:374 mailto:sage [2007/12/16(日) 19:30:09 ]
>>382は漏れ。
あと気になることが。
IHTMLDocument2#writeサンプルの後半部分
  hresult = SafeArrayAccessData(sfArray,(LPVOID*) & param);
  param->vt = VT_BSTR;
  param->bstrVal = bstr;
  hresult = SafeArrayUnaccessData(sfArray);
  hresult = document->write(sfArray);

cleanup:
  SysFreeString(bstr);
  if (sfArray != NULL) {
    SafeArrayDestroy(sfArray);
  }
たいていは大丈夫なんだけど大量にdocument->write呼んでたら
SafeArrayDestroy(sfArray);
で、heapが壊れたとかで落ちた。
で、cleanupのとこをこうしたら落ちなくなった。
cleanup:
 if (bstr != NULL) {
  SysFreeString(bstr);
  hresult = SafeArrayAccessData(sfArray,(LPVOID*) & param);
  param->vt = VT_BSTR;
  param->bstrVal = NULL;
  hresult = SafeArrayUnaccessData(sfArray);
 }
 if (sfArray != NULL) {
  SafeArrayDestroy(sfArray);
 }
これはサンプルのバグかな。


384 名前:374 mailto:sage [2007/12/16(日) 19:31:53 ]
SafeArrayDestoryって要素の中身もvt見て、
VT_BSTRだったら勝手にSysFreeStringをやってくれるんだろうか。
だから先にSysFreeStringしちゃうと2重Freeで落ちるのかな。

385 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 20:27:16 ]
IEコンポを使っている2ちゃんねるブラウザがその方法で追記してるから
不可能ではないはず

386 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 20:31:31 ]
セキュリティーゾーンとかでいろいろ面倒だった気はするが

387 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 23:43:52 ]
CHtmlView内で起こったスクリプトエラーをフックできないのですか?
おしえてエロい人

388 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 23:57:04 ]
>>385
よく見かけるdelphiのコードではレイトバインディングで型変換はシステム任せにして
えいやっとwriteするけれど、きっとディスパッチの手間だけ速度では損するんだろうな。

389 名前:374 mailto:sage [2007/12/17(月) 00:01:35 ]
>>385
あ、おいらへのレス?
about:blankで開いたページならdoument.writeでも切り替わらないよ。
2ちゃんブラウザはたいていabout:blankに書いてるし。
あとはjavascriptでロード時に実行されるように書くか。

390 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 12:31:40 ]
>>269
Vistaにしたら、そうなってしもうた。
>>270の方法で解決しそうだけど回りくどいな。


391 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 13:13:13 ]
>>387
できます

392 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 17:10:09 ]
>>391
いいからその方法をとっとと書けよクズが。
知っててワザとやってるなら性格悪いだけのクズだな。



393 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 18:29:35 ]
どうしよっかな〜

394 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 19:43:06 ]
>>392
すごい時刻ゲットしてるからって嫉妬すんなよw

395 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 20:56:43 ]
なんでこのスレには糞しかいないんだよ。
IEコンポーネント使う少ない人達同士仲良くしろよ畜生

396 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 21:09:38 ]
自分の質問の答えが返ってこない=糞
ですか。そうですか。

397 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 23:03:59 ]
>>395
自称糞じゃないお前がじゃんじゃん質問答えろ
手始に387からな、12時間まってやるから早くしろよ

398 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:51:04 ]
自分の質問の答えが返ってこない=糞だとは誰も言ってねぇだろが。
>>391さんは性格がいいですね?こうですか?わかりません><

399 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 23:41:02 ]
じゃあ横で俺が答えてみようか。
つーかキーワードでググったらここの>>235がヒットしたんだが。

400 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 14:50:25 ]
まぁ言ってる事に同感できなくはないが、口が悪い。
スレが荒れる。

401 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 12:36:32 ]
IEのレンダリング結果において、XY座標から、近傍のテキストを
取得するにはどうしたらいいですか?
IHTMLDocument2::elementFromPoint()
で、エレメントを取得できるのはわかったのですが、もっと 1 文字単位で
文字を検出したいのです。できたら、エレメント内あるいはドキュメント全体における
文字の位置がインデックスでわかるとうれしいです。

402 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 16:38:01 ]
すくなくともIHTMLDocumentやElementの何かの関数を使えば取れる、
というものではないはず。
血を吐くような努力が必要。てか事実上無理だと思う。




403 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 23:32:04 ]
工夫次第で無理ではないな。


404 名前:402 mailto:sage [2007/12/20(木) 23:32:51 ]
>>403
だったら具体的なやり方書いてよ、天才プログラマーさん。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<145KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef