■過去ログ置き場に戻る■ 1- 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

IEコンポーネントを使い倒すスレ Ver.2
1 名前:デフォルトの名無しさん :2006/04/16(日) 21:08:42
=====================================

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

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


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

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

(以上、前スレより)

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

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

2 名前:デフォルトの名無しさん :2006/04/16(日) 21:12:04
前スレの過去ログ
http://pc5.2ch.net/tech/kako/982/982930049.html

3 名前:デフォルトの名無しさん :2006/04/16(日) 21:22:42
関連スレ(俺の独断と偏見)

【OLE】オートメーション総合スレ【ActiveX】
http://pc8.2ch.net/test/read.cgi/tech/1137771139/l50
Win32API質問箱 Build42
http://pc8.2ch.net/test/read.cgi/tech/1144962549/l50
ATL/WTL Part4
http://pc8.2ch.net/test/read.cgi/tech/1134388951/l50

Donut開発情報交換スレ(DAT落ち)
http://pc8.2ch.net/test/read.cgi/tech/1096194187/l50

4 名前:デフォルトの名無しさん :2006/04/17(月) 19:39:15
>>3
FW2.0にはwebbrowserコントロールあるし、IEコンポーネントプログラミングなんてもう必要無いんじゃまいか?

5 名前:デフォルトの名無しさん :2006/04/20(木) 15:52:56


6 名前:デフォルトの名無しさん :2006/04/20(木) 16:48:53
たしか、Part 2があったはずなんだけど

いやーごめんなさいでブッとばされて、それっきりになったんだっけ?

7 名前:デフォルトの名無しさん :2006/04/28(金) 07:12:22
まさか今になって次スレが立つとは。うれしいなあ。
>>1の英断に乾杯。

8 名前:デフォルトの名無しさん :2006/04/28(金) 15:16:29
このままDAT落ちしそう

9 名前:デフォルトの名無しさん :2006/04/28(金) 17:46:12
4ヶ月ほっとかれても落ちないみたいだから
だいじょぶなんでない?

テンプレ?に追加
わからないことがあったらとりあえずググっとけ
http://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 名前:デフォルトの名無しさん :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オブジェクトがあるので、そっちの路線で調べて見ます。


http://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 名前:デフォルトの名無しさん :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 名前:デフォルトの名無しさん :2006/05/13(土) 22:40:31
ちがう

21 名前:デフォルトの名無しさん :2006/05/13(土) 22:45:51
確か、MSDN にそのものずばりの HOWTO があったような記憶が・・・
今手元に MSDN が無いのでなんとも言えないけど。
WEB 版は、変わっちゃったんだね。

22 名前:19 :2006/05/14(日) 01:22:17
MSDNとかざっと見たけど分かんないっす。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1371&forum=7

23 名前:デフォルトの名無しさん :2006/05/14(日) 01:57:20
>>12
>プロセス内の変数(WinMainとかで宣言した変数)を、
>IEコンポーネントの中のJavaScriptから参照することはできますでしょうか?

横レスですが
IHTMLDocument::get_Script()とかいう話ではない?
ただ「JavaScriptから変数を参照する」というより
アプリ側から引数として渡すような形になるけど

頓珍漢なこといってたらごめん。


24 名前:22 :2006/05/14(日) 08:58:57
22のリンク先はIHTMLDocument::get_Script()で行けるのかも…。
ScriptEngineが取得できれば、IActiveScript->AddNamedItemあたりで
アプリ側から名前付きオブジェクトを渡せるから行けるんではと思うけど、
にしても、17,18,20の回答(正解)が気になる…。

25 名前:デフォルトの名無しさん :2006/05/14(日) 22:52:04
Win32API質問箱で質問した者ですが、誘導されたので改めて質問させて頂きます。

WinXP SP2のIEで、ダウンロードが自動的に始まるページへ移動すると

"セキュリティ保護のため・・・"

と表示され、自動的にダウンロードが行われないようになっていますが、
IWebBrowserを使用したIEコンポーネントで同じような機能を実装するには
どうすれば良いのでしょうか?

よろしくお願いします。

26 名前:デフォルトの名無しさん :2006/05/15(月) 19:41:35
たぶんリダイレクトするときにイベントが来るからDWebBrowserEvents2を実装してみる。
あくまでもたぶん。

