1 名前:デフォルトの名無しさん [2006/04/16(日) 21:08:42 ] ===================================== IEコンポーネントを利用したブラウザのプログラミングに関する情報の交換及び再 利用を目的とした総合情報スレッドです。 ===================================== 最近IEコンポーネントを利用してブラウザを作るプログラマが増えてきました。こ れから自作してみようという人も多いでしょう。コンポーネントを貼り付けるだけ なら誰でも出来ますが複雑な制御を行うにはそれなりの経験や知識が要るようです。 私自身が知りたいのも山々ですが、似たような質問が分散するのを避けるためにも 統一しましょう。ブラウザ作者、COM に精通した方大歓迎です。もちろん公開した くない "禁断のテク" もあると思いますが、そこは各人の判断ということでお願い します。 ※ 開発言語は問わないことにしますので質問するときはその辺を踏まえてお願いし ます。 (以上、前スレより) IEコンポーネントを使い倒すスレ pc5.2ch.net/test/read.cgi/tech/982930049/ かなり前のスレですが続編を立てました。
2 名前:デフォルトの名無しさん [2006/04/16(日) 21:12:04 ] 前スレの過去ログ pc5.2ch.net/tech/kako/982/982930049.html
3 名前:デフォルトの名無しさん mailto:sage [2006/04/16(日) 21:22:42 ] 関連スレ(俺の独断と偏見) 【OLE】オートメーション総合スレ【ActiveX】 pc8.2ch.net/test/read.cgi/tech/1137771139/l50 Win32API質問箱 Build42 pc8.2ch.net/test/read.cgi/tech/1144962549/l50 ATL/WTL Part4 pc8.2ch.net/test/read.cgi/tech/1134388951/l50 Donut開発情報交換スレ(DAT落ち) pc8.2ch.net/test/read.cgi/tech/1096194187/l50
4 名前:デフォルトの名無しさん mailto:sage [2006/04/17(月) 19:39:15 ] >>3 FW2.0にはwebbrowserコントロールあるし、IEコンポーネントプログラミングなんてもう必要無いんじゃまいか?
5 名前:デフォルトの名無しさん [2006/04/20(木) 15:52:56 ]
6 名前:デフォルトの名無しさん mailto:sage [2006/04/20(木) 16:48:53 ] たしか、Part 2があったはずなんだけど いやーごめんなさいでブッとばされて、それっきりになったんだっけ?
7 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 07:12:22 ] まさか今になって次スレが立つとは。うれしいなあ。 >>1 の英断に乾杯。
8 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 15:16:29 ] このままDAT落ちしそう
9 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 17:46:12 ] 4ヶ月ほっとかれても落ちないみたいだから だいじょぶなんでない? テンプレ?に追加 わからないことがあったらとりあえずググっとけ google.co.jp/ 調べてるうちに英語のページが出てきても、 そこに書いてあるメソッドやらIDやらでググればいい
10 名前:デフォルトの名無しさん [2006/05/07(日) 22:04:26 ] ageてもいいよね
11 名前:デフォルトの名無しさん [2006/05/11(木) 00:49:29 ] IE7β2インスコした記念age
12 名前:デフォルトの名無しさん [2006/05/13(土) 12:13:27 ] 記念質問 プロセス内の変数(WinMainとかで宣言した変数)を、 IEコンポーネントの中のJavaScriptから参照することはできますでしょうか? int main(void){ int count = 0; // ←例えばこういう変数をJavaScriptで直接参照したい } データの算出はC++で書いて、 そのデータの表示はHTML+JavaScriptでやりたい感じなのですが・・・。
13 名前:デフォルトの名無しさん mailto:sage [2006/05/13(土) 17:30:19 ] >>12 無理。
14 名前:デフォルトの名無しさん [2006/05/13(土) 18:15:06 ] HTMLでデータを表示するなら自前でHTMLファイルを書き出して表示とか。
15 名前:デフォルトの名無しさん [2006/05/13(土) 18:37:42 ] >>13-14 やっぱりっすか。 変数の中身は動的に変化するものなので、 というか時間を管理する変数なので随時C++で更新かけつつ、 JavaScriptでアクセスして表示させたいのです。 Sleipnirでは、現在のアドレスバーとか検索バーの文字列を 取得するActiveXオブジェクトがあるので、そっちの路線で調べて見ます。 www.sleipnir-wiki.jp/index.php?Sleipnir.API%20%A5%EA%A5%D5%A5%A1%A5%EC%A5%F3%A5%B9
16 名前:デフォルトの名無しさん [2006/05/13(土) 20:27:32 ] COMっていうことになるのかなぁ。
17 名前:デフォルトの名無しさん mailto:sage [2006/05/13(土) 21:07:59 ] 正にIEコンポーネントを使い倒せばできるはず。 (倒さなくてもできるとは思うけど)
18 名前:デフォルトの名無しさん [2006/05/13(土) 21:13:36 ] >>12 できます。
19 名前:デフォルトの名無しさん [2006/05/13(土) 22:02:41 ] >>17 >>18 IActiveScript?
20 名前:デフォルトの名無しさん mailto:sage [2006/05/13(土) 22:40:31 ] ちがう
21 名前:デフォルトの名無しさん [2006/05/13(土) 22:45:51 ] 確か、MSDN にそのものずばりの HOWTO があったような記憶が・・・ 今手元に MSDN が無いのでなんとも言えないけど。 WEB 版は、変わっちゃったんだね。
22 名前:19 mailto:sage [2006/05/14(日) 01:22:17 ] MSDNとかざっと見たけど分かんないっす。 www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1371&forum=7
23 名前:デフォルトの名無しさん mailto:sage [2006/05/14(日) 01:57:20 ] >>12 >プロセス内の変数(WinMainとかで宣言した変数)を、 >IEコンポーネントの中のJavaScriptから参照することはできますでしょうか? 横レスですが IHTMLDocument::get_Script()とかいう話ではない? ただ「JavaScriptから変数を参照する」というより アプリ側から引数として渡すような形になるけど 頓珍漢なこといってたらごめん。
24 名前:22 mailto:sage [2006/05/14(日) 08:58:57 ] 22のリンク先はIHTMLDocument::get_Script()で行けるのかも…。 ScriptEngineが取得できれば、IActiveScript->AddNamedItemあたりで アプリ側から名前付きオブジェクトを渡せるから行けるんではと思うけど、 にしても、17,18,20の回答(正解)が気になる…。
25 名前:デフォルトの名無しさん mailto:sage [2006/05/14(日) 22:52:04 ] Win32API質問箱で質問した者ですが、誘導されたので改めて質問させて頂きます。 WinXP SP2のIEで、ダウンロードが自動的に始まるページへ移動すると "セキュリティ保護のため・・・" と表示され、自動的にダウンロードが行われないようになっていますが、 IWebBrowserを使用したIEコンポーネントで同じような機能を実装するには どうすれば良いのでしょうか? よろしくお願いします。
26 名前:デフォルトの名無しさん [2006/05/15(月) 19:41:35 ] たぶんリダイレクトするときにイベントが来るからDWebBrowserEvents2を実装してみる。 あくまでもたぶん。
27 名前:12 mailto:sage [2006/05/15(月) 19:44:44 ] >>16-24 お返事遅れてすいません。 IActiveScript->AddNamedItemで、スクリプトにCでのコード埋め込みができそうですね。 調べる限り、それをやるにはコードが相当複雑そうですが(^^; ありがとうございました。 >>25 あっ、>>836 だ。
28 名前:デフォルトの名無しさん mailto:sage [2006/05/17(水) 18:25:23 ] なんかIE7βにしてからIEコンポーネント使ったソフトの挙動がヘンなんだが。
29 名前:デフォルトの名無しさん mailto:sage [2006/05/17(水) 20:22:50 ] さすがはM$
30 名前:デフォルトの名無しさん mailto:sage [2006/05/17(水) 20:23:33 ] 仕様が変わってるのだから仕様が無い。
31 名前:デフォルトの名無しさん mailto:sage [2006/05/17(水) 22:42:57 ] だれが上手いこと言えとw
32 名前:デフォルトの名無しさん mailto:sage [2006/05/18(木) 12:05:04 ] >>28 IE7b2はデフォルトでローカル(メモリやファイルシステムにある)なhtmlで アクティブスクリプトを有効にしないようになってるからじゃ○マイカ。
33 名前:デフォルトの名無しさん mailto:sage [2006/05/19(金) 02:27:19 ] >>32 そうだったノカー(AA略) サンクスコ!
34 名前:デフォルトの名無しさん mailto:sage [2006/05/21(日) 14:48:53 ] >>32 IE6sp2からそうじゃなかった?
35 名前:デフォルトの名無しさん [2006/06/01(木) 19:54:50 ] age
36 名前:デフォルトの名無しさん mailto:sage [2006/06/02(金) 00:08:11 ] IDispatchってなによですぱっちって。なんなのよーこれなんなのよー
37 名前:デフォルトの名無しさん [2006/06/02(金) 00:20:11 ] >>36 同士よー! IDispatchってなによですぱっちって。なんなのよーこれなんなのよー なんか、クラスインスタンスをクラスで表しちゃったようなインターフェース。って感じだと思う。 っていうか、俺もIDispatchについて聞きたいんだけどここじゃスレ違い?
38 名前:デフォルトの名無しさん [2006/06/02(金) 00:27:50 ] マルチポストになります。ごめんなさい はじめVBで探していたのですが、もっと適切なスレがあったので すいませんが、質問させてください。 サーバと通信するクライアントを作成するのに WebBrowserControl(Maicrosoft Web Browser)(正しくはTridentらしい)を 利用してやり取りしようとしています。 入力したデータをdoPostで送っているだけなのですが、 サーバ側で見るとdoGetとdoPostの両方で来ています。 漏れの認識では少しのデータを送るときdoGet 大量のデータを送るときdoPostをりようしていると思っています。 なんで、doPostだけで送ってくれないのかわかりません。 WebBrowserControlのAPIとかどこかにないでしょうか教えてください。 後、HttpのdoPost、doGetの違いをわかりやすく詳しく説明しているサイト等を 教えていただけないでしょうか?
39 名前:デフォルトの名無しさん mailto:sage [2006/06/02(金) 00:28:27 ] ここに来るぐらいなら言語の1つぐらい持ってるだろ? ヘルプみろよ。
40 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 00:33:54 ] BHOをいじってます。ブラウザのイベントはInvokeで拾えるんですが DISPID_AMBIENT_DLCONTROLの拾い方がわかりません。 IWebBrowser2からIOleClientSiteを得ればよいのかな?
41 名前:40 [2006/06/17(土) 01:33:43 ] 連投すまん。 IEでWordやExcelが開けるんだから、IEもIOleClientSiteを持ってるはずなんだが、 IWebBrowser2からどうやって取得したらよいのかわからない。 IWebBrowser2でQueryInterfaceかましてもNULLだった。
42 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 02:46:29 ] VistaのIE7で仕様かわったっぽい? Navigate2まわりでアクセス違反で落ちるようになった
43 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 10:16:37 ] IOleClientSiteはクライアント側(Word, Excel)が持ってるものじゃないの
44 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 11:21:11 ] IHTMLDocument2で、任意のタグを取得したい場合(例えばmetaタグとか)、 get_allでIHTMLElementCollectionを取得して、一個一個ループでまわしてタグ名を見ていくしかないのでしょうか? IHTMLDocument3にgetElementsByTagNameというものがあったのですが、できればIHTMLDocument3は使いたくないです。
45 名前:40 mailto:sage [2006/06/17(土) 12:45:43 ] >>43 ActiveDocumentを貼り付けられるものは IOleClientSiteを持ってると思うんだけど。 Word、Excelも当然もってるし、IEも持ってるはず。 全部ActiveDocumentを開けるから。
46 名前:44 mailto:sage [2006/06/17(土) 23:31:17 ] >>44 です。get_allしてループでまわすのが面倒だったので質問したのですが、 IHTMLElementCollectionに、itemというメソッドがあって、 タグ名をもとにタグ情報を取得できそうなので解決しそうです。 失礼しました。
47 名前:デフォルトの名無しさん mailto:sage [2006/06/24(土) 18:19:48 ] いつの間にか復活してるじゃないかsage
48 名前:デフォルトの名無しさん mailto:sage [2006/06/24(土) 18:48:01 ] ブラウザイベントをInvokeで拾う方法を教えれ下さい。
49 名前:デフォルトの名無しさん mailto:sage [2006/06/24(土) 19:07:05 ] window.external
50 名前:デフォルトの名無しさん [2006/06/24(土) 22:42:56 ] >>48 DWebBrowserEvents2で色々やってみれ
51 名前:48 mailto:sage [2006/06/24(土) 22:55:43 ] >>49-50 実はHtmlイベントの受信がしたかったわけですが、なんとか接続の確立ができ申した、言葉足らずで失礼。 一ヶ月かかったわ…
52 名前:デフォルトの名無しさん [2006/06/26(月) 13:55:19 ] 接頭語のIってなんなの?Iって。 IEとかIE_とかにしてくれよ。
53 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 14:40:42 ] >>52 InterfaceのIだろ。 MFCなんかでクラス名がCナントカになっているのと同じ。
54 名前:デフォルトの名無しさん [2006/06/26(月) 18:23:46 ] すみません タブブラウザでソースコードを公開している奴って ありますか?
55 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 19:18:45 ] Donut RAPTなどなど
56 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 20:15:00 ] Donut RAPTはHTMLが変に表示される 白抜き文字とかも真っ黒
57 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 23:10:54 ] >>51 IWebBrowserNからDWebBrowserEvents2とか使わず、 IDispatch::Invokeでイベント取得できたってことですか? おしえてホスィ。 DocumentCompleteが通知されてほしい。
58 名前:12 mailto:sage [2006/06/26(月) 23:18:21 ] そういえば、IEコンポーネントのJavaScriptからC++の変数を参照する方法ですが、 IHTMLDocumentのget_Scriptで得たIDispatchからQueryInterfaceで、 IDispatchExを取得してInvokeEx呼び出せばいいみたいです。説明わかりにく。 IEコンポーネントからIActiveScriptを得るのはたぶん無理っぽいです。 IDispatchExからプロパティを追加する方法しかないっぽいです。 参考資料 → www.codeproject.com/com/dispexsinkconnector.asp これ調べるの結構かかったなぁ
59 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 23:22:07 ] IXxxxxx → Interface CXxxxx → Concrete?またはClass? DXxxxx → Dってなによ
60 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 15:42:37 ] >>59 dispinterface
61 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 17:40:40 ] >>59 さすがにコンクリートはないと思うが
62 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 19:56:47 ] CreateWindowExで作ったIEコンポのウィンドウを破棄するときはDestroyWindowでOK?
63 名前:59 mailto:sage [2006/06/27(火) 22:31:58 ] DIXxxxx → Dual Interfacesらしい AfxXxxx → MFCのもの CXxxxxはclassのCっぽいね。
64 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 21:55:54 ] >>62 CreateWindowExってことはATLのIEコンポ? よく調べてないけどDestroyWindowでおk(適当
65 名前:デフォルトの名無しさん [2006/06/29(木) 16:44:23 ] はげ
66 名前:51 mailto:sage [2006/06/30(金) 05:45:25 ] >>57 Htmlイベントじゃなくて、マウスイベントとかだったわ…重ね重ね失礼。
67 名前:57 mailto:sage [2006/06/30(金) 13:15:49 ] >>66 いや、俺がよく見てなかったのが悪かったわ。 >実はHtmlイベントの受信がしたかったわけですが、 と書いてあるのを思いっきり見落としてた。
68 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 01:38:07 ] HTAアプリケーションのselection=noみたいに、 IEコンポーネント内のテキストをマウスカーソルで 選択できなくするような方法をご存知ないでしょうか?
69 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 03:51:40 ] そういうJavaスクリプトを読ませる。 www.iwate-np.co.jp/news/y2006/m07/d02/NippoNews_11.html
70 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 10:32:53 ] >>69 オオオおおお。まさにやりたいことです。ありがとうございます。 document.onmousedown = new Function("return false"); ↑これやったらボタンも押せなくなるのかと思ってましたけどできるんですね
71 名前:デフォルトの名無しさん mailto:sage [2006/07/05(水) 14:24:56 ] window.moveToやwindow.resizeToが呼び出されたことを知る方法ないでしょうか? DWebBrowserEvents2とか見ましたが見当たりませんでした…。
72 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 19:08:31 ] マウスポインタの下にリンクがあった場合、 そのリンクのIHTMLAnchorElementを取得するにはどうすればいいすか?
73 名前:デフォルトの名無しさん [2006/07/10(月) 12:06:11 ] 禿
74 名前:デフォルトの名無しさん [2006/07/14(金) 00:23:42 ] すみません IEコンポーネントでIHTMLDOMNodeを使おうとしたのですが error C2065: 'IHTMLDOMNode' : undeclared identifier と定義不明といわれて怒られます。 MSDNを見る限り、Mshtml.hをインクルードし IE5以上なら使えると書いてあります。 なぜ私の所ではダメなのでしょうか? Windows2000SP6+VisualStudio6.0+IE6です。 よろしくお願いいたします。
75 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 11:39:39 ] VS6.0だと古くてヘッダに定義がないのかも。 実際に俺の環境ではVS.NET2003とVS6.0を入れてるけど、6.0にはIHTMLDOMNodeのクラス定義がないね。 VS6.0の最新のサービスパック入れたらなおるか、.NET買うかしないと。
76 名前:デフォルトの名無しさん [2006/07/14(金) 20:42:38 ] すみません。妥当なスレが分らなかったのでここで質問させてください。 IE7の日本語ベータ3をインストールしたら、InternetOpenUrlにシフトJIS のファイル名を使っているプログラムがエラーを起こすようになりました。 β版だからといえばそれまでですが、何か情報を持ちの方、または 対処方法、ご存知であればお教えください。 補足として、 ・IE6以前とIE7ベータの英語版では問題なかった。 ・IE7日本語β3からアドレスバーにS-JIS日本語名を含むURLを直接入れた場合は読み出せる。 ・InternetOpenUrlでエラーが起きたとき、サーバーのログを見ると、日本語に該当する部分が 著しく欠損した状態(文字化けとか言うレベルじゃなく)でアクセスされている模様…。 よろしくお願い致します。(日本語のUrlを使うなというのは横へ置いておいて…)
77 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 21:06:10 ] 正式版になってから言え
78 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 21:49:35 ] >>76 InternetOpenUrlWだとどうなる?
79 名前:76 mailto:sage [2006/07/14(金) 22:19:03 ] >>78 プログラムがANSIなのでW版はちょっと試していませんが、 ひとまず自分でURLの漢字部分をutf8エンコードして回避しました。 どうもありがとうございました。
80 名前:74 mailto:sage [2006/07/14(金) 22:33:46 ] >75 .NETではIHTMLDOMNodeは使えるみたいですね。 あとVS6.0のSP6をインストールしてみましたが使えませんでした。 やはり.NETを買うしかないみたいですね。 ありがとうございました
81 名前:76 mailto:sage [2006/07/14(金) 22:33:46 ] >>78 W版を試してみたところ、InternetOpenUrlWだと何も考えなく てもうまく行きました。 自分で%E7……て変換しなくてもやってくれるようです。 重ねてありがとうございました。 ……自分で変換したさっきの苦労はorz
82 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 22:56:21 ] 別ドメインのフレームのIHTMLDocument2を取得するにはどうすればよいでしょうか
83 名前:デフォルトの名無しさん [2006/07/15(土) 21:25:02 ] 質問です。 XMLデータをメモリから設定すると、HTMLとして表示されてしまうのですが、 設定するデータの属性を設定する方法があるのでしょうか? 現在は、一度「.xml」な一時ファイルを吐き出してそれを読み込ませる方法にしています。
84 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 22:33:11 ] ちゅんと doctype 付けてる?
85 名前:83 mailto:sage [2006/07/16(日) 05:13:09 ] >>84 つけていませんでした。DOCTYPE見ているのですか。 試してみます。どうもです。
86 名前:デフォルトの名無しさん [2006/07/18(火) 03:06:57 ] 前スレででていたUrlMkSetSessionOptionを使って ユーザエージェントを変更したいのですが、変更されません。 設定するタイミングがあるのかと、いろんな箇所で入れて、 UrlMkGetSessionOptionで取得すると取得される値では変更はされているようでしたが printenv.cgiなどでみると変更されていません。 分かる方いますでしょうか?
87 名前:86 mailto:sage [2006/07/18(火) 03:12:59 ] navigator.userAgentが変更されていました。 UrlMkSetSessionOptionは、Javascriptのnavigator.userAgentを変更する関数で、 HTTPプロトコル上のUser-Agentヘッダーオプションは変更しない・・?
88 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 04:43:57 ] 確認君とかで見ると普通に変更されるよ。
89 名前:86 mailto:sage [2006/07/18(火) 05:21:24 ] >>88 確認君でも見ましたが、変更されていませんでしたが・・・。IE7 XPPro SP2です。 お詳しいようなので、いまさらな質問ですが、 UrlMkSessionOptionは、プログラム内で一度実行したらそれでいいのでしょうか? 実行するタイミング(たとえば、コンポーネントを起動後など)などありますか?
90 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 14:03:25 ] IEコンポーネントを作った後にUrlMkSessionOptionしてるだけだよ。IE6+XPPro ただ、こっちはなぜか実行時1回こっきりしか変えられないんだよなぁ・・・。
91 名前:デフォルトの名無しさん [2006/07/21(金) 03:39:22 ] AxWebBrowserを使用して、画面遷移を自動で行って、処理を行うアプリを 書いているのですが、formのsubmitで、詰まっています。 環境は、XPsp2、IE7β2です。 言語はC#。 ソースはこんな感じ。 IEnumerator forme = myDocument.forms.GetEnumerator(); forme.MoveNext(); mshtml.HTMLFormElement form = (mshtml.HTMLFormElement)forme.Current; form.submit(); nextProcess(); submitを行い、画面遷移が完了したところで、次の処理(nextProcess())を行いたいのですが、 上記の方法では、次の処理が終わってから画面遷移をしてしまいます。 間で form.submit(); while(axWebBrowser1.ReadyState != SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE); nextProcess(); とかしても、ステータス判定のところで無限ループが発生してしまい、お手上げです。 どなたか、ご教示ください・・・。
92 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 11:48:53 ] その nextProcess() をしない場合どうなるの?
93 名前:デフォルトの名無しさん [2006/07/21(金) 20:36:20 ] IEコンポーネントでとあるHPを表示させているのですが、 そのHPの中でFocus()をしていて、そのHPをプログラム側で読み込むと 表示しているアプリを前面に持っていってしまいます。 (何回もそのHPを更新をするのでその都度前面に来るとかなり鬱陶しいです。) 何とかこれを回避したいのですが何か良い方法はありませんでしょうか? Win2000+VC6.0+IE6です。よろしくお願いいたします。
94 名前:デフォルトの名無しさん [2006/07/23(日) 07:46:18 ] >72 IHTMLDocument2::elementFromPoint
95 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 20:58:42 ] IWebBrowser.Navigate2(..)の第一引数にマイコンピュータとかのCLSID ::{20D04FE0-3AEA-1069-A2D8-08002B30309D} を文字列で渡す場合、 IE6(XP sp2) だと正常に動作するのに、IE7(Vista β2)だと 「保護されているメモリに読み取りまたは書き込み操作を行おうとしました……」 ってエラーがでるんですが なんとかなりませんかね?
96 名前:デフォルトの名無しさん [2006/07/24(月) 00:17:00 ] 質問です。 .zipファイル等のリンクをクリックしてダウンロードする際の保存先のパスや、 ファイル名指定ダイアログでキャンセルした等の情報は取れないんでしょうか?
97 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 23:59:32 ] JavaScriptを実行する方法はありませんか? DocumentComplete時に初期設定JavaScriptを実行するようにしたいのです。 >>93 荒業で以下のJavaScriptを実行する手もある。 window.focus = function(){ return false; }
98 名前:97 [2006/07/25(火) 00:00:34 ] 質問なのにsageちゃった。せっかくだからage
99 名前:デフォルトの名無しさん [2006/07/25(火) 01:09:45 ] HtmlElementCollection links = webBrowser1.Document.Links; foreach (HtmlElement link in links) とかやってるのですが、linkのなかに含まれる URLだけを拾うにはどうしたらいいでしょうか? 環境は.net2です。
100 名前:デフォルトの名無しさん mailto:sage [2006/07/25(火) 04:44:03 ] IHTMLAnchorElement get_href
101 名前:デフォルトの名無しさん mailto:sage [2006/07/25(火) 14:17:33 ] >>97 >>58 のリンク先に載ってる。 だけどVC.NET2003だとサンプル動かないし、COMよくわからないから死にそう。
102 名前:97=58 [2006/07/25(火) 15:14:55 ] >>101 >>58 は俺です(笑。 >>58 はJavaScriptのロジックと、C++のロジックを結びつける方法ですね。 >>97 の質問は自作IEコンポでどんなページを開いても、開いた最初にinit.jsなどの初期設定JavaScriptを実行したいのです。 >だけどVC.NET2003だとサンプル動かないし、COMよくわからないから死にそう。 サンプル動かなかった?コンパイルは通るけど、なんか赤ばってんのダイアログがでる、 っていう問題だったらキャンセルだか無視ボタンだかを押し続けたら動いたような気がしたけど。 まあ、サンプル動いてもあのソースめちゃくちゃ長いし複雑だったから解析大変だけどね。 JavaScriptのロジックにC++のロジックを埋め込む方法が知りたいのなら軽く解説しますよ。 >>58 のリンク先にあるイベントを埋め込む方法は最終的にはわからなかったけど。
103 名前:97 [2006/07/25(火) 15:25:15 ] と思ったら簡単に見つかりました。 IHTMLWindow2のexecScript使えばいいのね…。 msdn.microsoft.com/library/default.asp?url=/workshop/browser/mshtml/reference/ifaces/window2/window2.asp www.ultrasync.net/yofune/?Prog%2FWin32%2FIE%A5%B3%A5%F3%A5%DD%A1%BC%A5%CD%A5%F3%A5%C8#rab3bb29
104 名前:99 mailto:sage [2006/07/25(火) 22:44:41 ] >>100 さん レスありがとうございました。 IHTMLDocument2 links = (IHTMLDocument2)webBrowser1.Document.DomDocument; string temp = ""; IHTMLAnchorElement link; foreach (IHTMLElement lin in links.links) { if (lin.tagName.ToLower().Equals("a")) { link = (IHTMLAnchorElement)lin; temp = link.href; } } みたいな感じにしました。
105 名前:93 [2006/07/26(水) 18:39:05 ] >97 レスありがとうございます。 CComQIPtr<IHTMLWindow2> pHW2; pDoc->get_parentWindow(&pHW2); BOOL ret = pHW2->execScript(L"window.focus = function(){ return false; }",L"JavaScript",NULL); こんな感じでJavaScriptを実行してみましたが、ダメでした。 retにS_FALSEが入り失敗します。何かfocusをさせないうまい方法は無いものでしょうか?
106 名前:97 mailto:sage [2006/07/26(水) 23:17:13 ] >>105 execScriptの3番目の引数がNULLでは駄目なのでは? ↓これでどうよ? VARIANT result; VariantInit(&result); BOOL ret = pHW2->execScript(L"window.focus = function(){ return false; }", L"JavaScript", &result); あ、execScriptのサンプルありがとう。
107 名前:97 mailto:sage [2006/07/26(水) 23:19:26 ] >>105 の前にwindow.focus = function(){ return false; } で要求した動作を満たしてる? window.focus()メソッドが完全に無効になっちゃうけど、それでもかまわないの?
108 名前:デフォルトの名無しさん [2006/07/27(木) 23:19:27 ] 質問です やりたい事:Webアプリケーションを自動で操作するスタンドアローンアプリを作りたい 1 フレームがある場合どうすればよい? 2 別ウインドウが開く場合どうする? 3 画面遷移完了はどのイベントを受信することで判る? 4 操作アプリ起動時に、既に開いているIEオブジェクトを取得して操作できる? よろしくです
109 名前:93 [2006/07/27(木) 23:26:31 ] 97さん レスありがとうございます。 >106 3番目をNULLではなく、Variant変数を渡したら retにはS_OKが返ってきました。 しかし、どういうわけかfocusしてしまいます。 >107 取り合えず手詰まり状態なので、何でもやってみようという感じです。 必要なのはHPの中の文字だけなので、HPを表示しているIEコンポは 別Windowにして非表示にしてみたのですが、そのページを再表示すると その非表示のWindowにFocusがあたって、今まで前面にいたWindowの Focusが外れてしまいます。うーむ困ったものです。
110 名前:97 mailto:sage [2006/07/28(金) 00:18:29 ] >>109 再表示した時にもう一度execScript実行してる? ドキュメントを再読み込みしたら、window.focusの中身はまた元々のfocusメソッドに戻ってると思うよ。 DIID_DWebBrowserEvents2のDownloadCompleteイベントを監視して毎回、window.focus無効にしないと駄目だぜよ。 (DocumentCompleteは再読み込みでは発生しないのでDownloadCompleteイベントがいいです)
111 名前:93 [2006/07/28(金) 23:35:16 ] >>110 97さん DownloadCompleteイベント時に常にexecScript()をしてみたのですが ダメでした。やはりfocusがあたってしまいます。 ちょっと思ったのですが、focusはDownload中にScriptとして読み込まれ、 実行されるわけですよね?だからDownloadComplete時にfocusを無効にしても 遅いような気がしてきました。BeforeDownloadですとDocumentが取れないですし、 これから読込むページのfocusを無効にするのは無理なのかな?という気が してきました。 あとDownload前に現在のForegroundのHWNDを保持しておいて、DownloadComplete後 保持したHWNDでSetForegroundWindow()をするという方法も考えたのですが 再読込み時に現在前面にいるWindowのfocusが一瞬外れてしまうので、 余り使いたくないですね。 他に何か良い方法が無いものでしょうか?
112 名前:97 mailto:sage [2006/07/29(土) 00:38:29 ] >>1 >ちょっと思ったのですが、focusはDownload中にScriptとして読み込まれ、 >実行されるわけですよね?だからDownloadComplete時にfocusを無効にしても遅いような気がしてきました。 まぢですか。と思ってやってみたら本当ですね。 私は標準で用意されてるwindowクラスのmoveToやらmoveByなどのメソッド書き換えて、 別の動作にさせたいという要求があったのですが同じ理由で無理そう。 そうなるとちょっと良い方法はわかりません。困りましたw
113 名前:デフォルトの名無しさん mailto:sage [2006/07/31(月) 01:24:46 ] 今まで表示済みのページに対してJavascriptを適用するのに わざわざDocumentのwriteで書き直しを行っていたのですが、 execScriptなんてのがあったのですね。 大変参考になりました、ありがとうございます。>>103 ちなみに、BSTR型は、ただのワイド文字列とは違うので(先頭が文字列長になっています) CComBSTR等で包んであげると良いです。 execScript(CComBSTR("window.focus = function(){ return false; }"),CComBSTR("JavaScript"),NULL);
114 名前:デフォルトの名無しさん [2006/08/02(水) 01:30:29 ] Visual C++で、WebBrowserコントロールを使ってブラウザのようなアプリケーションを作成しています。 作成しようとしているものは、既存のクリック募金のサイトにアクセスして、クリック回数や募金の金額を管理してくれる簡単なアプリです。 対象とするサイトは以下のようなサイトです。 ttp://www.kirin.co.jp/active/env/mizunomegumi/click.html ttp://clickbokin.ekokoro.jp/belmo.html ttp://www.thehungersite.com/cgi-bin/WebObjects/CTDSites クリック時に、WebBrowserコントロールのOnBeforeNavigate2()が呼ばれるサイト では、OnBeforeNavigate2()でフックする方法が使えると思います。 ただ、一番上のキリンのサイトのようにFlashで書かれたサイトでは、クリック時に OnBeforeNavigate2()が呼び出されないようで、クリックを検出する方法を どのようにしたら良いかと悩んでします。 なんか、良いアイディアあるでしょうか? WebBrowserも、HTMLも、Visual C++も、Flashも詳しくないのでどこからてを付けてよいか困っています。 よろしくお願いします。
115 名前:デフォルトの名無しさん mailto:sage [2006/08/02(水) 17:26:00 ] 自分がクリック(に相当する操作)した回数を数えるんだろ?
116 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 00:32:09 ] >114 NavigateComplete2イベントなんてどうでしょう? 以下のサイトにDWebBrowserEvents2のイベント説明が載ってるのでいろいろ試してみては? msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/ifaces/dwebbrowserevents2/dwebbrowserevents2.asp
117 名前:114 [2006/08/04(金) 00:53:49 ] > 116さん 詳しい説明ありがとうございました。 NavigateComplete2も試してみたんですが、クリックした際に呼ばれないようです。 まだ、理解できていないですが、以下の方法で少しチャレンジしてみようと思います。 相談にのっていただいてありがとうございました。 1)Ethrealでパケットキャプチャして調べたところ、通信をしているのでWebBrowserコントロールで 通信しているパケットを取得して判断。 2)下の方法でクリックのイベントが取れるそうなので、そこからがんばる。 support.microsoft.com/kb/246247/
118 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 17:43:06 ] 指定したリンクが未読か既読か区別する方法ってありますか? IHTMLAnchorElementではそのようなメソッドがないようです。。。
119 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 21:08:39 ] >>118 IUrlHistoryStg::QueryUrl
120 名前:デフォルトの名無しさん [2006/08/10(木) 11:11:27 ] BCC(無料)でIEコンポーネントを使いたいのですが どこか参考になるサイト等はありますか?
121 名前:デフォルトの名無しさん [2006/08/10(木) 13:29:45 ] 教えない><
122 名前:デフォルトの名無しさん [2006/08/10(木) 16:24:39 ] マジレス BCCでは使えない VC++にしなさい
123 名前:デフォルトの名無しさん [2006/08/10(木) 16:43:24 ] 無理
124 名前:デフォルトの名無しさん mailto:sage [2006/08/10(木) 17:41:48 ] Visual C++ 2005 Express Edition は?
125 名前:デフォルトの名無しさん [2006/08/11(金) 10:11:58 ] BCCでは無理なようですね ありがとうございました
126 名前:デフォルトの名無しさん mailto:sage [2006/08/11(金) 10:15:09 ] >>125 たぶんこの方法ならできると思う。VC++固有の機能は使っていないはず。 www.adp-gmbh.ch/win/misc/mshtml/HTMLWindow.html ATLのDLLを用意できるのなら、このページの方法が使える。 ただしCComPtr/CComQIPtrなどを使わないように改造する必要があるだろうが。 www.nitoyon.com/vc/tips/ie_component.htm
127 名前:デフォルトの名無しさん mailto:sage [2006/08/12(土) 11:58:06 ] >>126 すごいね。この上のHP。mingwでもできるようだ。BCCでもできるっしょ。 www.adp-gmbh.ch/win/misc/mshtml/MSHTMLTest.zip
128 名前:デフォルトの名無しさん mailto:sage [2006/08/20(日) 19:17:37 ] ページを更新した(更新ボタンを押す or F5を押す) というイベントはどう拾えばよいのでしょう?
129 名前:デフォルトの名無しさん [2006/08/21(月) 00:17:13 ] IEツールバーの製作もここですか? ツールバー上の特定のボタンを押すとポップアップメニューが出てくるように プログラムしたのですが、IEを複数起動した場合、2つ目以降では メニューが出てきません。他にも、IEを複数起動した場合、不安定に なることが多いです。これって何が原因でしょうか。 IEを複数起動すると、ツールバーも複数存在するわけですが OSの内部ではどうやって各ツールバーを扱っているのでしょうか。
130 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 00:35:46 ] >>128 更新ボタンって自分で作ってないの? F5はキー拾えばいいんじゃね? >>129 >IEを複数起動すると、ツールバーも複数存在するわけですが >OSの内部ではどうやって各ツールバーを扱っているのでしょうか。 IEが別プロセスならツールバー間も無関係なはず 別プロセスでも共有しちゃってるような何かリソースがあるんじゃないの 設定ファイルとかレジストリの状態とか
131 名前:128 mailto:sage [2006/08/21(月) 00:45:50 ] >>130 説明不足でした。 自分でIEコンポのインスタンス生成してるんじゃなくBHOをやってます。 なのでInternetExplorerで更新されたことが知りたいんです。 更新だとBeforeNavigateはこないです。
132 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 02:11:02 ] >>131 BHOってのがなんだか知らんが、 DownloadBeginかDownloadCompleteだったら、 location.reload()とかで更新されるたびに毎回通知がきたよ。
133 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 18:43:50 ] >>129 複数のスレッドから呼ばれてもきちんと動作するように作る。
134 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 01:59:13 ] ねーねー、おまいら IE6 と IE7 の違いはどう吸収すんの?
135 名前:七資産 mailto:sage [2006/08/23(水) 02:50:30 ] 気合
136 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 02:53:57 ] 今のところ、Navigateに空文字渡すとエラーが出るようになったくらいしか IE7と6の違いには遭遇してないけど、他にもいろいろあるんだろうな。
137 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 07:34:41 ] 多段タブにできないものかな。
138 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 10:42:28 ] >>135 第二次世界大戦はそれで惨敗した。
139 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 12:18:31 ] 戦後の復興も気合いだということを忘れなく。
140 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 15:24:43 ] >>139 気合はもちろん必要だが、気合だけでは無理、ということをお忘れなく。
141 名前:139 mailto:sage [2006/08/23(水) 23:32:10 ] プログラムは気合いと才能。
142 名前:七資産 mailto:sage [2006/08/24(木) 03:40:09 ] そして徹夜
143 名前:デフォルトの名無しさん mailto:sage [2006/08/24(木) 13:24:33 ] 閃き、発想・・・まぁ才能の一部だなぁ
144 名前:139 mailto:sage [2006/08/24(木) 14:43:03 ] 昼寝して目覚める数分前の夢の中に半分いる状態で、 悩んでいるロジックについて考えると答えが出たりする。 この閃きは、神から授かった才能。
145 名前:デフォルトの名無しさん mailto:sage [2006/08/24(木) 14:49:07 ] はいよかったね。 でもここはここはIEコンポーネントを使い倒すスレだよ。
146 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 19:01:35 ] IDispatchは大体理解したのですが、IDispatchExっていうのはなんなんですか?なんなの?なんなのよー!? マイクロコロヌ >>144 それは、うまく右脳を使える時間帯だな。ハイヤーセルフ(高次元の自分)と呼ばれる奴だ。 今、悩んでいる出来事を書いたメモを枕元において寝るとハイヤーセルフが寝ている間に解決してくれるという。 経営者とかが良くやる手法だとか。人間誰しも持ってる能力だ。 独学で使いこなしているのであれば、なかなか評価できるが。
147 名前:デフォルトの名無しさん mailto:sage [2006/08/28(月) 08:27:51 ] IEコンポを生成したスレッドとは別のスレッドから、 IHTMLDocument2::write呼び出したら、まずいかな? Mutexはったら大丈夫かな?
148 名前:デフォルトの名無しさん mailto:sage [2006/08/28(月) 09:02:21 ] pc8.2ch.net/test/read.cgi/tech/1137771139/102 とかかも
149 名前:147 mailto:sage [2006/08/28(月) 11:53:33 ] つーか実際に呼んだら死んだよ・・・ む〜今までおぼろげな理解で済ませてきたが、 Apartmentとかも勉強せねばならんな。 確かに、そっちのスレッドのがよさげ。
150 名前:デフォルトの名無しさん [2006/09/09(土) 18:32:57 ] 上の方で誰か質問してたけど 結局Reloadを検知するのってどうやんの? 生IEなんだけど。 BeforeNavigate2 はFireされないし wm_commandだとメニューやF5は取れるけど、 更新ボタン押されても分からないよママン
151 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 21:16:01 ] 安全な方法では無理
152 名前:デフォルトの名無しさん [2006/09/10(日) 11:52:41 ] 既成のタブブラウザがあるのですが、 これのaxwebbrowserのプロパティを外からいじる方法ってあるんでしょうか?
153 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 09:36:17 ] 誰か答えてやれよ
154 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 09:43:59 ] 漏れの男汁を飲み干したら答えてやろう。
155 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 10:03:02 ] >>152 タブブラウザの実装による。 COMのインタフェースとして取得できるなら望みはあるけど。 普通はそこまでしてないだろうな。
156 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 16:41:08 ] タブブラウザ側でAPIぐらい用意してるだろ普通。
157 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 17:57:00 ] janeのソース見る限り、外から使える仕組みになってるようには見えないぞw
158 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 02:46:28 ] どこのJaneがタブブラウザかと
159 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 13:59:17 ] すまん。間違えた。ぷにるはSDK公開されたら取得できるかもね
160 名前:128 mailto:sage [2006/09/21(木) 00:37:35 ] >>150 なんか別件で調べてたら偶然みつけた VK_BROWSER_REFRESH とかいうvirtual keyがあるらしい。XP/2000のみ有効らしいが。
161 名前:152 mailto:sage [2006/09/23(土) 23:02:35 ] レスありがとうございます。 とてもマイナーな洋物タブブラウザなので無理そうですね… スクリプトエラーの警告がうざすぎるので消したかったのですが諦めます。
162 名前:デフォルトの名無しさん mailto:sage [2006/10/29(日) 18:23:48 ] IEコンポから呼ばれるイベントは、プログラムのメインスレッドとは違い IEコンポが自分で作ったスレッド上で実行されるんですよね? なのでそのイベント上ではメインスレッドと処理がぶつからないようにすべきなんでしょうか?
163 名前:デフォルトの名無しさん mailto:sage [2006/10/29(日) 18:41:04 ] IEの設定でJavaScriptをOFFにしても、自作プログラムに貼り付けたら普通にJavaScriptが実行された……
164 名前:デフォルトの名無しさん mailto:sage [2006/10/29(日) 19:47:13 ] >>163 自作プログラムの中は舞いコンピュータゾーン扱いされるのでは? 俺の想像だが。
165 名前:デフォルトの名無しさん mailto:sage [2006/10/29(日) 20:12:04 ] なんかのインターフェースで制限つきサイト扱いにできるよ。 OEが使ってるのもそれ
166 名前:デフォルトの名無しさん mailto:sage [2006/11/22(水) 17:06:05 ] IE7ベータのときに日本語を含んだURLのInternetOpenUrlが A版 NG W版 OK だったのが、 A版 OK W版 NG に変わってる(IE6ではどっちもOKだった) MSがもはや何をしたいのか分らん。A版戻したってことは 日本語URL何が何でも排除って方針でもないようだが…。 もう自分で変換することにしたよ(´・ω・`)
167 名前:デフォルトの名無しさん mailto:sage [2006/11/22(水) 17:07:07 ] A版 OK W版 NG ってのは正式版ではってこと
168 名前:デフォルトの名無しさん mailto:sage [2006/11/24(金) 13:30:42 ] >>116 LPWSTR で非 ASCII 文字を含む URL を渡したとき、どういう動作をしてほしいの? UTF-8でエンコードしてURLEscape? 漏れには何を持って「OK」「NG」とするのかもわからない。
169 名前:デフォルトの名無しさん mailto:sage [2006/11/25(土) 10:31:20 ] >>168 166だけど俺に対して書いたんだよね。 >漏れには何を持って「OK」「NG」とするのかもわからない。 内部動作的な詳細は知らないが、IE6状態で動いてたものが IE7を入れると動作が変わるのがNG。 >UTF-8でエンコードして たぶんこれでOKなんだろうが、上に書いたとおりInternetOpenUrl の内部動作の実際は知らないので、「互換性を保ってくれ」というの が要望。 非 ASCII 文字を含む URLを使うなという話もあるかもしれないが、 プログラムのユーザーが何を入れるかは分らないからどうしようも ない。
170 名前:デフォルトの名無しさん mailto:sage [2006/11/25(土) 14:55:35 ] > に変わってる(IE6ではどっちもOKだった) IE6の動作が基準だったらこれはトートロジーで書く意味ないじゃん。 IE6がバグっててIE7でバグが修正されただけかもしれないのに。 どうせバグでもいいから動作変えるなと言うんだろうけど まあIEコンポはSide-by-Sideでないから一理はあるな
171 名前:デフォルトの名無しさん mailto:sage [2006/11/25(土) 15:57:46 ] >IE7でバグが修正されただけかも A版とW版って文字コード以外動作同じだと思ってたんだけど そうじゃない場合もあるのか? 文字コードの変換(A←→W)はAPI使ってる。 IE7で『バグが修正されて』どっちも駄目になるなら まだ整合性も有るように感じるけどね。 >> に変わってる(IE6ではどっちもOKだった) >IE6の動作が基準だったらこれはトートロジーで書く意味ないじゃん。 そう? 166を書いた段階での参考情報として付加したまで。
172 名前:デフォルトの名無しさん mailto:sage [2006/11/25(土) 16:54:53 ] 案外、インターネットオプションの「常にURLをUTF-8で送信する」がオフになっているだけというオチはない?
173 名前:デフォルトの名無しさん mailto:sage [2006/11/25(土) 18:25:22 ] >>172 >URLをUTF-8で送信 言われて、それらしきオプション、ONOFFどちらも試してみた。 けど変わらなかった。そういう問題でも無いみたい。 A版ならチェックがOFFでも日本語URL開ける。
174 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 14:43:35 ] VB2005ではMSChartってインストールされないんでしょうか? もしそうなら、代わりの機能とかどうにかしてMSChartを使うこととかできませんか?
175 名前:174 mailto:sage [2006/12/05(火) 19:15:17 ] VB.NETスレと間違えました。 向こうで質問しなおしてきます。 失礼しました。
176 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 06:12:27 ] 表示したページのWidthやHeightを調べて、スクロールバーが出ないように Windowのサイズを変更したいのですが、WidthやHeightがわかりません。 どのように調べればよいですか?
177 名前:デフォルトの名無しさん [2006/12/10(日) 00:28:13 ] IHTMLDocument2か何かで取れないっけか
178 名前:デフォルトの名無しさん mailto:sage [2006/12/10(日) 04:02:54 ] 取れないよ。自動でレンダリングするからWidth,Heighなんて取っても意味ないんじゃないのかね?
179 名前:デフォルトの名無しさん mailto:sage [2006/12/10(日) 11:38:52 ] >>176 ここはどうすんの? worlds-highest-website.com/
180 名前:デフォルトの名無しさん mailto:sage [2006/12/10(日) 11:51:36 ] 調べたらIWebBrowser2で取ることは出来るっぽいが、>>178 の通りかも知れぬ
181 名前:デフォルトの名無しさん [2006/12/21(木) 01:20:17 ] シェルをC#でいじくってるんですが、 BeforeNavigate2の段階で、 移動しようとしてるフォルダのpIDL取得する方法はないですか? URLじゃなくて。 NavigateCompleteすればShellGetPathで取れるんですが
182 名前:124 mailto:sage [2006/12/26(火) 01:21:39 ] お。こんなスレ出来てたのか・・・ では早速。 Internet Explorer_Hiddenウィンドウの役割と IEのウィンドウで使われる独自メッセージについて調べているのですが、 うまく探せません。 いい情報を見かけた方、お教え下さい。
183 名前:182 mailto:sage [2006/12/26(火) 02:33:11 ] ↑ 124は間違い
184 名前:デフォルトの名無しさん [2007/01/08(月) 19:04:39 ] BeforeNavigate2でPOSTDATA横取りしたいんだけど、ファイルアップロードのタグが あるときにデータが途中で切れちゃうよママン。 まーPostData中に(っていうかアップロードしたファイル中に)NULLが入ってるんだろうけど 正確なPostDataのlengthって取れないのかな?
185 名前:デフォルトの名無しさん [2007/01/08(月) 19:47:02 ] >184 自己解決、というか、KnownBUGだったよ。 support.microsoft.com/kb/890177 GET/POSTのデータ横取用プロキシ作って組み込むか。
186 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 22:32:30 ] IE7だと解決してるのかねぇ
187 名前:デフォルトの名無しさん [2007/01/10(水) 20:07:45 ] 今のさっきまでこのスレ過去スレと思ってた現役だったんですね よろしくオナガイシマス static CComQIPtr< IWebBrowser2 > pWB2; こんな書き方良く見かけるのですがこれはpWB2にIWebBrowser2のポインタを 設定すると考えてよろしか? COMコンポ全然わかんないんでスマソ
188 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 20:08:35 ] スマソあげてもうた
189 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 21:35:02 ] Template
190 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 21:42:23 ] ATL
191 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 22:29:33 ] 187です VS2005なのですが、コンパイラの設定でATLを使用するに設定しないとだめ? それでpWB2の値の意味は何なの?けっきょく
192 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 22:56:31 ] >>191 CComQIPtr< IWebBrowser2 > 型の変数を宣言しただけで、値は設定していない。 C++の基本とVC のCOM向け拡張の両方とが解っていないと、 C++でCOMやるのは難しいと思う。
193 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 23:34:43 ] >>192 サンクス COMとかなるべく関わりたくなかったんだけど、やらなきゃいけない羽目になって 苦しんでいます、pWB2の型は何型になるのでしょうか?
194 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 23:57:13 ] スマートポインタの概念を理解すべし。auto_ptrでぐぐると良い。 CComPtrも基本はauto_ptrと同じだ。要するに解放忘れを防ぐための仕組み。
195 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 00:09:06 ] >>193 pWB2の型はCComQIPtr< IWebBrowser2 >型と何度も(r
196 名前:デフォルトの名無しさん [2007/01/12(金) 01:25:36 ] IEコンポーネントを使っても、 開いてるページに埋まってるFrameの中を見ることは出来ないんですか?
197 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 01:37:57 ] セキュリティに関わるからね
198 名前:デフォルトの名無しさん [2007/01/12(金) 02:02:29 ] やっぱりそうですか。 ありがとうございました。
199 名前:デフォルトの名無しさん [2007/01/12(金) 11:54:54 ] C#でWebBrowserControl経由で使ってると、 IEというかInternet Optionでの設定は反映されるんですが、 独自のProxy指定は出来ないのですか?
200 名前:デフォルトの名無しさん [2007/01/16(火) 13:47:20 ] C#でSHDocVw.dll参照に追加してWebBrowserClass使うとき、 32bit環境だとHWNDプロパティがInt32で返ってくるんだけど、 これって64bitだとどうなってるの? IntPtrで返ってくる? それともInt64?
201 名前:デフォルトの名無しさん [2007/01/21(日) 09:06:26 ] なんかこんなの見つけた。 ttp://www.hannan-u.ac.jp/~ichi/04/hasegawa/zeni.html 今時の卒論ってこんな程度なの?
202 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 09:11:01 ] 学校によるんじゃない?
203 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 11:50:20 ] 卒論wardファイルw
204 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 11:53:39 ] スクリーンショットがDonut RAPTっぽく見えるんだが
205 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 15:01:08 ] 読んでしまった しかしながら現状としては@AB個々のプログラムの方向性は出来上がってきたものの、 個々を関連付けるプログラムの作成には至っておらず、前述されている「タブブラウザ」への 組み込み、動作テスト等もまだ出来ていない状態である。最終的には独立したプログラムと して完成させ、デスクトップ上で起動できる状態を目指していく状態にある。 何もしてねーwwwwww
206 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 00:14:04 ] PCに縁遠い年寄り教授をだまくらかすにはこれで十分なんだろ
207 名前:デフォルトの名無しさん [2007/01/22(月) 00:27:18 ] とってもw ard! 既に社会人で業務としての資料作りも慣れてる俺が言うのもなんだが、 内緒だけどあの程度プレゼン資料なら、前日の夕方から慌てて徹夜でデッチあげたりしてる。
208 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 00:40:35 ] >>207 そうやってでっち上げたんじゃないのw
209 名前:デフォルトの名無しさん [2007/01/22(月) 00:41:28 ] そんな卒論って・・・・・ まぁありかなw
210 名前:デフォルトの名無しさん [2007/01/22(月) 00:50:16 ] 大学がアレなの? それとも学部がヲイなのか? 当然ゼミはヌルポなんだけど、学生はもっとガッされるべき。
211 名前:デフォルトの名無しさん [2007/01/22(月) 01:39:03 ] 阪南大学だってさ。 どこか分からん。国立じゃなさそうだ
212 名前:デフォルトの名無しさん [2007/01/22(月) 01:41:46 ] 4年も大学で学んであの程度ですか、そうですか。
213 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 02:13:40 ] 今日からここは自分の卒論を晒すスレになりました 最初のかたどうぞ ↓
214 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 02:56:21 ] freenetみたいだけど2chネラー向きのファイル共有ソフトの提案
215 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 04:17:50 ] タイーホw
216 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 04:19:11 ] IEコンポーネントの使い方をやさしく指導してくれるサイトや本ってあります?
217 名前:デフォルトの名無しさん [2007/01/22(月) 08:23:35 ] 以下のテンプレに従って質問してください。 【性別】 男/女 【年齢】 実年齢 【居住地】 現在住んでいる所を行政区程度まで 【職業】 ありのままに 【身長】 cm表記で 【体重】 kg表記で正直に 【スリーサイズ】 バスト・ウエスト・ヒップをcm表記で。 【画像URL】 全身ならびに顔写真を100万画素クラスで。 【メールアドレス】 携帯電話もしくは、プロバイダ等のアドレスを。
218 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 08:01:54 ] 相当偏差値低いらしい阪南大学。 学生の質が垣間見えた。
219 名前:デフォルトの名無しさん [2007/01/25(木) 02:20:31 ] はいはい、次の卒論どうぞ。
220 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 18:55:29 ] IHTMLWindow2::execScript で外部からjavascriptを実行できることは わかったのですが、オブジェクト型を引数にとるjavascript関数に 引数を渡して実行することは不可能なのでしょうか (例えばVCから IUnknown* の情報を渡したいとか)。
221 名前:デフォルトの名無しさん [2007/01/26(金) 20:40:08 ] >>199 今更だけどなんか見つけたよ。 isawseashell.blogspot.com/2007/01/via-proxy.html
222 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 02:14:46 ] >>199 私も>>221 のリンク先とと同じくUrlMkSetSessionOptionに INTERNET_OPTION_PROXYを渡して実現してた。 問題なく動作するはず。
223 名前:デフォルトの名無しさん [2007/01/27(土) 20:53:20 ] System.Windows.Forms.Webbrowser を使ってる者ですが、 これを使って表示している場所から、別のリンク先をクリックした際に、 何を送信しているか補足する場所ってありますでしょうか? Navigatingメソッドでは何もつかめなさそうですし。 画面上のHTMLソースだけではなく、HTMLヘッダーだけではなく、ファイルに書き出していない メモリ上のクッキーの値もみたいのですが 知ってる方、よろしくお願いします。 環境 XP64 VS2005 C#
224 名前:デフォルトの名無しさん [2007/02/02(金) 22:55:44 ] すみません javaScriptでIEコンポ内の ページを閉じるのを感知したいのですが なにか方法あります?
225 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 23:03:59 ] フォースを使え
226 名前:デフォルトの名無しさん [2007/02/08(木) 19:13:13 ] htmlをブラウザに表示する前段階でhtmlを改変したいんです。 イメージとしてはプロキシサーバとかポップアップブロックみたいな感じ。 つまり間に一つ噛ましたいわけです。 どうしたらいいか教えてください。環境VC++
227 名前:デフォルトの名無しさん [2007/02/08(木) 19:30:14 ] >>226 Proxyを間に入れれば?
228 名前:デフォルトの名無しさん [2007/02/08(木) 20:01:07 ] >>227 そうしてみます。どうもでした。
229 名前:デフォルトの名無しさん [2007/02/08(木) 21:38:06 ] 自プロセス・別スレッドでProxyって感じの実装を今試してるよ。 C#だけど。
230 名前:デフォルトの名無しさん [2007/02/08(木) 23:02:14 ] WebBrowserClassとかHTMLDocumentClassとかで IEの表示文字サイズがなんになってるかとか 調べられないかな・・ どうやったら 調べられるか誰か教えてくれ・・・・
231 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 23:15:05 ] >>230 いわゆる最大〜最小の文字サイズ? それは初歩だと思うけど、「ExecWB OLECMDID_ZOOM」辺りでググれ。
232 名前:デフォルトの名無しさん [2007/02/09(金) 01:14:24 ] 人の卒論って面白いね^^
233 名前:デフォルトの名無しさん [2007/02/16(金) 14:31:51 ] >>232 面白いってか、あれって卒論ってレベルじゃねーぞ。 なんか講義一回分の資料って感じじゃね? 街のパソコン教室って感じで、大学でやられても困るけど。
234 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 14:05:15 ] スクリプトエラーのダイアログを非表示にしたいのですが、 Sleipnirのこれ www.sleipnir-wiki.jp/original_index.php?FAQ#rbe2449f はどういう実装になっているのでしょうか?
235 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 19:36:43 ] IOleCommandTarget::ExecでOLECMDID_SHOWSCRIPTERRORを握りつぶす Sleipnirの実装は知らんが、DonutRAPTのソースを落としてきて AtlhostEx.h,ScriptErrorCommandTargetImpl.h,DialogKiller.h辺りを眺めてみればいいと思う。 対象言語がC++以外の場合は知らん。
236 名前:234 mailto:sage [2007/02/21(水) 21:27:42 ] >>235 今からダウンしてくる。 thx!
237 名前:デフォルトの名無しさん [2007/03/15(木) 18:12:34 ] IEオブジェクトを使用しあるページを表示し、 ボタンを押して、次のページに移動するプログラムを書いております。 dim wbrowser as object Set wBrowser = CreateObject("InternetExplorer.Application") wBrowser.all.Item(11).Click ここで、 メッセージボックスが表示され「はい・キャンセル」を選択しなければなりません エンターをSendkeysでよいのですが sendkeys "{Enter}" と記載しても、その前にIEオブジェクトに制御が移動するようで、できません 何方か解決策がありましたらお教え下しさい
238 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 06:03:52 ] プロセスもういっこ作ってそこで制御
239 名前:237 mailto:sage [2007/03/17(土) 13:10:46 ] >>238 237は 某掲示板で非同期でよる方法で解決しました。 wBrowser.Document.Script.setTimeout "javascript:document.all.item(11).click()",1000 >プロセスもういっこ作ってそこで制御 そのやり方がいまいちよくわからないので・・・・ リンクが、下記のようにJavaで_blankの指定があるようで勝手にIEが表示されます <a href="javascript:void(0);" onclick="doOpen5('hogehoge')"> これをIEオブジェクトで何とかしたいのですが、よろしければお教えくださいm(__)m
240 名前:IE7入手先 mailto:hage [2007/03/17(土) 16:46:25 ] MSN版IE7 promotion.msn.co.jp/ie7/ download.msn.co.jp/download.aspx/sid=I7bzPs2A/ie7setup.exe Yahoo版IE7 recommend.yahoo.co.jp/ie7/campaign/index.html recommend.yahoo.co.jp/ie7/index.html a109.g.akamai.net/7/109/31749/000/downloads.yahoo.co.jp/browser/ie/7/IE7Setup.exe Google版IE7 www.google.com/toolbar/ie7/intl/ja/ dl.google.com/toolbar/data/ie7/IE7Setup_G_JP.exe
241 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 22:04:58 ] テレビ番組の番組表なんですけど その日によってURLが変わるんですけど これをお気に入りにできませんか? スクリプトのようなお気に入りってできます? ローカルHTMLを経由してやるのは簡単ですが ちょっと醜いやり方のような・・・
242 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 02:13:04 ] IEコンポーネントに関係あるかなぁそれ。 日付に合わせてURLを作成して移動するbookmarklet作ればいいんでない?
243 名前:241 mailto:sage [2007/03/25(日) 09:45:27 ] THX! javascript:ってやつですね? IE特有の機能で、多分スクリプトに関係しているので ここか、と思いました。 普通のHTML内のスクリプトとはちょっと違いますし・・・ (上述のローカルHTMLならそうかも) ちなみにここってBHOとかは作らないんですか? どうもありがとうございました。
244 名前:243 mailto:sage [2007/03/31(土) 00:23:07 ] ええともはやスレ違いなので質問という訳ではなく 独り言なのですが・・・ ブックマークレットってローカルファイルを表示中のIEからは スクリプトブロックされて動かないみたいですね・・・ (XP SP2以前は動いたような?) というかこういうのってどのスレに行けばいいのだろうか? WSHでもHTAでもHTMLでもないし・・・
245 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 00:28:43 ] >>244 Web制作板だっけ? そんな板があったハズ。
246 名前:244 mailto:sage [2007/03/31(土) 16:48:21 ] すいません・・・何度も・・・ 以前にもWeb制作板内を探したんですが やはりWebサイトを作る、という方向性で IE依存のスクリプトやIE固有の機能に関しては あまり積極的ではないような・・・? スクリプトの場合、こことかはいいのかな、とも思うんですが・・・ ttp://pc11.2ch.net/test/read.cgi/hp/1070611524/ どうも度々すみませんでした
247 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 20:44:26 ] 質問です。 Private Sub currentWebBrowser_documentComplete(ByVal obj As Object, ByVal e As AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent) Dim doc As mshtml.IHTMLDocument2 = CType(currentWebBrowser.Document, mshtml.IHTMLDocument2) Dim anchors As mshtml.IHTMLElementCollection = doc.anchors For Each elem As mshtml.IHTMLElement2 In anchors Dim htmlevents As mshtml.HTMLAnchorEvents2_Event = CType(elem, mshtml.HTMLAnchorEvents2_Event) AddHandler htmlevents.onclick, AddressOf anchor_onclick Next End Sub こんな感じで、アンカー要素のクリックイベントにanchor_onclickメソッドを関連付けたいのですが、 イベントが返ってこない?ようです。他の要素をHTMLElementEvent2_Eventにキャストして、 同じようにイベントを設定した場合は普通に動きます。どうすればいいでしょうか?
248 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 20:00:14 ] 他と全く同じようにしてムリならばムリなんだろう
249 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 18:34:24 ] 選択範囲の座標を得る方法を教えて下さい。 IHTMLTxtRange 辺りかな?と思ったのですが、分かりませんでした。
250 名前:デフォルトの名無しさん [2007/04/18(水) 22:08:02 ] このスレってまだ生きていますよね。 IEコンポ使ってhtmlの表示を行っている途中で ある特定の<img src="xxx">が出現したら、その画像を置き換えたいのですが やり方がどうもわかりません。 htmlを書き換えて一時ファイルを作成してとかではなく、メモリストリームとかで処理したいのですが ヒントとか、解説があるサイトとかあれば教えてください。
251 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:17:48 ] tvde.web.infoseek.co.jp/cgi-bin/jlab-dat/s/23689.jpg やだやだ…そんなところ舐めないでよぉ
252 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 05:58:23 ] >>250 馬鹿のスクリプト厨で当然.NETもよく知らない俺ですが ActiveXならbody.onloadのタイミングとかで document.imagesを調べる、というのでは駄目でしょうか?
253 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 07:05:59 ] >>249 馬鹿のスクリプト厨です IWebBrowser2::get_Document -> IDispatch::QueryInterface(IID_IHTMLDocument2) -> IHTMLDocument2::get_selection -> IHTMLSelectionObject::createRange -> IDispatch::QueryInterface(IID_IHTMLTxtRange) -> IHTMLTxtRange::get_text で、できました。スクリプトの場合と殆ど同じですね
254 名前:249 mailto:sage [2007/04/20(金) 08:23:56 ] >253 どうもありがとうございます。 ただ、IHTMLTxtRange::get_textって、選択された文字列そのものですよね? あいうえお ~~~~~~ ↑ここが選択されている場合、「いうえ」が納まっている。 私が欲しいのは文字列そのものではなく、その選択されている範囲座標なんです。 例えば、xy座標で、左上が10:10、右下が20:60 みたいな。 要は、マウスでクリックした座標が、選択範囲内か、そこから外れた位置なのか? を知りたいわけです。
255 名前:253 mailto:sage [2007/04/20(金) 21:54:40 ] >>254 おおこれは大変勘違いしました。お恥ずかしい・・・ どうも申し訳ございません。忘れてください・・・
256 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 14:59:24 ] 選択されていれば範囲内 選択されていなければ範囲外
257 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 21:41:12 ] IHTMLDocumentから何とかIWebBrowserを取得する事ってできないですかね?
258 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 22:25:34 ] 「IHTMLDocument2からIWebBrowser2を取得する」なら 「ウインドウハンドルからIWebBrowser2を取得したい」で ぐぐって出てくるコードに該当個所がある。
259 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 16:36:45 ] 250とかぶるけど、特定のURLへのリクエストを別のURLにリダイレクトしたい。 Navigate()再発行とかするとimg srcでうまくいかないからダメ。 OnBeforeNavigate2とかのタイミングで、URLをコッソリ書き換えることが出来ればいいんだが。 IInternetProtocolImplとかそのあたりを実装するんじゃまいかと思ってるんだが、誰か知らない?
260 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 18:45:00 ] 知らんけどイベントハンドラ実装した?
261 名前:259 mailto:sage [2007/05/17(木) 18:56:01 ] >>260 OnBeforeNavigateイベントでURLを取得は出来るが、LPCTSTRなので書き換えは出来ない。 たぶんイベントじゃないと思うんだよね。PassthroughAPPとかそのあたりのヨカン。 ドキュメントが少なすぎてわからん。
262 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 20:24:06 ] OnBeforeNavigateでキャンセルしてNavigateじゃだめなん?
263 名前:259 mailto:sage [2007/05/18(金) 11:49:16 ] >>262 それだと<img src=""> のときに画像表示がキャンセルされてページが遷移しちゃうからダメ。
264 名前:259 mailto:sage [2007/05/18(金) 12:10:07 ] 説明が足りないみたいなのでもう一回。 ある書き換え不能なサイトのHTMLに、存在しないサーバへの画像リンクが多数埋め込まれている。 オレは本当の画像の所在を知っているので、問い合わせ先サーバ名をこっそり差し替え、存在しないサーバが存在するかのようにレンダリングしたい。 プロセス外に影響がないようにしたいので、etc/hosts をいじるとかはしたくない。
265 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 15:31:59 ] オミトロンを使えばいいような気がする
266 名前:259 mailto:sage [2007/05/18(金) 18:37:59 ] >> 265 あーほんとだー できそうだー
267 名前: ◆PAa2MRiwDQ mailto:sage [2007/05/28(月) 16:12:55 ] お世話になります。IEコンポーネントを使う練習をしていまして、 以下のようなコードを書きましたが、どうしても画像のダウンロードをコントロールできません。 そもそも、Invokeが呼び出されません。どこが間違っているのでしょうか? VS2005です。 class CAmbientDispatch : public CComObjectRoot, public IDispatchImpl<IDispatch> { public: BEGIN_COM_MAP(CAmbientDispatch) COM_INTERFACE_ENTRY(IUnknown) COM_INTERFACE_ENTRY(IDispatch) END_COM_MAP() STDMETHOD(Invoke)(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pdispparams, VARIANT* pvarResult, EXCEPINFO* pexcepinfo, UINT* puArgErr) { if (dispidMember == DISPID_AMBIENT_DLCONTROL) { V_VT(pvarResult) = VT_I4; V_I4(pvarResult) = DLCTL_DOWNLOADONLY | DLCTL_NO_SCRIPTS | DLCTL_NO_JAVA | DLCTL_NO_DLACTIVEXCTLS | DLCTL_NO_RUNACTIVEXCTLS; } return S_OK; } }; CComObject<CAmbientDispatch> ad;
268 名前: ◆PAa2MRiwDQ mailto:sage [2007/05/28(月) 16:14:54 ] CAxWindow ie; ie.Create(*this, rect, _T("Shell.Explorer"), WS_CHILD|WS_VISIBLE); CComPtr<IAxWinAmbientDispatchEx> adex; ie.QueryHost(&adex); adex->SetAmbientDispatch(&ad); CComPtr<IWebBrowser2> wb2; ie.QueryControl(&wb2); CComQIPtr<IOleControl> poc(wb2); poc->OnAmbientPropertyChange(DISPID_AMBIENT_DLCONTROL);
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 ] いくら考えても解決出来ません。 お願いします。 解決方法を教えて下さい。
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 だったら具体的なやり方書いてよ、天才プログラマーさん。
405 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 23:36:14 ] >>404 指定座標位置付近の文字をカーソルで選択して その選択文字列を読み取ればいい。
406 名前:403 [2007/12/20(木) 23:50:21 ] >>404 君はボンクラ 私は天才プログラマー ということでいいかね。
407 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 03:13:15 ] いいえ
408 名前:デフォルトの名無しさん [2007/12/21(金) 08:06:24 ] deftv.atspace.com/?X&1255970&0414@TestX1TV deftv.atspace.com/?X&1255970&0414?X&1255970&0414@TestX2TV deftv.atspace.com/?X&1255970&0414?X&1255970&0414?X&1255970&0414@TestX3TV
409 名前:デフォルトの名無しさん [2007/12/21(金) 08:07:35 ] Vista IE 7.0.6 Vista Grani 3.1 Vista Sleipnir 2.6.1 Vista Firefox 2.0.0.11 Vista Opera 9.24 Vista Safari 3.0.4
410 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 08:47:06 ] >>405 その指定座標付近の文字を選択ってのはどうやるんだ。 選択時のマウス動作をエミュレートすんのか。
411 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 12:28:59 ] >>408 精神的ブラクラ
412 名前:401 mailto:sage [2007/12/21(金) 12:50:22 ] みなさん、ありがとうございます。やっぱりちょいと難しそうですね。
413 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 13:07:00 ] >>410 カーソルで選択ってものすごい基本的なWindowsAPIじゃん。ウインドウズのプログラマなら誰でも知っているだろ。 マウス動作をエミュレートって・・・アフォカ
414 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 15:31:56 ] >>413 おお?それはテキスト入力にフォーカス当たった状態のこといってんの? そうじゃなくブラウザ上のふつうのテキスト部分の話とおもったんだが。 それもできるんか。
415 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 16:02:58 ] >>414 基本的なことをまったく理解していないな。ブラウザ上で普通に範囲選択してCtrl+Cあるいは、右クリックでコピーが実行できるじゃん。 それをプログラム的に実行するだけ。
416 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 16:05:02 ] >>415 ぜひ、そのコードを教えてください
417 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 21:19:44 ] これでWM_COPYとか言ってきたらズゴーなんだが。
418 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 23:05:37 ] JavaScript技でそんなのがあったな。Selectionオブジェクトだかを作って その占有領域の座標を取って処理するの。座標から近傍文字、の逆バージョンだけど、 ユーザーが選択操作してなくてもできてたので、この応用でなんとかならないかな?
419 名前:デフォルトの名無しさん [2007/12/21(金) 23:42:10 ] deftv.atspace.com/?V&v1656980d4H5CXht&0256@HiSpeedVision
420 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 23:46:50 ] >>415 いやだから、もっと具体的なコードかけよ、そこまでいうなら。 マウスエミュレートもプゲラって言った以上、それもしないコードだぞ? まず選択するためには、選択始点のテキストがどの座標に存在するか取得しないといかん。 ってかこの時点でこの件は目標は達成なんだが。
421 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 10:05:19 ] IHTMLElement から、実際の描画に使われてるフォントの種類やサイズを 調べるにはどうしたらいいですか? style とか見ても null なんですが、 他にどこを見ればよいものやら。
422 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 13:10:50 ] いまだに>>378 が分からないのですが・・・ pWB2->put_Visible(VARIANT_FALSE); では音は消えませんでした。もう少し詳しく教えて頂けませんか?
423 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:22:27 ] サムネイルのような画像を、そのリンク名と関連付けしてデータベース化したいと思っています。 表示中のサムネイル画像ファイルをキャッシュフォルダから拾う方法はあるでしょうか。 キャッシュフォルダには別名で格納されているようで、特定する方法が分かりませんでした。 作成日やサイズで特定しようにも、確実とは行きません。 直接GETする以外で何か良い方法をご存知の方、ご教示いただければと思います。
424 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 19:10:19 ] WinInet経由でいいなら、GetUrlCacheEntryInfoでキャッシュの情報が取れる。
425 名前:423 mailto:sage [2008/01/09(水) 09:59:39 ] >>424 これで何とかなりそうです。 すばらしい情報をありがとうございました。
426 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:43:43 ] プロキシ設定を自分のIEコンポーネントだけ別にすることはできますか? InternetSetOption(NULL,.... )だとシステム全体に影響が及んでしまうので、 hInternetを指定して制限をかければいいのだと思いますが コンポーネントが利用中のhInternetを知る方法が無いので困っています
427 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:45:46 ] >>426 私のソースにはこんなのがありました: UrlMkSetSessionOption(INTERNET_OPTION_PROXY, pInfo,sizeof(INTERNET_PROXY_INFO),0); これで動いてたような気がするけど、何年も前のブツなので要検証。
428 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 15:01:00 ] IEコンポーネントを表示せずに、NavigateやDownloadCompleteを使って、 データの取得を行うことは可能なのでしょうか?
429 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 15:27:09 ] 可能です
430 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 15:33:44 ] どうも有り難うございます。 う〜ん、すると、Windowsサービス化も可能なんでしょうか? System.Windows.Forms派生のクラスをnewした時点で、 変なことになっちゃうんでしょうか? Windowsサービスは作ったことないので想像もつかないのですが、 通常、UIはサービスを持てないのですよね? デスクトップとの対話をサービスに許可、とか設定せずに、 普通のデーモン的なデータ取得を行えると、だいぶ方向性が広がるのですが。
431 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 15:36:02 ] ううっ、下記の部分、逆でした。 >通常、UIはサービスを持てないのですよね? Windowsサービスは、普通はUIを持てないのですよね。 ユーザがログインしない状況でも、IEコンポーネントでデータ取得を 行えると嬉しいのですが。
432 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 21:18:39 ] それはIEコンポでなければならないのか?
433 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 09:07:26 ] う〜ん、取得したDOMを操作して、色々処理するので、 結局、何らかのブラウザエンジンは必要になるのです。 まぁ、ゲッコーとかに乗り換えるっていう手はあるのでしょうが、 IEコンポーネントを頑張って使い続けるか、 オープンソースのブラウザエンジンから不要なところをばっさり切って 使うかは、今後の大きな課題にはなるのですが‥‥。
434 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:48:48 ] >>430 そういうことは、人に聞くより自分で試したほうが早いぞ。
435 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 12:12:52 ] 質問があります IEではTAB、SHIFT+TABキーでフォーカスの移動が行われますが、 これを外部から行うにはどうすればいいでしょうか TABキーイベントを送る、というのはナシの方向で・・・
436 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:45:22 ] SetFocus
437 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 03:11:38 ] IEのフォーム部品はウィンドウを持ってないからSetFocusは役に立たない
438 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 04:34:22 ] IHTMLDocument2::all、 IHTMLDocument2::activeElement、 IHTMLElement2::focus
439 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 10:06:41 ] >126-127 面白そうだと思ってMinGW入れてやってみた。 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 g++ -Wall -c MSHTMLTest.cpp -o MSHTMLTest.o In file included from MSHTMLTest.cpp:2: HTMLWindow.h:7:22: mshtmhst.h: No such file or directory In file included from MSHTMLTest.cpp:2: HTMLWindow.h:73: error: ISO C++ forbids declaration of `IDocHostUIHandler' with no type HTMLWindow.h:73: error: expected `;' before '*' token K:\WINLCC\BIN\MAKE.EXE: Error code 1 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 ……人の作ったソースをmakeするのって、ほんと難しいよな。
440 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 10:16:03 ] えーと、要するにmshtmhst.hが無いわけだ。 >127のアーカイブと、MinGWのincludeフォルダの中には無し。 何故かBCCのincludeにあったやつを突っ込んで再度make。 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 g++ -Wall -c MSHTMLTest.cpp -o MSHTMLTest.o g++ -Wall -c HTMLWindow.cpp -o HTMLWindow.o g++ -Wall -c OleClientSite.cpp -o OleClientSite.o g++ -Wall -c OleInPlaceSite.cpp -o OleInPlaceSite.o g++ -Wall -c DocHostUiHandler.cpp -o DocHostUiHandler.o DocHostUiHandler.cpp: In member function `virtual HRESULT DocHostUiHandler::GetHostInfo(DOCHOSTUIINFO*)': DocHostUiHandler.cpp:109: error: `DOCHOSTUIFLAG_NO3DOUTERBORDER' was not declared in this scope DocHostUiHandler.cpp:109: warning: unused variable 'DOCHOSTUIFLAG_NO3DOUTERBORDER' K:\WINLCC\BIN\MAKE.EXE: Error code 1 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 順調かと思ったら、何だこれは…
441 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 10:16:18 ] >>436-438 ありがとうございます! 試してみます! ダイアログのように一発でやる方法があるかとさがしておりました!
442 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 10:30:21 ] "DOCHOSTUIFLAG_NO3DOUTERBORDER" が定義されていない… mshtmhst.h内で定義されてるはずのものなのか、それ以外のどこかなのかは 判らんが、とにかく無い。
443 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 10:47:47 ] うちのMsHtmHst.hタンには定義されてるよ
444 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 10:49:20 ] よし、Platform SDK落として、中のmshtmhst.hをMinGWのincludeに突っ込んだら出来た。
445 名前:デフォルトの名無しさん [2008/01/23(水) 23:59:25 ] すみません教えてください 取得したpElementがインラインフレームか 普通のフレームかを判定したいのですが 良い方法はあります?
446 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:28:36 ] tagName見るなりIHTMLIFrameElement取得してみるなりでいいんじゃね
447 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:07:54 ] >>446 ありがとうございます これをヒントに調べてみます
448 名前:デフォルトの名無しさん [2008/01/31(木) 10:55:56 ] ho
449 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 13:00:15 ] IInternetProtocol::Start()でゴニョゴニョするコードを書いているんだが、 呼び出し元のIWebBrowser2を取得することって出来ないのかな。 複数ウィンドウのブラウザで、IWebBrowser2が複数存在しているので、 グローバル変数では解決出来ない。 スレッドが分かれているわけでもないのでTLSでも解決できない。
450 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 16:02:17 ] >>449 IWindowForBindingUIでググれ
451 名前:デフォルトの名無しさん [2008/02/09(土) 01:17:35 ] すみません 教えてください 過去ログで見た気もしますが 見つけられなくて・・・ get_innerHTMLでHTMLソースを取った場合はIEが有る程度整形して ますが これを メニュー → 表示 → ソースで 表示されるようにオリジナルの大文字・小文字もある状態で 取りたいのですが可能でしょうか?
452 名前:デフォルトの名無しさん [2008/02/09(土) 02:09:13 ] kanou
453 名前:451 mailto:sage [2008/02/09(土) 02:27:55 ] >>452 すみません 困っています もし よろしければ教えていただけないでしょうか?
454 名前:デフォルトの名無しさん [2008/02/09(土) 23:24:16 ] MFCでURLジャンプ時のスクリプトエラー非表示はどうすればいいですか? IOleCommandTarget::Execで OLECMDID_SHOWSCRIPTERRORを使うのでしたら、 どのように使うのか教えていただきたいです。 【関連事項】 AtlhostEx.h ScriptErrorCommandTargetImpl.h DialogKiller.h
455 名前:デフォルトの名無しさん mailto:age [2008/02/10(日) 00:54:23 ] 今日のメニューについて zoomtv.atspace.com/?G&1zbuh@HiSpeedVision
456 名前:デフォルトの名無しさん [2008/02/12(火) 13:40:22 ] CreateWindow("AtlAxWin", "Shell.Explorer.2"・・・ としたときにsubmitやクリックできますか
457 名前:デフォルトの名無しさん [2008/02/27(水) 13:53:42 ] IE7になってマウスの真ん中ボタンで新しいウインドウで 開くようになったんですが、IEコンポーネントを使った あぷりでは、これは自分で書くしかないんでしょうか? それとも簡単に有効にする方法があるんですか? 知っている方いましたら教えてください。
458 名前:デフォルトの名無しさん [2008/02/27(水) 14:41:58 ] IEはIEコンポーネントを使ってるだけで、 真ん中ボタンクリックで新規ウィンドウはIEに実装されただけのもの。 IEコンポーネント自体にそういう機能があるわけではない。
459 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 14:48:16 ] >>458 ありがとう。 ということは自分でやるしかないんですね。 かなり大変そうですけど・・
460 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 15:53:19 ] >>459 おいおい、ボタン押してウィンドウ開くなんて大した手間じゃないだろう
461 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 17:46:36 ] >>456 AtlAxGetControl AtlAxGetHost >>460 新しいウィンドウで開くとなると結構処理が必要じゃない?
462 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 11:28:49 ] 大抵のダブブラウザは実装してる
463 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 04:18:40 ] ATL使わずにIWebBrowser2のイベントを取得したいんだけど、 どういうコード書けばいいのか参考になるサイトとかないですか 探し方が悪いのかATLなコードしか見つからないんです。
464 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 04:27:15 ] そんな事できるのか・・・
465 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 05:01:32 ] >>463 DWebBrowserEvents2のこと? だったら普通にOLEコントロール扱うようにすればいけるんじゃね? まあMFCとかATLとか使わずにやろうとすると死ぬほど面倒らしいが。
466 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 06:19:08 ] >>465 うん、DWebBrowserEvents2。 WindowsMobile版のIEコンポーネントを使ってるんだけど、 ATLでの実装がコンパイル通らなくて、 ATLなしでの実装にするか・・・?ってとこにたどり着いたとこ。 死ぬほど面倒ならATLが通る方法調べるほうが楽かなぁ。。
467 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 06:20:39 ] コンパイラはなに?
468 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 06:29:49 ] VS2005Pro、C++でやってる
469 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 08:03:29 ] コンパイルエラーの内容を書いた方がいいのでは。 あと接続ポイント周りをちゃんと理解すると光が見えるかも。
470 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 10:10:11 ] >>466 Essential COMに載ってるよ。ネストクラスしたりとかなり面倒だったけど ATLなし(Win32SDKのみ)でイベント取得までは確認できた。
471 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 10:50:34 ] VC++あるなら、CHtmlViewのソースでも見るとか。CHtmlViewが使えるならそれ使うに越したことはないと思うが。
472 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 02:59:40 ] IEコンポーネントのJavaScriptを一括で 無効にする方法ってありますか?
473 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 22:50:05 ] あるんじゃないの? 俺はやったことないけど、使っているブラウザ (Donut RAPT)が ボタン1つでオンオフできる機能を持っている。
474 名前:デフォルトの名無しさん [2008/04/24(木) 20:30:33 ] 表示してるページで右クリックメニューに追加した「irvineにすべてのURLを送る」みたいのを 自動で実行するのはどうしたらできますか?
475 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 02:08:05 ] MFCで組んでるんですが、いろんなサイトを見ていくと使用メモリが増える一方。 メモリリークしていると思ったほうがいいのでしょうか? それとも履歴蓄積によるものと考えてしまっていいのでしょうか?
476 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 02:28:31 ] >>475 メモリリークっていうか、開放し忘れじゃね? よくあるみたいだよ。
477 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 03:49:52 ] IEコンポーネントを使うとそうなるって問題もあったはず。 一旦アプリを最小化すると開放されたようになる。 本当にリークしてるのか、本当に開放されてるのか、分からないけどね。
478 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 12:15:51 ] >>477 最小化すると減るのはワーキングセットの量。
479 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 08:38:59 ] タスクマネージャーとかで見る使用メモリが増えていくからといって メモリリークしてるとは限らない。 ttp://kkkon.hp.infoseek.co.jp/tips/MFC/MemoryLeak.shtml この辺参考にしてみるといいかもね。
480 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 17:50:12 ] なんかFlash関係が動かなかったりするね。
481 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 19:30:41 ] IEコンポーネントでページを開くときに、ソケットで別の端末にページのURLを送って 同じページを開かせるようなプログラムを作ったんですけど CComQIPtr<IWebBrowser2> pWB2 pWB2->Navigate2(メッセージで送られたURL) としてURLにジャンプしようとすると、 「"URL"が見つかりません。パスまたはインターネットアドレスが正しいかどうかを確認してください。」 というメッセージボックスが表示され、メッセージ受信側のクライアントはURLにジャンプできません。 IEコンポーネントで表示させた、そのURLのハイパーリンクを直接クリックした時や 直接IEを起動してアドレス直打ちをした場合、正しくページに飛ぶことが出来ました。 また、メッセージ受信側がIE7を入れている場合ではジャンプできない現象が起きましたが IE6を入れているPCで試したところ、メッセージ受信側もジャンプすることが出来ました。 IE7になってからNavigate2周りで何か変更があったのでしょうか。 おとなしくIE6に戻るしかありませんか?
482 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 02:27:06 ] IEコンポーネントでHTML内に記述されたJavascriptの関数を実行したいのですが、 可能でしょうか?HTMLは自分で用意したものです。
483 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 20:27:54 ] >>482 できるよ。 スクリプトを動的に追加することができるから追加したコードで静的なコードを実行すればいい。 HTMLを自分で用意するんだったらIEコンポーネントでやる用途が想像できないけど?
484 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 04:39:22 ] >>483 homepage3.nifty.com/LILILIN/HOWTO/activex_javascript.htm このページの情報を参考にして実装する事ができました。 では逆にHTML側から、ブラウザ(アプリケーション)の関数を実行する事は可能でしょうか? さすがに無理ですかね、それは・・・
485 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 06:30:53 ] >>484 window.external経由ならわりと楽勝で。
486 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 09:43:36 ] IE拡張(BrowserObjectHelper)からマイドキュメントフォルダにファイル書き込んでるんだけど IE保護モードがじゃまして書き込めねぇ・・・ いくつかMSのサイト読んでレジストリいじったりしたが、相変わらず駄目だ 誰かやり方おしえて。
487 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 12:21:05 ] アウトプロセスのCOMサーバでも作ってデータ送って書き込ませれば?
488 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 09:31:02 ] それは最後の手にしたいな。 www.microsoft.com/japan/msdn/ie/general/protectedmode.aspx 書き込み時に、ブローカープロセスの昇格ってのが出るようにできるっぽいけど、 ここにあるようにレジストリに書いたがうまくいかん。
489 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 09:37:46 ] ああ、COMサーバーのCLSIDを登録するってことなんだな、これは・・・ うう、めんどくせー
490 名前:デフォルトの名無しさん [2008/05/23(金) 14:42:17 ] 「ページ内検索」がでねーよ 誰か知ってる? 失敗例: ::SendMessage(browser.GetSafeHwnd(), WM_KEYDOWN, VK_CONTROL, 0); ::SendMessage(browser.GetSafeHwnd(), WM_KEYDOWN, VK_F, 0); ::SendMessage(browser.GetSafeHwnd(), WM_KEYUP, VK_F, 0); ::SendMessage(browser.GetSafeHwnd(), WM_KEYUP, VK_CONTROL, 0);
491 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:58:46 ] >>490 HTMLID_FINDでググれ support.microsoft.com/?scid=kb%3Ben-us%3B175513
492 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 02:44:37 ] ダイアログに WebBrowser を 貼り付けて 表示しています。 その ページ内で window.close() を 呼んだら ダイアログ自体を終了するようにしたいのですが、 WebBrowserEvents のイベントを取得するような方法しかないのでしょうか?
493 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 17:33:24 ] ローカルにある js ファイル ページ表示後に実行したいので、 DWebBrowserEvents の Document Complete 後に Document に script タグを追加しようとしているのですが、 追加されません。 このやり方だとだめなのでしょうか? どこかにサンプルがあったりしますか?
494 名前:デフォルトの名無しさん [2008/06/13(金) 19:11:21 ] Win32APIすれから来ました HTMLを解析したいのでIHTMLDocument2を使おうと思っています CComPtr<IHTMLDocument2> aDoc; aDoc.CoCreateinstance(CLSID_HTMLDOCUMENT); aDoc->put_URL(CComBSTR("~ ")); //URLの読み込み(のつもり) aDoc->get_images() この put_URL を使うとブラウザで引数のURLを開いてしまい、また、get_imagesで取得したイメージコレクションのサイズが0になっています。 まず、「ブラウザを開かないでHTMLを解析したい」のと、「get_images で取得できていない」理由がよく解りません。 コマンドラインから使うツールのつもりなのでCUIの方がうれしいのですが、ダイアログかなにかで表示させる必要があるのでしょうか? #イメージとしてはURLを引数で渡すとそのページのIMG src="***" を抽出するプログラムです。
495 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 19:23:39 ] >>494 ここにサンプルがあったよ ttp://d.hatena.ne.jp/seraphy/20061124#p3
496 名前:デフォルトの名無しさん [2008/07/23(水) 00:24:40 ] IWebBrowser2から作ったIEコンポーネントで、フラッシュゲームのページでゲームのキー入力が 効きません助けてください! IOleInPlaceActiveObject::TranslateAcceleratorもメッセージループ内に入っています!
497 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 09:21:35 ] そういや俺もニコニコとかのフラッシュ使ったページでキー入力効かなかったことがあったな。 どうやって解決したか思い出したら書き込むよ。
498 名前:デフォルトの名無しさん [2008/07/23(水) 11:55:03 ] 質問です。 戻る、進むことが出来るか否かを判断するにはどうすればいいんですか? IWebBrower2のメソッドにそれらしき関数が見当たらなかったんだけど
499 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 20:05:14 ] DWebBrowserEvents2のCommandStateChangeかなにか
500 名前:デフォルトの名無しさん [2008/07/24(木) 18:42:51 ] >>499 遅レスですがありがとうございました!
501 名前:デフォルトの名無しさん [2008/07/24(木) 20:13:24 ] VC+ATLでタブブラウザっぽいものを作っています。 DWebBrowserEvents2のDISPID_NEWWINDOW2イベントで、 新しく開く遷移先のアドレスを知るためにはどうしたらいいんですか? OnNewWindow2のハンドラでIEが立ち上がるのをキャンセルするまでは分かったんで巣が。。 Donutのソースみたけどいまいち分かりませんでした・・・
502 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 19:21:06 ] NewWindow3にしちゃうのは?
503 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 14:53:44 ] WSH/VBScriptからNewWindow?でcancelできない?
504 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 20:08:34 ] IE6が入っているPCでは問題なく動作しているプログラムが IE7が入っているPCで正しい動作をしてくれません。 ttp://www.nitoyon.com/vc/tips/ie_component.htm このサイトを参考にC++(VC++)でIEコンポーネントを呼び出しています。 調べてみると、どうやらIE7でNavigate2を呼び出すと 正しくページに移動できないみたいですね。 色々調べてみたんですけど、VC++でのIEコンポーネントの使用で IE7に対応させるような方法が分かりません。 IE7環境でVC++からIEコンポーネントを呼び出して 正しくページ移動できるようなプログラムは可能でしょうか。
505 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 16:49:59 ] しらんけど↓でなんとかならんかのお Microsoft Web Browserコントロールのセキュリティを制御する:CodeZine
506 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 18:40:03 ] ページから移動するんじゃなくて、ページごとに作り直すといいんじゃない?
507 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 22:13:09 ] >>504 AtlAxCreateControlExを使用した方法だとうまくいきますよ。
508 名前:507 mailto:sage [2008/08/27(水) 22:19:03 ] >>504 の詳細を聞かずにレスしたので、思っているのとは違う結果になるかもしれない。 補足すると、タブを使用しない。キオスク端末見たいなことをやりたければ、 AtlAxCreateControlExを使用した方法で作れます。
509 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 16:14:38 ] IE7でアクティブなタブがshellwindowsのどれか、わかりますか?
510 名前:デフォルトの名無しさん [2008/09/14(日) 12:25:13 ] VC6 + MFCで開発してます。 IDispatchExの利用方法で分からない事があります。 IEコンポーネントのGetDocument()で得られるIHTMLDocument2をQIして IHTMLDocumentを取得しました。 さらに、get_Script()で得られるIDispatchをQIし、IDispatchExを 取得しました。 こうして得られたIDispatchExを利用して、HTMLのオブジェクトにアクセス 可能な事を確認しました。しかし、JavaScriptで window.hoge = 1; foo = 2; と書いてある場合、hogeにはアクセス出来ますが、fooにはアクセスできません。 windowオブジェクトに明示的に代入したオブジェクトにしかアクセスできない ようです。 どうすれば、fooにアクセスできるでしょうか。
511 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 12:02:52 ] >>510 厳密に調査したわけではないが、アクセスタイミングによるものだと思う。 windowオブジェクトは、初期状態で存在しているため、 直にアクセスできるのだと思われる。 全てのイベントを拾って、ポーリングすればアクセスできるタイミングが分かるはず。 試しに html側 head内にてvar i=1000を定義、body onloadにて、 iを初期値と比較して結果を出す関数を作成。 全てのイベントを拾って、GetDispID( 変数名, fdexNameCaseInsensitive, &dispID ) を実行して、DISPID_UNKNOWN != dispIDが成立したら関数InvokeExにて値を変更したら onload関数の結果が変わるのを確認した。
512 名前:デフォルトの名無しさん [2008/09/26(金) 12:43:09 ] javaのwin32oleでブラウザ作ってるんですが 表示中のHTMLの任意のタグの内容を取る方法って何ですかね? 例えばクリック→srcElement取得ってどうやったらいいのか・・・。
513 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 01:17:13 ] win32oleを使用したことが無いので詳しくは分からないが、IHTMLDocument2のI/Fが取れれば、 メンバ関数elementFromPointでできると思う。
514 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 22:09:26 ] IE7 + Vista + 保護モードだと、BHOからファイル書き込みが 所定のパスにできないですよね。 これを解決しようと奮起してます。 ファイル書き込み部分をCOM化しようとしてるんですが、 どうにもうまくいきません。 msdn.microsoft.com/en-us/library/bb250462.aspx ここを読んだんですけど、 If your extension launches a COM server that is not registered in HKEY_CLASSES_ROOT, gets dynamically registered through COM and launched via CoCreateInstance, add a REG_SZ value called IID containing the CLSID of the COM server, add the following setting to your policy. IID (REG_SZ) contains the CLSID of your extension. これって、BHOのCOMコンポーネントのCLSIDを レジストリのElevationPolicy以下に登録するんじゃないんですかね。 ファイル書き込みのCOMを生成した瞬間にダイアログが出ることを期待してるんですが、 ぜんぜんそうなりません。
515 名前:514 mailto:sage [2008/09/27(土) 22:11:01 ] ファイル書き込みのCOMはBHOと同じDLLに含まれてます。 ファイル書き込みのCOMを別のEXEサーバーにおいて、 BHOから呼び出したんですが、COM生成はできても、 ちょっとするとEXEサーバーから勝手に切断されてしまいます。 どうしていいのか、さっぱりわかりません・・・
516 名前:512 mailto:sage [2008/09/30(火) 09:54:56 ] >>513 ありがとうございます やってみます
517 名前:hiro [2008/10/08(水) 14:47:16 ] こんにちは。 www.nitoyon.com/vc/tips/ie_component.htm のサンプルコードを落として VS.net 2003 Standardで 開いてビルド実行、アドレスバーに打ち込んでGOを押しても メッセージが出て(atlcomcli.h Line148)で 実行時にエラーになります。 comは初心者でよく分かりません。 どなたか対処法をご存知ないでしょうか? どうかよろしくお願いします。
518 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 17:40:03 ] >>517 そこの「VC++.NETでの注意点」ってとこ読んだか?
519 名前:hiro [2008/10/08(水) 18:50:31 ] はい、読みました。 昔会社でやってた頃、VC6.0のときは作動できたのですが、 なぜか自宅のVC++.net 2003 Standardではエラーが出るのです。
520 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 16:40:56 ] >>519 該当サイトのサンプルをダウンロードして、VC6ではOKだっが VS2005 PROでは駄目だね。 atlライブラリか、ActiveXの扱いの問題か。 少し試したが原因が分からないので、ソースを修正してた。 以下ソースを参考にしてみてくれ。 リソースエディタで、ActiveXコントロールを削除して、 STATICテキストを任意サイズにし、コントロールIDを"IE_WINDOW"と設定する。 そして、main.cを以下のようにコード修正 int WINAPI WinMain 省略 ::CoInitialize(0); // ATLモジュールを初期化します。 省略 // ATLモジュールの後始末です。 _Module.Term(); ::CoUninitialize(); 省略 // ActiveXコントロールのインターフェースを要求します。 //if (AtlAxGetControl(GetDlgItem(hDlg, IDC_IE), &punkIE) == S_OK) { HWND hwnd = 0; hwnd = ::GetDlgItem( hDlg, IE_WINDOW ); if ( 0 != hwnd ) { ::AtlAxCreateControlEx( OLESTR( "{8856F961-340A-11D0-A96B-00C04FD705A2}"), hwnd, 0, 0, 0, IID_NULL, 0 ); ::AtlAxGetControl( hwnd, &punkIE ); } 省略
521 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 22:58:55 ] html 関連の質問です。 VC++ 2005、WinXPでプログラムを組んでいますが、あるhtmlファイルからanchorタグを読み込み、リンク先のページを取得したいと思います。 一々、自作のライブラリでリンク先を検出するようだと、作成時間がかかって仕方ないので、どなたか、htmlをパースしてリンク先のアドレスを取得できるような ライブラリや関数などをご存知の方、教えていただけないでしょうか? ---- c++相談室から誘導されてきました。 よろしくお願いします。
522 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 23:10:07 ] その程度の用途でIEコンポーネントなんか使ったら余計時間かかる気がするが。 正規表現かなんかで抽出したほうがはやくね?
523 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 23:18:16 ] マジっすか…… 正規表現だとboost辺りかな…… とりあえず、boost使ってみることにします。 どうもありがとうございました
524 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 13:17:44 ] BHOを作ってるのだが、 VSのプロジェクトのプロパティ>構成プロパティ>デバッグ>コマンド にiexplorer.exeのパス書いて、デバッグ実行すると、 IEが起動して自動的にアタッチしてくれる。 それはいいんだが、なぜかそうやって起動するとIE7+Vistaでの保護モードが無効になってしまう。 その状態でインターネットオプション見ても保護モードにチェックは入ってるのに。 普通にIE起動したら保護モード。 誰か理由説明できる人いる?
525 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 14:12:10 ] その状態で2ch見ても保護モードにならんの?
526 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 03:01:30 ] IOleCommandTargetとかIDocHostUIHandler辺りを使ってIEコンポのカスタマイズやってるんだが、 どうもうまくいかないのでレジストリのキー検索してみた。 するとIDocHostUIHandlerが発見できない。(BD3F23C0-D43E-11CF-893B-00AA00BDCE1A) OleViewでみてもやっぱりない。 これはウチのレジストリが壊れてる?それともこれが普通で他に原因がある? PC2台(Pro,Home)とも同じ状況なんで判断が付かない。 環境は XP SP2(一台はSP1から更新、もう一台はSP2デフォ) / IE7(6から更新) / .NET2.0 参考サイトはこの辺 ttp://msdn.microsoft.com/en-us/library/aa770041(VS.85).aspx
527 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 03:54:47 ] Three interfaces are at the heart of WebBrowser Control UI customization: IDocHostUIHandler, IDocHostUIHandler2, and IDocHostShowUI. These are interfaces that you implement in your application when you want to modify the WebBrowser Control.
528 名前:もう見てないよな? [2008/11/14(金) 23:05:07 ] >>523 > マジっすか…… > 正規表現だとboost辺りかな…… > VCならRegExpをCOM経由で使えば正規表現がつかえるらしい VCで正規表現 (要IE5.5以上) ttp://page.freett.com/mortes/prog/regexp.htm 「IE5.5以上」なんで条件を満たしていないWindowなんてあるの?
529 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 23:33:38 ] 素のWindows2000
530 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 18:48:42 ] RegExpはVBScript 5.0だろ IE5.0だろ 素のWindows2000だろ
531 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 21:27:32 ] 鬼車使っとけ
532 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 10:06:31 ] IDocHostUIHandlerを実装したクラスを適用させるにはどうすりゃいいんでしょうか? NavigateComplete2でSetUIHandlerはイクないみたいなことが色々書いてありますし、 それでは初めてのNavigateの時にはXPスタイルを適用できないみたいですし・・・ GWL_USERDATAをGetWindowLongでIAxWinHostWindowを取得してSetExternalUIHandlerでも出来ないことも無いですが、 D&Dが使えなくなるっぽいなのでこちらもだめみたいです
533 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 10:55:09 ] MFCのソースでも見ればいいんじゃね? Platform SDKに入ってなかったか。
534 名前:532 mailto:sage [2008/11/20(木) 11:41:01 ] MFCの環境が無いので見れません ごめんなさい
535 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 11:57:27 ] >>534 >>533 は「無償配布されてるPlatform SDKを入れてみろ」って言ってるんだと。
536 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 12:06:41 ] >>535 Platform SDKは既に入れてありますが、MFCのソースはどこにありますでしょうか? mfcディレクトリにはヘッダしか見受けられませんが・・・
537 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 13:02:22 ] src\mfcにないならないんじゃない?
538 名前:532 mailto:sage [2008/11/20(木) 13:23:30 ] src\mfcを検索してみましたが、IDocHostUIHandlerの記述はないようです 本題に戻って、お願いします
539 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 16:57:23 ] >>538 ttp://msdn.microsoft.com/en-us/library/aa770041.aspx
540 名前:532 mailto:sage [2008/11/20(木) 17:24:56 ] >>539 こんな方法で出来るとは・・・ 神様ありがとうございます
541 名前:sdaf mailto:asdf [2008/11/26(水) 16:16:56 ] adsf
542 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 18:22:37 ] ie7でShellWindowsの中からactiveなものを見つけることはできないっすか?
543 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 15:33:39 ] MFC(VC++6.0)のCHtmlViewで、右スクロールバーの「現在のスクロール位置」の取得 方法が分かる方はいらっしゃいますでしょうか? いろいろ調べて、試してみたりしたのですが、どうしてもうまくいかないのです…
544 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 19:13:07 ] VS2008 MFCにてIEコンポーネントを使用して自動巡回ソフトを作りたいと 考えています。 IEコンポで指定のページまでは簡単に表示出来たのですが、 フォームに文字(ID/PASS)を入力したり、ボタンをクリックしたりする のはどうやったらいいのでしょうか? 参考になるソースなどあるサイトなどあったら教えて下さい。
545 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:12:13 ] まあIHTMLDocument*あたりからDOM経由すればそういうことはできるが、 普通はそういう面倒なことはせずに直接自分でフォーム送信時に送られるリクエストを作成するだろうな。
546 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:22:51 ] >>517 亀だが「AtlAxWin」の部分をVSのVerにあわせてみては? 参考URL ttp://fssblog.blog50.fc2.com/blog-entry-219.html
547 名前:デフォルトの名無しさん [2009/01/31(土) 11:54:03 ] <form 〜> <input type="button" value="test" onClick="gotoPage();"> </form> 上の例でボタンを押した時、gotoPage(); を実行させたいんですが 初心者なんでよくわかりません pCollection = pDocument->getElementsByName( _bstr_t( L"namae" ) ); MSHTML::IHTMLFormElementPtr pForm( pCollection->item() ); pForm->submit(); だと、gotoPage(); が実行されないみたいです 誰か教えて下さい。・゚・(つ_⊂)・゚・。ウェーン
548 名前:デフォルトの名無しさん [2009/01/31(土) 16:35:51 ] var vHtmlDocument: IHtmlDocument2; begin vHtmlDocument := EmbeddedWB1.Document as IHtmlDocument2; vHtmlDocument.parentWindow.execScript( 'var select = document.getElementById("test");input.onClic();', 'javascript'); end; デルファイだとこんなの C#わかんない 本当は IHTMLDocument4; IHTMLEventObj; IHTMLDocument2; IHTMLElementCollection; IHTMLElement3; 上記のインターフェース使って やる・・・・
549 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 13:55:20 ] >>546 >>517 じゃないけど助かりました!
550 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 02:31:52 ] そうか
551 名前:デフォルトの名無しさん [2009/03/22(日) 02:24:55 ] IE8になって、IEコンポーネントを使って値を設定するときのセキュリティの変更があったようです INPUT TYPE="FILE" に設定するのに今までフォーカスを当ててからSendKeyを使っていたのですが、どうやら駄目になった模様・・・ 解決方法はあるのでしょうか
552 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 21:29:34 ] 知らんけどタイミングが合ってないだけじゃないのか?
553 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 10:21:37 ] 能無しはけーん
554 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 22:46:49 ] それはそれは。。。がんばって!