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


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

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



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

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

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


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

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

(以上、前スレより)

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

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

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 ]
それはそれは。。。がんばって!






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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