IEコンポーネントを使い倒すスレ Ver.2at TECH
IEコンポーネントを使い倒すスレ Ver.2 - 暇つぶし2ch512:デフォルトの名無しさん
08/09/26 12:43:09
javaのwin32oleでブラウザ作ってるんですが
表示中のHTMLの任意のタグの内容を取る方法って何ですかね?
例えばクリック→srcElement取得ってどうやったらいいのか・・・。

513:デフォルトの名無しさん
08/09/27 01:17:13
win32oleを使用したことが無いので詳しくは分からないが、IHTMLDocument2のI/Fが取れれば、
メンバ関数elementFromPointでできると思う。


514:デフォルトの名無しさん
08/09/27 22:09:26
IE7 + Vista + 保護モードだと、BHOからファイル書き込みが
所定のパスにできないですよね。
これを解決しようと奮起してます。
ファイル書き込み部分をCOM化しようとしてるんですが、
どうにもうまくいきません。
URLリンク(msdn.microsoft.com)
ここを読んだんですけど、
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
08/09/27 22:11:01
ファイル書き込みのCOMはBHOと同じDLLに含まれてます。
ファイル書き込みのCOMを別のEXEサーバーにおいて、
BHOから呼び出したんですが、COM生成はできても、
ちょっとするとEXEサーバーから勝手に切断されてしまいます。
どうしていいのか、さっぱりわかりません・・・

516:512
08/09/30 09:54:56
>>513
ありがとうございます
やってみます

517:hiro
08/10/08 14:47:16
こんにちは。
URLリンク(www.nitoyon.com)
のサンプルコードを落として VS.net 2003 Standardで
開いてビルド実行、アドレスバーに打ち込んでGOを押しても
メッセージが出て(atlcomcli.h Line148)で
実行時にエラーになります。
comは初心者でよく分かりません。
どなたか対処法をご存知ないでしょうか?
どうかよろしくお願いします。

518:デフォルトの名無しさん
08/10/08 17:40:03
>>517
そこの「VC++.NETでの注意点」ってとこ読んだか?

519:hiro
08/10/08 18:50:31
はい、読みました。

昔会社でやってた頃、VC6.0のときは作動できたのですが、
なぜか自宅のVC++.net 2003 Standardではエラーが出るのです。


520:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/11 22:58:55
html 関連の質問です。
VC++ 2005、WinXPでプログラムを組んでいますが、あるhtmlファイルからanchorタグを読み込み、リンク先のページを取得したいと思います。
一々、自作のライブラリでリンク先を検出するようだと、作成時間がかかって仕方ないので、どなたか、htmlをパースしてリンク先のアドレスを取得できるような
ライブラリや関数などをご存知の方、教えていただけないでしょうか?


----

c++相談室から誘導されてきました。
よろしくお願いします。

522:デフォルトの名無しさん
08/10/11 23:10:07
その程度の用途でIEコンポーネントなんか使ったら余計時間かかる気がするが。
正規表現かなんかで抽出したほうがはやくね?

523:デフォルトの名無しさん
08/10/11 23:18:16
マジっすか……
正規表現だとboost辺りかな……

とりあえず、boost使ってみることにします。

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

524:デフォルトの名無しさん
08/10/12 13:17:44
BHOを作ってるのだが、
VSのプロジェクトのプロパティ>構成プロパティ>デバッグ>コマンド
にiexplorer.exeのパス書いて、デバッグ実行すると、
IEが起動して自動的にアタッチしてくれる。
それはいいんだが、なぜかそうやって起動するとIE7+Vistaでの保護モードが無効になってしまう。
その状態でインターネットオプション見ても保護モードにチェックは入ってるのに。
普通にIE起動したら保護モード。
誰か理由説明できる人いる?

525:デフォルトの名無しさん
08/10/12 14:12:10
その状態で2ch見ても保護モードにならんの?

526:デフォルトの名無しさん
08/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
参考サイトはこの辺 URLリンク(msdn.microsoft.com)(VS.85).aspx

527:デフォルトの名無しさん
08/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:もう見てないよな?
08/11/14 23:05:07
>>523
> マジっすか……
> 正規表現だとboost辺りかな……
>
VCならRegExpをCOM経由で使えば正規表現がつかえるらしい

VCで正規表現 (要IE5.5以上)
URLリンク(page.freett.com)

