1 名前:デフォルトの名無しさん [2006/04/16(日) 21:08:42 ] ===================================== IEコンポーネントを利用したブラウザのプログラミングに関する情報の交換及び再 利用を目的とした総合情報スレッドです。 ===================================== 最近IEコンポーネントを利用してブラウザを作るプログラマが増えてきました。こ れから自作してみようという人も多いでしょう。コンポーネントを貼り付けるだけ なら誰でも出来ますが複雑な制御を行うにはそれなりの経験や知識が要るようです。 私自身が知りたいのも山々ですが、似たような質問が分散するのを避けるためにも 統一しましょう。ブラウザ作者、COM に精通した方大歓迎です。もちろん公開した くない "禁断のテク" もあると思いますが、そこは各人の判断ということでお願い します。 ※ 開発言語は問わないことにしますので質問するときはその辺を踏まえてお願いし ます。 (以上、前スレより) IEコンポーネントを使い倒すスレ pc5.2ch.net/test/read.cgi/tech/982930049/ かなり前のスレですが続編を立てました。
269 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 19:58:16 ] Vista絡みで質問です。 CoCreateInstance()にて生成したIEに対して Navigate() すると新しく別のウィンドウが開いてしまいます。 元のIEのアドレスバーに適当なURLを入れると、 「この Web ページを開くために、Internet Explorer で新しいウィンドウを開く必要があります。 お使いのコンピュータのセキュリティのため、違うゾーンの Web サイトは別のウィンドウで開く必要があります。」 と言われて、また別のIEが開いてしまいます。Win2K(IE6)では動作確認済みです。 CoCreateInstance( CLSID_InternetExplorer, NULL, CLSCTX_ALL, IID_IWebBrowser2, (void**)&iweb ) ); iweb->put_Visible( VARIANT_TRUE ); CComVariant url( "www.google.com/" ), flags( 0 ), target( "" ), post( "" ), headers( "" ); iweb->Navigate2( &url, &flags, &target, &post, &headers ); エラー処理は省略してますがこんな感じです。 何か処理が足りて無いのだと思うのですが、よろしく願いします。
270 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:29:56 ] >>269 Vistaを使ってないのでわからないですが、 Vistaでは他のゾーンにジャンプする場合 必ず他ウィンドウで開く仕様なんじゃないですか? 最初にInternetExplorerオブジェクトが生成された場合のゾーンが インターネットゾーンじゃないんでしょうね。 XPでもオブジェクト生成すると アドレスバーには何も無いものが出てくるので 初期ゾーンが何かよくわからないですが・・・ くだらないやり方ですがiexplore.exeにURLを指定して起動すれば ゾーン間ジャンプを避けられるんじゃないでしょうか? それで後からShell.ApplictionでIWebBrowserを探して取得する、とか。
271 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:39:30 ] >>267 私はATLもMFCも知らないのでよくわかりませんが、 Invokeが呼び出されない、というからには IDispatchが使われてないんでしょう。 IDispatch継承のカスタムインターフェースを実装したオブジェクトの場合 IDispatchが呼び出されるかカスタム部分が呼び出されるかは 場合によって異なります。 スクリプト言語やVBでレイトバインディングを使うと IDispatchが呼び出されますが それ以外の多くの場合にはカスタム部分が呼び出され、 IDispatchは無視されるはずです。
272 名前:VC-- [2007/06/30(土) 17:34:02 ] vcでCHtmlViewを継承して、javascriptを操作するプログラムを作りたいんですが・・・ とりあえず、CHtmlView::Navigate2を使って、URLを表示しただけで、具体的な方法が わかりません。 例えば、あるサイトで画像をクリックしたら、画像が変化する(javascriptで実装)みたいなプログラム があったとして、擬似的に発動させる方法が知りたいです。 キーボードイベント、マウスイベントで発生させる以外の方法で 知ってたらご教授願いします。
273 名前:デフォルトの名無しさん [2007/07/12(木) 01:24:53 ] _,l;;;;;;;;;;;;;;;;;;;;;;;;;;;l,,_ ,.r'´,. -┐ ':..,゙ヽ ,r' ,::;:' ,ノ ヽ、 ゙:::.ヽ ,.' _.,:;:'___ _立_ ___;;ミ゙、  ̄ノ ̄| ̄ .l厄巳厄巳厄 i王i ,.巳厄巳厄巳l ,勹 .├‐'' l´ , "´  ̄ ̄ ̄ `'''′  ̄ ̄ ̄`.:`{ ´_フ ヽ、_, | l ;;:.,. ::、. ... '゙| ,.-''、.,! ,.::' ヽ、:.゙、 ;;.:' '' ヽ | ,.、 __l__ ./ 、/ `ヾー─tッ−ヽ'' kーtr─ツ'´〕. ヽ. | / {´i Y::::.. ` ̄ ̄´.: "i! ::. 、` ̄´ ゙:::.、} r、 l i,____ | ヾ_,,入;:::.. `'' " ´.::; .::i! ::.. ``` :. }ツl l \ ノ ヾ ;:::. .:r'' :: ll! :ヽ;:..:. .: j,ノ ,! ┬‐┌,┴┐ ヽ',,;l ゙i ;::.. _ `ヽ、;;,,,,'.ィ'' _,, .::,;r'1,,,/ l__ ノl士 ッジ::::::| ゙ ,r'´:::;;;;;;;::> 弋´;;;;;::::ヽ'" |:::::゙'イィ ノ凵 l土 弍:::::::::::l /:::;r'´ ,,..-ー…ー-、 ヾ;:::'、 |:::::::::::ヒ シ:::::::::::l i':::,! ´ __ ゙ l::::l:. |::::::::::ス __ヽ__‐┬┐ 彡;:;:::::l l:::l ''''''''⇒;;;:, l:::l |::::;;ャ` ニ メ ,ノ ,r', 广'`ヽl:::l ::::. .:: ゙::. l::l ノ^i`、 l ̄l ハヽヽ ,イ(:::j i::;ヘ :;:. .:: l::l'" l:ヽヽ  ̄  ̄ |;:ヽヽ l::l ヽ ;:.... .. .. : /l::l ノ ,.イ |;:;:;:;\\ l::l ', :;.:;::::::::::..::. / l::l,r'' /;:;:;|
274 名前:デフォルトの名無しさん [2007/08/04(土) 13:58:59 ] IEとかエクスプローラのアドレスバーから検索するときの urlってどこから取得できるんだろう
275 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 14:56:19 ] レジストリでも検索してみたら?
276 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 21:40:42 ] regmonでみれば?
277 名前:デフォルトの名無しさん [2007/08/15(水) 11:42:40 ] もうどうしても解決できなかったので質問させてください。 downloadcompleteイベントだけがどうしても発生しません。 環境 EXCEL2003sp2 VBA XPSP2 ブラウザ6.0 navigatecomplete2,documentcompleteは発生します。ただrefreshをさせたときは動作しない、(上のほうのレスにもあります)ので downloadcompleteを使いたいのです。 一番近い私と同じ症状を下記ページで見つけました www.microsoft.com/japan/msdn/community/gdn/ml/WebTech_beginners.aspx ↑の「WebBrowser コンポーネントの DownloadComplete イベントにうついて」です。 がmshtml.dllはPCに入っています。参照設定に問題あるのかと思いましたが、よく分かりませんでした。 F2キーを押してオブジェクトブラウザを見てもちゃんとdownloadcompleteはありますから、問題はないと思うのですが・・。 busyをdo loopはできればやりたくないです。 StatusTextChangeを使うのもサイトによっては問題が起きるでしょうからできれば避けたいです。 問題のxlsファイルをUPすることもできます。
278 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 01:28:34 ] すでに開いているIEのセッションからクッキーを取り出し、 IEコンポーネントを利用した自アプリでそのクッキーの情報を使う、 みたいなことは可能でしょうか? あるいは単純に既存のIEと自アプリとでセッションを共有できればいいのですが、 レジストリでBrowseNewProcessというキーをNoにすることで全てのIEが 同一のプロセスで起動されるという情報がMSサイトにありましたが、 どうも効果がないようなんです。
279 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 22:20:26 ] IEコンポーネントで自分のuseragentを取得するのはどうやるんだぜ? JavaScriptsだとnavigator.userAgentだと思うがVC++のやりかたわからんのだぜ
280 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 02:16:36 ] UrlMkGetSessionOption
281 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 20:27:24 ] >>280 d
282 名前:デフォルトの名無しさん mailto:age [2007/08/23(木) 22:03:01 ] IWebBrowser2::GetLocationURLでIEで表示されいてるURLを取得したのですが、IE7などのタブで現在表示されているかいないかの判定方法があれば教えて下さい。
283 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 20:01:34 ] 自己怪血。ググッて>>282 にヒットしたヤシはここ嫁 www.codeproject.com/shell/AutomateShellWindow.asp
284 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 20:24:40 ] IEコンポを使った専用ブラウザを作ったのだけど、 ツール>インターネットオプション>セキュリティ>レベルのカスタマイズ その他>混在したコンテンツを表示する をOFFにしたいんだけど、どのInterfaceから操作できるんでしょうか?
285 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 02:58:47 ] >>128 msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnbrowse/htm/top.asp DHTMLオブジェクト モデルのおかげで、ページの構造をその場で修正できますが、 F5キーを押すか、ブラウザの[最新の情報に更新(Refresh)]ボタンをクリックしたと たんに変更内容がすべて失われます。DocumentCompleteイベントを処理してコード ウィンドウを最新の情報に更新することもできます(DownloadCompleteイベントは、 DocumentCompleteよりも前に発生することに注目してください)。ですから、ページを 初めてダウンロードするときに発生するDownloadCompleteは無視して、更新によって 発生するときだけ、このイベントを扱うようにします。単純なBoolean型のメンバ、たとえ ばm_bDocumentCompletedなどを使えば、このような状況を簡単に区別できます。
286 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 13:26:08 ] ie6までは、貼り付けたieコンポーネント内のリンクを ユーザーが Enterキーで開くことが出来たのですが、 ie7から、開くことが出来なくなりました キー操作でリンクを開く方法って、ないでしょうか???
287 名前:デフォルトの名無しさん [2007/09/26(水) 13:40:19 ] www.nitoyon.com/vc/tips/ie_component.htm ↑のHPの真ん中当たりのページを解析する/変更する2のソースなのですが、 コピペして実行しても期待通りの動作をしません。 if( strcmp( pszBuf, "temp") == 0){ // innerHTML を設定 pElement->put_innerHTML( L"hogehoge") ; } このif文の中には入るのですが、put_innerHTMLでHTMLにhogehogeと表示させる事が出来ません。 対象のHTMLには<p id="temp"></p>のように記述しています。 どなたか詳しい方助けてください。
288 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:55:53 ] >>287 俺がやったらうまくいったよ。 そのページを書いた人もおそらくうまくいっただろうし、 お前のプログラムに何か問題があるんだと思う。 何か変にいじっていない?
289 名前:デフォルトの名無しさん [2007/09/26(水) 21:21:21 ] >>288 特にいじってないですが・・・ その試してみたソースうpしてもらえませんか? それか俺のHTMLの方のソースに問題があるのかな・・・ そっちの線はうすいと思うけど・・・
290 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:00:22 ] >>289 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4975.txt IEコンポーネントの使い方2のソースを基に、 WM_CREATEでいきなりローカルのHTMLを表示するようにし、 GOボタンを押したときに例のテキスト変更の処理を行うようにしてある。 あとどうしても気に入らない点を自分のスタイルに書き換えているが気にするな。 VC++ 8だから"AtlAxWin80"にしてあることにやや注意。
291 名前:デフォルトの名無しさん [2007/09/26(水) 23:22:34 ] >>290 ありがとうございます。ちょっと今アホな事してしまって開発環境があぼんしてしまったので、 再度環境を整えたら試してみます。
292 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 15:21:53 ] >>291 ん〜どうやら pElement->put_innerHTML( L"hogehoge"); の文でデバッガが立ち上がって落ちます。 <body>タグの間に <p><div id="temp"></div></p> って書いてるのですが、もしかして根本的に何か違いますかコレ
293 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 18:49:56 ] と、思ったら、ビルドをdebugからreleaseに変えたら無事動作しましたm(_ _)m
294 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 05:36:23 ] IEコンポーネントを利用してWin32で作成したウィンドウ内にHTMLを表示させているのですが、 表示させているHTML内のJavaScriptから、アプリケーション側の関数を実行する事は可能でしょうか?
295 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 20:35:21 ] ウイルスでも仕込むつもり?
296 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 21:58:22 ] >>295 いえ、ただJavaScriptで出来ない処理をアプリケーションに任せようと思って・・・。 逆は出来るんですけど、JavaScript側からアプリケーションの関数の実行は出来ないのでしょうか?
297 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 22:15:41 ] >>296 できるよ。externalで実装する。説明はめんどくさいからしないけど、 需要がある話なのでMSDNとかに載ってるんじゃないかなあ。
298 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 22:19:42 ] >>297 externalですか。ちょっとググってみます。 なんか1から丁寧に解説してくれてるサイトがあればいいのですが、 なかなかそういうのが見つからなくて結構困ってます。 VisualStudioの構造体の中身が勝手に表示される機能をつかって、 メソッド名から機能を予測して色々試してみる方法には限界が・・・
299 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 22:28:05 ] 今アプリケーション側からJavaScriptの関数の実行はURLにjavascript:関数();でやってるのですが、 external使うともう少しちゃんとした方法で出来そうな感じですね。ただ使い方がさっぱりですが。
300 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 22:31:35 ] >>299 おまえ>>287 だろ。マルチ野郎は氏ね。
301 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 23:20:22 ] WebBrowser1と2じゃまた違うっぽいですね。1ならいっぱい転がってるのに。。。 C#とVBばかりでなかなか読めないけど・・・
302 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 22:01:28 ] >>301 WebBroser1と2?なんか勘違いしてる気がするなあ。 externalはキーワードとしてちょっと曖昧だったかも。GetExternalで再度。 DonutRAPTとかでも実装してた気がするから、見ようと思えば見れると思う。 COMだから、C#/VB.NETよりC++のほうが普通に楽ですよ。
303 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 21:13:59 ] >>301 GetExternalだともっと情報が少なくなってますね・・・。 色々見てるとInvoke()とかInvokeScript()あたりが臭そうなのですが、 引数が多い上に、それぞれの引数が何を意味しているのか分からないので全く使えないのが現状です。
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 ] いくら考えても解決出来ません。 お願いします。 解決方法を教えて下さい。