27 名前:12 :2006/05/15(月) 19:44:44
>>16-24
お返事遅れてすいません。
IActiveScript->AddNamedItemで、スクリプトにCでのコード埋め込みができそうですね。
調べる限り、それをやるにはコードが相当複雑そうですが(^^;
ありがとうございました。

>>25
あっ、>>836だ。

28 名前:デフォルトの名無しさん :2006/05/17(水) 18:25:23
なんかIE7βにしてからIEコンポーネント使ったソフトの挙動がヘンなんだが。

29 名前:デフォルトの名無しさん :2006/05/17(水) 20:22:50
さすがはM$

30 名前:デフォルトの名無しさん :2006/05/17(水) 20:23:33
仕様が変わってるのだから仕様が無い。

31 名前:デフォルトの名無しさん :2006/05/17(水) 22:42:57
だれが上手いこと言えとw

32 名前:デフォルトの名無しさん :2006/05/18(木) 12:05:04
>>28
IE7b2はデフォルトでローカル(メモリやファイルシステムにある)なhtmlで
アクティブスクリプトを有効にしないようになってるからじゃ○マイカ。

33 名前:デフォルトの名無しさん :2006/05/19(金) 02:27:19
>>32
そうだったノカー(AA略)
サンクスコ!

34 名前:デフォルトの名無しさん :2006/05/21(日) 14:48:53
>>32
IE6sp2からそうじゃなかった?

35 名前:デフォルトの名無しさん :2006/06/01(木) 19:54:50
age

36 名前:デフォルトの名無しさん :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 名前:デフォルトの名無しさん :2006/06/02(金) 00:28:27
ここに来るぐらいなら言語の1つぐらい持ってるだろ?
ヘルプみろよ。

40 名前:デフォルトの名無しさん :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 名前:デフォルトの名無しさん :2006/06/17(土) 02:46:29
VistaのIE7で仕様かわったっぽい?
Navigate2まわりでアクセス違反で落ちるようになった

43 名前:デフォルトの名無しさん :2006/06/17(土) 10:16:37
IOleClientSiteはクライアント側(Word, Excel)が持ってるものじゃないの


44 名前:デフォルトの名無しさん :2006/06/17(土) 11:21:11
IHTMLDocument2で、任意のタグを取得したい場合(例えばmetaタグとか)、
get_allでIHTMLElementCollectionを取得して、一個一個ループでまわしてタグ名を見ていくしかないのでしょうか?

IHTMLDocument3にgetElementsByTagNameというものがあったのですが、できればIHTMLDocument3は使いたくないです。

45 名前:40 :2006/06/17(土) 12:45:43
>>43
ActiveDocumentを貼り付けられるものは
IOleClientSiteを持ってると思うんだけど。
Word、Excelも当然もってるし、IEも持ってるはず。
全部ActiveDocumentを開けるから。

46 名前:44 :2006/06/17(土) 23:31:17
>>44です。get_allしてループでまわすのが面倒だったので質問したのですが、
IHTMLElementCollectionに、itemというメソッドがあって、
タグ名をもとにタグ情報を取得できそうなので解決しそうです。

失礼しました。

47 名前:デフォルトの名無しさん :2006/06/24(土) 18:19:48
いつの間にか復活してるじゃないかsage

48 名前:デフォルトの名無しさん :2006/06/24(土) 18:48:01
ブラウザイベントをInvokeで拾う方法を教えれ下さい。

49 名前:デフォルトの名無しさん :2006/06/24(土) 19:07:05
window.external

50 名前:デフォルトの名無しさん :2006/06/24(土) 22:42:56
>>48
DWebBrowserEvents2で色々やってみれ

51 名前:48 :2006/06/24(土) 22:55:43
>>49-50
実はHtmlイベントの受信がしたかったわけですが、なんとか接続の確立ができ申した、言葉足らずで失礼。
一ヶ月かかったわ…

52 名前:デフォルトの名無しさん :2006/06/26(月) 13:55:19
接頭語のIってなんなの?Iって。
IEとかIE_とかにしてくれよ。

53 名前:デフォルトの名無しさん :2006/06/26(月) 14:40:42
>>52
InterfaceのIだろ。
MFCなんかでクラス名がCナントカになっているのと同じ。

54 名前:デフォルトの名無しさん :2006/06/26(月) 18:23:46
すみません
タブブラウザでソースコードを公開している奴って
ありますか?


55 名前:デフォルトの名無しさん :2006/06/26(月) 19:18:45
Donut RAPTなどなど

56 名前:デフォルトの名無しさん :2006/06/26(月) 20:15:00
Donut RAPTはHTMLが変に表示される
白抜き文字とかも真っ黒

57 名前:デフォルトの名無しさん :2006/06/26(月) 23:10:54
>>51
IWebBrowserNからDWebBrowserEvents2とか使わず、
IDispatch::Invokeでイベント取得できたってことですか?
おしえてホスィ。

DocumentCompleteが通知されてほしい。

58 名前:12 :2006/06/26(月) 23:18:21
そういえば、IEコンポーネントのJavaScriptからC++の変数を参照する方法ですが、
IHTMLDocumentのget_Scriptで得たIDispatchからQueryInterfaceで、
IDispatchExを取得してInvokeEx呼び出せばいいみたいです。説明わかりにく。

IEコンポーネントからIActiveScriptを得るのはたぶん無理っぽいです。
IDispatchExからプロパティを追加する方法しかないっぽいです。
参考資料 → http://www.codeproject.com/com/dispexsinkconnector.asp

これ調べるの結構かかったなぁ

59 名前:デフォルトの名無しさん :2006/06/26(月) 23:22:07
IXxxxxx → Interface
CXxxxx → Concrete?またはClass?
DXxxxx → Dってなによ

60 名前:デフォルトの名無しさん :2006/06/27(火) 15:42:37
>>59
dispinterface

61 名前:デフォルトの名無しさん :2006/06/27(火) 17:40:40
>>59
さすがにコンクリートはないと思うが

62 名前:デフォルトの名無しさん :2006/06/27(火) 19:56:47
CreateWindowExで作ったIEコンポのウィンドウを破棄するときはDestroyWindowでOK?

63 名前:59 :2006/06/27(火) 22:31:58
DIXxxxx → Dual Interfacesらしい
AfxXxxx → MFCのもの

CXxxxxはclassのCっぽいね。

64 名前:デフォルトの名無しさん :2006/06/28(水) 21:55:54
>>62
CreateWindowExってことはATLのIEコンポ?
よく調べてないけどDestroyWindowでおk(適当

65 名前:デフォルトの名無しさん :2006/06/29(木) 16:44:23
はげ

66 名前:51 :2006/06/30(金) 05:45:25
>>57
Htmlイベントじゃなくて、マウスイベントとかだったわ…重ね重ね失礼。

67 名前:57 :2006/06/30(金) 13:15:49
>>66
いや、俺がよく見てなかったのが悪かったわ。
>実はHtmlイベントの受信がしたかったわけですが、
と書いてあるのを思いっきり見落としてた。

68 名前:デフォルトの名無しさん :2006/07/02(日) 01:38:07
HTAアプリケーションのselection=noみたいに、
IEコンポーネント内のテキストをマウスカーソルで
選択できなくするような方法をご存知ないでしょうか?

69 名前:デフォルトの名無しさん :2006/07/03(月) 03:51:40
そういうJavaスクリプトを読ませる。
http://www.iwate-np.co.jp/news/y2006/m07/d02/NippoNews_11.html

70 名前:デフォルトの名無しさん :2006/07/03(月) 10:32:53
>>69
オオオおおお。まさにやりたいことです。ありがとうございます。
document.onmousedown = new Function("return false");
↑これやったらボタンも押せなくなるのかと思ってましたけどできるんですね

71 名前:デフォルトの名無しさん :2006/07/05(水) 14:24:56
window.moveToやwindow.resizeToが呼び出されたことを知る方法ないでしょうか?
DWebBrowserEvents2とか見ましたが見当たりませんでした…。

72 名前:デフォルトの名無しさん :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 名前:デフォルトの名無しさん :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 名前:デフォルトの名無しさん :2006/07/14(金) 21:06:10
正式版になってから言え

78 名前:デフォルトの名無しさん :2006/07/14(金) 21:49:35
>>76
InternetOpenUrlWだとどうなる?

79 名前:76 :2006/07/14(金) 22:19:03
>>78
プログラムがANSIなのでW版はちょっと試していませんが、
ひとまず自分でURLの漢字部分をutf8エンコードして回避しました。

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


80 名前:74 :2006/07/14(金) 22:33:46
>75
.NETではIHTMLDOMNodeは使えるみたいですね。
あとVS6.0のSP6をインストールしてみましたが使えませんでした。
やはり.NETを買うしかないみたいですね。
ありがとうございました

81 名前:76 :2006/07/14(金) 22:33:46
>>78
W版を試してみたところ、InternetOpenUrlWだと何も考えなく
てもうまく行きました。

自分で%E7……て変換しなくてもやってくれるようです。

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

……自分で変換したさっきの苦労はorz

82 名前:デフォルトの名無しさん :2006/07/14(金) 22:56:21
別ドメインのフレームのIHTMLDocument2を取得するにはどうすればよいでしょうか

83 名前:デフォルトの名無しさん :2006/07/15(土) 21:25:02
質問です。
XMLデータをメモリから設定すると、HTMLとして表示されてしまうのですが、
設定するデータの属性を設定する方法があるのでしょうか?
現在は、一度「.xml」な一時ファイルを吐き出してそれを読み込ませる方法にしています。


84 名前:デフォルトの名無しさん :2006/07/15(土) 22:33:11
ちゅんと doctype 付けてる?


85 名前:83 :2006/07/16(日) 05:13:09
>>84
つけていませんでした。DOCTYPE見ているのですか。
試してみます。どうもです。


86 名前:デフォルトの名無しさん :2006/07/18(火) 03:06:57
前スレででていたUrlMkSetSessionOptionを使って
ユーザエージェントを変更したいのですが、変更されません。
設定するタイミングがあるのかと、いろんな箇所で入れて、
UrlMkGetSessionOptionで取得すると取得される値では変更はされているようでしたが
printenv.cgiなどでみると変更されていません。
分かる方いますでしょうか?


87 名前:86 :2006/07/18(火) 03:12:59
navigator.userAgentが変更されていました。
UrlMkSetSessionOptionは、Javascriptのnavigator.userAgentを変更する関数で、
HTTPプロトコル上のUser-Agentヘッダーオプションは変更しない・・?


88 名前:デフォルトの名無しさん :2006/07/18(火) 04:43:57
確認君とかで見ると普通に変更されるよ。

89 名前:86 :2006/07/18(火) 05:21:24
>>88
確認君でも見ましたが、変更されていませんでしたが・・・。IE7 XPPro SP2です。
お詳しいようなので、いまさらな質問ですが、
UrlMkSessionOptionは、プログラム内で一度実行したらそれでいいのでしょうか?
実行するタイミング(たとえば、コンポーネントを起動後など)などありますか?


90 名前:デフォルトの名無しさん :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 名前:デフォルトの名無しさん :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 名前:デフォルトの名無しさん :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 名前:デフォルトの名無しさん :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 名前:デフォルトの名無しさん :2006/07/25(火) 04:44:03
IHTMLAnchorElement
get_href

101 名前:デフォルトの名無しさん :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使えばいいのね…。

http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/mshtml/reference/ifaces/window2/window2.asp
http://www.ultrasync.net/yofune/?Prog%2FWin32%2FIE%A5%B3%A5%F3%A5%DD%A1%BC%A5%CD%A5%F3%A5%C8#rab3bb29

104 名前:99 :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 :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 :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 :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 :2006/07/29(土) 00:38:29
>>1
>ちょっと思ったのですが、focusはDownload中にScriptとして読み込まれ、
>実行されるわけですよね?だからDownloadComplete時にfocusを無効にしても遅いような気がしてきました。
まぢですか。と思ってやってみたら本当ですね。
私は標準で用意されてるwindowクラスのmoveToやらmoveByなどのメソッド書き換えて、
別の動作にさせたいという要求があったのですが同じ理由で無理そう。

そうなるとちょっと良い方法はわかりません。困りましたw

113 名前:デフォルトの名無しさん :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 名前:デフォルトの名無しさん :2006/08/02(水) 17:26:00
自分がクリック(に相当する操作)した回数を数えるんだろ?

116 名前:デフォルトの名無しさん :2006/08/03(木) 00:32:09
>114
NavigateComplete2イベントなんてどうでしょう?

以下のサイトにDWebBrowserEvents2のイベント説明が載ってるのでいろいろ試してみては?
http://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)下の方法でクリックのイベントが取れるそうなので、そこからがんばる。

http://support.microsoft.com/kb/246247/


118 名前:デフォルトの名無しさん :2006/08/04(金) 17:43:06
指定したリンクが未読か既読か区別する方法ってありますか?
IHTMLAnchorElementではそのようなメソッドがないようです。。。

119 名前:デフォルトの名無しさん :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 名前:デフォルトの名無しさん :2006/08/10(木) 17:41:48
Visual C++ 2005 Express Edition は?

125 名前:デフォルトの名無しさん :2006/08/11(金) 10:11:58
BCCでは無理なようですね
ありがとうございました

126 名前:デフォルトの名無しさん :2006/08/11(金) 10:15:09
>>125
たぶんこの方法ならできると思う。VC++固有の機能は使っていないはず。
http://www.adp-gmbh.ch/win/misc/mshtml/HTMLWindow.html
ATLのDLLを用意できるのなら、このページの方法が使える。
ただしCComPtr/CComQIPtrなどを使わないように改造する必要があるだろうが。
http://www.nitoyon.com/vc/tips/ie_component.htm

127 名前:デフォルトの名無しさん :2006/08/12(土) 11:58:06
>>126
すごいね。この上のHP。mingwでもできるようだ。BCCでもできるっしょ。
http://www.adp-gmbh.ch/win/misc/mshtml/MSHTMLTest.zip

128 名前:デフォルトの名無しさん :2006/08/20(日) 19:17:37
ページを更新した(更新ボタンを押す or F5を押す)
というイベントはどう拾えばよいのでしょう?

129 名前:デフォルトの名無しさん :2006/08/21(月) 00:17:13
IEツールバーの製作もここですか?

ツールバー上の特定のボタンを押すとポップアップメニューが出てくるように
プログラムしたのですが、IEを複数起動した場合、2つ目以降では
メニューが出てきません。他にも、IEを複数起動した場合、不安定に
なることが多いです。これって何が原因でしょうか。

IEを複数起動すると、ツールバーも複数存在するわけですが
OSの内部ではどうやって各ツールバーを扱っているのでしょうか。

130 名前:デフォルトの名無しさん :2006/08/21(月) 00:35:46
>>128
更新ボタンって自分で作ってないの?
F5はキー拾えばいいんじゃね?

>>129
>IEを複数起動すると、ツールバーも複数存在するわけですが
>OSの内部ではどうやって各ツールバーを扱っているのでしょうか。

IEが別プロセスならツールバー間も無関係なはず
別プロセスでも共有しちゃってるような何かリソースがあるんじゃないの
設定ファイルとかレジストリの状態とか

131 名前:128 :2006/08/21(月) 00:45:50
>>130
説明不足でした。
自分でIEコンポのインスタンス生成してるんじゃなくBHOをやってます。
なのでInternetExplorerで更新されたことが知りたいんです。
更新だとBeforeNavigateはこないです。

132 名前:デフォルトの名無しさん :2006/08/21(月) 02:11:02
>>131
BHOってのがなんだか知らんが、
DownloadBeginかDownloadCompleteだったら、
location.reload()とかで更新されるたびに毎回通知がきたよ。

133 名前:デフォルトの名無しさん :2006/08/21(月) 18:43:50
>>129
複数のスレッドから呼ばれてもきちんと動作するように作る。

134 名前:デフォルトの名無しさん :2006/08/23(水) 01:59:13
ねーねー、おまいら IE6 と IE7 の違いはどう吸収すんの?

135 名前:七資産 :2006/08/23(水) 02:50:30
気合

136 名前:デフォルトの名無しさん :2006/08/23(水) 02:53:57
今のところ、Navigateに空文字渡すとエラーが出るようになったくらいしか
IE7と6の違いには遭遇してないけど、他にもいろいろあるんだろうな。

137 名前:デフォルトの名無しさん :2006/08/23(水) 07:34:41
多段タブにできないものかな。

138 名前:デフォルトの名無しさん :2006/08/23(水) 10:42:28
>>135
第二次世界大戦はそれで惨敗した。

139 名前:デフォルトの名無しさん :2006/08/23(水) 12:18:31
戦後の復興も気合いだということを忘れなく。

140 名前:デフォルトの名無しさん :2006/08/23(水) 15:24:43
>>139
気合はもちろん必要だが、気合だけでは無理、ということをお忘れなく。

141 名前:139 :2006/08/23(水) 23:32:10
プログラムは気合いと才能。

142 名前:七資産 :2006/08/24(木) 03:40:09
そして徹夜

143 名前:デフォルトの名無しさん :2006/08/24(木) 13:24:33
閃き、発想・・・まぁ才能の一部だなぁ

144 名前:139 :2006/08/24(木) 14:43:03
昼寝して目覚める数分前の夢の中に半分いる状態で、
悩んでいるロジックについて考えると答えが出たりする。
この閃きは、神から授かった才能。

145 名前:デフォルトの名無しさん :2006/08/24(木) 14:49:07
はいよかったね。
でもここはここはIEコンポーネントを使い倒すスレだよ。

146 名前:デフォルトの名無しさん :2006/08/27(日) 19:01:35
IDispatchは大体理解したのですが、IDispatchExっていうのはなんなんですか?なんなの?なんなのよー!?
マイクロコロヌ

>>144
それは、うまく右脳を使える時間帯だな。ハイヤーセルフ(高次元の自分)と呼ばれる奴だ。
今、悩んでいる出来事を書いたメモを枕元において寝るとハイヤーセルフが寝ている間に解決してくれるという。
経営者とかが良くやる手法だとか。人間誰しも持ってる能力だ。

独学で使いこなしているのであれば、なかなか評価できるが。

147 名前:デフォルトの名無しさん :2006/08/28(月) 08:27:51
IEコンポを生成したスレッドとは別のスレッドから、
IHTMLDocument2::write呼び出したら、まずいかな?
Mutexはったら大丈夫かな?

148 名前:デフォルトの名無しさん :2006/08/28(月) 09:02:21
http://pc8.2ch.net/test/read.cgi/tech/1137771139/102
とかかも

149 名前:147 :2006/08/28(月) 11:53:33
つーか実際に呼んだら死んだよ・・・
む〜今までおぼろげな理解で済ませてきたが、
Apartmentとかも勉強せねばならんな。
確かに、そっちのスレッドのがよさげ。

150 名前:デフォルトの名無しさん :2006/09/09(土) 18:32:57
上の方で誰か質問してたけど
結局Reloadを検知するのってどうやんの? 生IEなんだけど。

BeforeNavigate2 はFireされないし
wm_commandだとメニューやF5は取れるけど、
更新ボタン押されても分からないよママン


151 名前:デフォルトの名無しさん :2006/09/09(土) 21:16:01
安全な方法では無理


152 名前:デフォルトの名無しさん :2006/09/10(日) 11:52:41
既成のタブブラウザがあるのですが、
これのaxwebbrowserのプロパティを外からいじる方法ってあるんでしょうか?



153 名前:デフォルトの名無しさん :2006/09/16(土) 09:36:17
誰か答えてやれよ

154 名前:デフォルトの名無しさん :2006/09/16(土) 09:43:59
漏れの男汁を飲み干したら答えてやろう。


155 名前:デフォルトの名無しさん :2006/09/16(土) 10:03:02
>>152
タブブラウザの実装による。
COMのインタフェースとして取得できるなら望みはあるけど。
普通はそこまでしてないだろうな。

156 名前:デフォルトの名無しさん :2006/09/16(土) 16:41:08
タブブラウザ側でAPIぐらい用意してるだろ普通。


157 名前:デフォルトの名無しさん :2006/09/16(土) 17:57:00
janeのソース見る限り、外から使える仕組みになってるようには見えないぞw

158 名前:デフォルトの名無しさん :2006/09/17(日) 02:46:28
どこのJaneがタブブラウザかと

159 名前:デフォルトの名無しさん :2006/09/17(日) 13:59:17
すまん。間違えた。ぷにるはSDK公開されたら取得できるかもね

160 名前:128 :2006/09/21(木) 00:37:35
>>150
なんか別件で調べてたら偶然みつけた
VK_BROWSER_REFRESH
とかいうvirtual keyがあるらしい。XP/2000のみ有効らしいが。

161 名前:152 :2006/09/23(土) 23:02:35
レスありがとうございます。
とてもマイナーな洋物タブブラウザなので無理そうですね…
スクリプトエラーの警告がうざすぎるので消したかったのですが諦めます。

162 名前:デフォルトの名無しさん :2006/10/29(日) 18:23:48
IEコンポから呼ばれるイベントは、プログラムのメインスレッドとは違い
IEコンポが自分で作ったスレッド上で実行されるんですよね?
なのでそのイベント上ではメインスレッドと処理がぶつからないようにすべきなんでしょうか?

163 名前:デフォルトの名無しさん :2006/10/29(日) 18:41:04
IEの設定でJavaScriptをOFFにしても、自作プログラムに貼り付けたら普通にJavaScriptが実行された……

164 名前:デフォルトの名無しさん :2006/10/29(日) 19:47:13
>>163
自作プログラムの中は舞いコンピュータゾーン扱いされるのでは?
俺の想像だが。

165 名前:デフォルトの名無しさん :2006/10/29(日) 20:12:04
なんかのインターフェースで制限つきサイト扱いにできるよ。
OEが使ってるのもそれ

166 名前:デフォルトの名無しさん :2006/11/22(水) 17:06:05
IE7ベータのときに日本語を含んだURLのInternetOpenUrlが

A版 NG
W版 OK

だったのが、

A版 OK
W版 NG

に変わってる(IE6ではどっちもOKだった)

MSがもはや何をしたいのか分らん。A版戻したってことは
日本語URL何が何でも排除って方針でもないようだが…。

もう自分で変換することにしたよ(´・ω・`)


167 名前:デフォルトの名無しさん :2006/11/22(水) 17:07:07
A版 OK
W版 NG
ってのは正式版ではってこと

168 名前:デフォルトの名無しさん :2006/11/24(金) 13:30:42
>>116
LPWSTR で非 ASCII 文字を含む URL を渡したとき、どういう動作をしてほしいの?
UTF-8でエンコードしてURLEscape?
漏れには何を持って「OK」「NG」とするのかもわからない。

169 名前:デフォルトの名無しさん :2006/11/25(土) 10:31:20
>>168
166だけど俺に対して書いたんだよね。

>漏れには何を持って「OK」「NG」とするのかもわからない。
内部動作的な詳細は知らないが、IE6状態で動いてたものが
IE7を入れると動作が変わるのがNG。

>UTF-8でエンコードして
たぶんこれでOKなんだろうが、上に書いたとおりInternetOpenUrl
の内部動作の実際は知らないので、「互換性を保ってくれ」というの
が要望。

非 ASCII 文字を含む URLを使うなという話もあるかもしれないが、
プログラムのユーザーが何を入れるかは分らないからどうしようも
ない。

170 名前:デフォルトの名無しさん :2006/11/25(土) 14:55:35
> に変わってる(IE6ではどっちもOKだった)
IE6の動作が基準だったらこれはトートロジーで書く意味ないじゃん。
IE6がバグっててIE7でバグが修正されただけかもしれないのに。
どうせバグでもいいから動作変えるなと言うんだろうけど
まあIEコンポはSide-by-Sideでないから一理はあるな

171 名前:デフォルトの名無しさん :2006/11/25(土) 15:57:46
>IE7でバグが修正されただけかも

A版とW版って文字コード以外動作同じだと思ってたんだけど
そうじゃない場合もあるのか?

文字コードの変換(A←→W)はAPI使ってる。

IE7で『バグが修正されて』どっちも駄目になるなら
まだ整合性も有るように感じるけどね。

>> に変わってる(IE6ではどっちもOKだった)
>IE6の動作が基準だったらこれはトートロジーで書く意味ないじゃん。
そう? 166を書いた段階での参考情報として付加したまで。


172 名前:デフォルトの名無しさん :2006/11/25(土) 16:54:53
案外、インターネットオプションの「常にURLをUTF-8で送信する」がオフになっているだけというオチはない?

173 名前:デフォルトの名無しさん :2006/11/25(土) 18:25:22
>>172
>URLをUTF-8で送信
言われて、それらしきオプション、ONOFFどちらも試してみた。
けど変わらなかった。そういう問題でも無いみたい。

A版ならチェックがOFFでも日本語URL開ける。

174 名前:デフォルトの名無しさん :2006/12/05(火) 14:43:35
VB2005ではMSChartってインストールされないんでしょうか?

もしそうなら、代わりの機能とかどうにかしてMSChartを使うこととかできませんか?


175 名前:174 :2006/12/05(火) 19:15:17
VB.NETスレと間違えました。
向こうで質問しなおしてきます。

失礼しました。


176 名前:デフォルトの名無しさん :2006/12/06(水) 06:12:27
表示したページのWidthやHeightを調べて、スクロールバーが出ないように
Windowのサイズを変更したいのですが、WidthやHeightがわかりません。

どのように調べればよいですか?



177 名前:デフォルトの名無しさん :2006/12/10(日) 00:28:13
IHTMLDocument2か何かで取れないっけか

178 名前:デフォルトの名無しさん :2006/12/10(日) 04:02:54
取れないよ。自動でレンダリングするからWidth,Heighなんて取っても意味ないんじゃないのかね?

179 名前:デフォルトの名無しさん :2006/12/10(日) 11:38:52
>>176
ここはどうすんの?
http://worlds-highest-website.com/

180 名前:デフォルトの名無しさん :2006/12/10(日) 11:51:36
調べたらIWebBrowser2で取ることは出来るっぽいが、>>178の通りかも知れぬ

181 名前:デフォルトの名無しさん :2006/12/21(木) 01:20:17
シェルをC#でいじくってるんですが、
BeforeNavigate2の段階で、
移動しようとしてるフォルダのpIDL取得する方法はないですか?
URLじゃなくて。
NavigateCompleteすればShellGetPathで取れるんですが

182 名前:124 :2006/12/26(火) 01:21:39
お。こんなスレ出来てたのか・・・
では早速。
Internet Explorer_Hiddenウィンドウの役割と
IEのウィンドウで使われる独自メッセージについて調べているのですが、
うまく探せません。
いい情報を見かけた方、お教え下さい。


183 名前:182 :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だったよ。
http://support.microsoft.com/kb/890177
GET/POSTのデータ横取用プロキシ作って組み込むか。

186 名前:デフォルトの名無しさん :2007/01/08(月) 22:32:30
IE7だと解決してるのかねぇ

187 名前:デフォルトの名無しさん :2007/01/10(水) 20:07:45
今のさっきまでこのスレ過去スレと思ってた現役だったんですね
よろしくオナガイシマス
static CComQIPtr< IWebBrowser2 > pWB2;
こんな書き方良く見かけるのですがこれはpWB2にIWebBrowser2のポインタを
設定すると考えてよろしか?
COMコンポ全然わかんないんでスマソ

188 名前:デフォルトの名無しさん :2007/01/10(水) 20:08:35
スマソあげてもうた

189 名前:デフォルトの名無しさん :2007/01/10(水) 21:35:02
Template

190 名前:デフォルトの名無しさん :2007/01/10(水) 21:42:23
ATL

191 名前:デフォルトの名無しさん :2007/01/10(水) 22:29:33
187です
VS2005なのですが、コンパイラの設定でATLを使用するに設定しないとだめ?
それでpWB2の値の意味は何なの?けっきょく

192 名前:デフォルトの名無しさん :2007/01/10(水) 22:56:31
>>191
CComQIPtr< IWebBrowser2 > 型の変数を宣言しただけで、値は設定していない。
C++の基本とVC のCOM向け拡張の両方とが解っていないと、
C++でCOMやるのは難しいと思う。

193 名前:デフォルトの名無しさん :2007/01/10(水) 23:34:43
>>192サンクス
COMとかなるべく関わりたくなかったんだけど、やらなきゃいけない羽目になって
苦しんでいます、pWB2の型は何型になるのでしょうか?


194 名前:デフォルトの名無しさん :2007/01/10(水) 23:57:13
スマートポインタの概念を理解すべし。auto_ptrでぐぐると良い。
CComPtrも基本はauto_ptrと同じだ。要するに解放忘れを防ぐための仕組み。

195 名前:デフォルトの名無しさん :2007/01/11(木) 00:09:06
>>193
pWB2の型はCComQIPtr< IWebBrowser2 >型と何度も(r

196 名前:デフォルトの名無しさん :2007/01/12(金) 01:25:36
IEコンポーネントを使っても、
開いてるページに埋まってるFrameの中を見ることは出来ないんですか?


197 名前:デフォルトの名無しさん :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 名前:デフォルトの名無しさん :2007/01/21(日) 09:11:01
学校によるんじゃない?


203 名前:デフォルトの名無しさん :2007/01/21(日) 11:50:20
卒論wardファイルw

204 名前:デフォルトの名無しさん :2007/01/21(日) 11:53:39
スクリーンショットがDonut RAPTっぽく見えるんだが

205 名前:デフォルトの名無しさん :2007/01/21(日) 15:01:08
読んでしまった
しかしながら現状としては@AB個々のプログラムの方向性は出来上がってきたものの、
個々を関連付けるプログラムの作成には至っておらず、前述されている「タブブラウザ」への
組み込み、動作テスト等もまだ出来ていない状態である。最終的には独立したプログラムと
して完成させ、デスクトップ上で起動できる状態を目指していく状態にある。

何もしてねーwwwwww

206 名前:デフォルトの名無しさん :2007/01/22(月) 00:14:04
PCに縁遠い年寄り教授をだまくらかすにはこれで十分なんだろ

207 名前:デフォルトの名無しさん :2007/01/22(月) 00:27:18
とってもw ard!

既に社会人で業務としての資料作りも慣れてる俺が言うのもなんだが、
内緒だけどあの程度プレゼン資料なら、前日の夕方から慌てて徹夜でデッチあげたりしてる。


208 名前:デフォルトの名無しさん :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 名前:デフォルトの名無しさん :2007/01/22(月) 02:13:40
今日からここは自分の卒論を晒すスレになりました

最初のかたどうぞ



214 名前:デフォルトの名無しさん :2007/01/22(月) 02:56:21
freenetみたいだけど2chネラー向きのファイル共有ソフトの提案

215 名前:デフォルトの名無しさん :2007/01/22(月) 04:17:50
タイーホw

216 名前:デフォルトの名無しさん :2007/01/22(月) 04:19:11
IEコンポーネントの使い方をやさしく指導してくれるサイトや本ってあります?

217 名前:デフォルトの名無しさん :2007/01/22(月) 08:23:35
以下のテンプレに従って質問してください。

【性別】 男/女
【年齢】 実年齢
【居住地】 現在住んでいる所を行政区程度まで
【職業】 ありのままに
【身長】 cm表記で
【体重】 kg表記で正直に
【スリーサイズ】 バスト・ウエスト・ヒップをcm表記で。
【画像URL】 全身ならびに顔写真を100万画素クラスで。
【メールアドレス】 携帯電話もしくは、プロバイダ等のアドレスを。


218 名前:デフォルトの名無しさん :2007/01/23(火) 08:01:54
相当偏差値低いらしい阪南大学。
学生の質が垣間見えた。

219 名前:デフォルトの名無しさん :2007/01/25(木) 02:20:31
はいはい、次の卒論どうぞ。

220 名前:デフォルトの名無しさん :2007/01/25(木) 18:55:29
IHTMLWindow2::execScript で外部からjavascriptを実行できることは
わかったのですが、オブジェクト型を引数にとるjavascript関数に
引数を渡して実行することは不可能なのでしょうか
(例えばVCから IUnknown* の情報を渡したいとか)。

221 名前:デフォルトの名無しさん :2007/01/26(金) 20:40:08
>>199
今更だけどなんか見つけたよ。
http://isawseashell.blogspot.com/2007/01/via-proxy.html


222 名前:デフォルトの名無しさん :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 名前:デフォルトの名無しさん :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 名前:デフォルトの名無しさん :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 名前:デフォルトの名無しさん :2007/02/21(水) 14:05:15
スクリプトエラーのダイアログを非表示にしたいのですが、

Sleipnirのこれ
http://www.sleipnir-wiki.jp/original_index.php?FAQ#rbe2449f
はどういう実装になっているのでしょうか?

235 名前:デフォルトの名無しさん :2007/02/21(水) 19:36:43
IOleCommandTarget::ExecでOLECMDID_SHOWSCRIPTERRORを握りつぶす

Sleipnirの実装は知らんが、DonutRAPTのソースを落としてきて
AtlhostEx.h,ScriptErrorCommandTargetImpl.h,DialogKiller.h辺りを眺めてみればいいと思う。
対象言語がC++以外の場合は知らん。

236 名前:234 :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 名前:デフォルトの名無しさん :2007/03/17(土) 06:03:52
プロセスもういっこ作ってそこで制御

239 名前:237 :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入手先 :2007/03/17(土) 16:46:25

MSN版IE7
http://promotion.msn.co.jp/ie7/
http://download.msn.co.jp/download.aspx/sid=I7bzPs2A/ie7setup.exe

Yahoo版IE7
http://recommend.yahoo.co.jp/ie7/campaign/index.html
http://recommend.yahoo.co.jp/ie7/index.html
http://a109.g.akamai.net/7/109/31749/000/downloads.yahoo.co.jp/browser/ie/7/IE7Setup.exe

Google版IE7
http://www.google.com/toolbar/ie7/intl/ja/
http://dl.google.com/toolbar/data/ie7/IE7Setup_G_JP.exe



241 名前:デフォルトの名無しさん :2007/03/24(土) 22:04:58
テレビ番組の番組表なんですけど
その日によってURLが変わるんですけど
これをお気に入りにできませんか?

スクリプトのようなお気に入りってできます?

ローカルHTMLを経由してやるのは簡単ですが
ちょっと醜いやり方のような・・・

242 名前:デフォルトの名無しさん :2007/03/25(日) 02:13:04
IEコンポーネントに関係あるかなぁそれ。
日付に合わせてURLを作成して移動するbookmarklet作ればいいんでない?


243 名前:241 :2007/03/25(日) 09:45:27
THX!
javascript:ってやつですね?

IE特有の機能で、多分スクリプトに関係しているので
ここか、と思いました。
普通のHTML内のスクリプトとはちょっと違いますし・・・
(上述のローカルHTMLならそうかも)

ちなみにここってBHOとかは作らないんですか?
どうもありがとうございました。

244 名前:243 :2007/03/31(土) 00:23:07
ええともはやスレ違いなので質問という訳ではなく
独り言なのですが・・・

ブックマークレットってローカルファイルを表示中のIEからは
スクリプトブロックされて動かないみたいですね・・・
(XP SP2以前は動いたような?)

というかこういうのってどのスレに行けばいいのだろうか?
WSHでもHTAでもHTMLでもないし・・・

245 名前:デフォルトの名無しさん :2007/03/31(土) 00:28:43
>>244
Web制作板だっけ? そんな板があったハズ。

246 名前:244 :2007/03/31(土) 16:48:21
すいません・・・何度も・・・
以前にもWeb制作板内を探したんですが
やはりWebサイトを作る、という方向性で
IE依存のスクリプトやIE固有の機能に関しては
あまり積極的ではないような・・・?
スクリプトの場合、こことかはいいのかな、とも思うんですが・・・
ttp://pc11.2ch.net/test/read.cgi/hp/1070611524/
どうも度々すみませんでした

247 名前:デフォルトの名無しさん :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 名前:デフォルトの名無しさん :2007/04/09(月) 20:00:14
他と全く同じようにしてムリならばムリなんだろう

249 名前:デフォルトの名無しさん :2007/04/16(月) 18:34:24
選択範囲の座標を得る方法を教えて下さい。
IHTMLTxtRange 辺りかな?と思ったのですが、分かりませんでした。

250 名前:デフォルトの名無しさん :2007/04/18(水) 22:08:02
このスレってまだ生きていますよね。
IEコンポ使ってhtmlの表示を行っている途中で
ある特定の<img src="xxx">が出現したら、その画像を置き換えたいのですが
やり方がどうもわかりません。
htmlを書き換えて一時ファイルを作成してとかではなく、メモリストリームとかで処理したいのですが
ヒントとか、解説があるサイトとかあれば教えてください。



■過去ログ置き場に戻る■ 1- 次250 最新50
DAT2HTML 0.33f Converted.