「IE5.5以上」なんで条件を満たしていないWindowなんてあるの?

529:デフォルトの名無しさん
08/11/14 23:33:38
素のWindows2000

530:デフォルトの名無しさん
08/11/15 18:48:42
RegExpはVBScript 5.0だろ
IE5.0だろ
素のWindows2000だろ

531:デフォルトの名無しさん
08/11/15 21:27:32
鬼車使っとけ

532:デフォルトの名無しさん
08/11/20 10:06:31
IDocHostUIHandlerを実装したクラスを適用させるにはどうすりゃいいんでしょうか?
NavigateComplete2でSetUIHandlerはイクないみたいなことが色々書いてありますし、
それでは初めてのNavigateの時にはXPスタイルを適用できないみたいですし・・・
GWL_USERDATAをGetWindowLongでIAxWinHostWindowを取得してSetExternalUIHandlerでも出来ないことも無いですが、
D&Dが使えなくなるっぽいなのでこちらもだめみたいです

533:デフォルトの名無しさん
08/11/20 10:55:09
MFCのソースでも見ればいいんじゃね? Platform SDKに入ってなかったか。

534:532
08/11/20 11:41:01
MFCの環境が無いので見れません
ごめんなさい

535:デフォルトの名無しさん
08/11/20 11:57:27
>>534
>>533は「無償配布されてるPlatform SDKを入れてみろ」って言ってるんだと。

536:デフォルトの名無しさん
08/11/20 12:06:41
>>535
Platform SDKは既に入れてありますが、MFCのソースはどこにありますでしょうか?
mfcディレクトリにはヘッダしか見受けられませんが・・・

537:デフォルトの名無しさん
08/11/20 13:02:22
src\mfcにないならないんじゃない?

538:532
08/11/20 13:23:30
src\mfcを検索してみましたが、IDocHostUIHandlerの記述はないようです

本題に戻って、お願いします

539:デフォルトの名無しさん
08/11/20 16:57:23
>>538
URLリンク(msdn.microsoft.com)

540:532
08/11/20 17:24:56
>>539
こんな方法で出来るとは・・・
神様ありがとうございます

541:sdaf
08/11/26 16:16:56
adsf

542:デフォルトの名無しさん
09/01/08 18:22:37
ie7でShellWindowsの中からactiveなものを見つけることはできないっすか?

543:デフォルトの名無しさん
09/01/11 15:33:39
MFC(VC++6.0)のCHtmlViewで、右スクロールバーの「現在のスクロール位置」の取得
方法が分かる方はいらっしゃいますでしょうか?

いろいろ調べて、試してみたりしたのですが、どうしてもうまくいかないのです…


544:デフォルトの名無しさん
09/01/11 19:13:07
VS2008 MFCにてIEコンポーネントを使用して自動巡回ソフトを作りたいと
考えています。
IEコンポで指定のページまでは簡単に表示出来たのですが、
フォームに文字(ID/PASS)を入力したり、ボタンをクリックしたりする
のはどうやったらいいのでしょうか?

参考になるソースなどあるサイトなどあったら教えて下さい。

545:デフォルトの名無しさん
09/01/11 20:12:13
まあIHTMLDocument*あたりからDOM経由すればそういうことはできるが、
普通はそういう面倒なことはせずに直接自分でフォーム送信時に送られるリクエストを作成するだろうな。

546:デフォルトの名無しさん
09/01/16 23:22:51
>>517
亀だが「AtlAxWin」の部分をVSのVerにあわせてみては?

参考URL
URLリンク(fssblog.blog50.fc2.com)

547:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/02/18 13:55:20
>>546
>>517 じゃないけど助かりました!

550:デフォルトの名無しさん
09/03/16 02:31:52
そうか

551:デフォルトの名無しさん
09/03/22 02:24:55
IE8になって、IEコンポーネントを使って値を設定するときのセキュリティの変更があったようです
INPUT TYPE="FILE"
に設定するのに今までフォーカスを当ててからSendKeyを使っていたのですが、どうやら駄目になった模様・・・

解決方法はあるのでしょうか

552:デフォルトの名無しさん
09/03/22 21:29:34
知らんけどタイミングが合ってないだけじゃないのか?

553:デフォルトの名無しさん
09/03/23 10:21:37
能無しはけーん

554:デフォルトの名無しさん
09/03/23 22:46:49
それはそれは。。。がんばって!


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch