07/12/20 23:36:14
>>404
指定座標位置付近の文字をカーソルで選択して
その選択文字列を読み取ればいい。
406:403
07/12/20 23:50:21
>>404
君はボンクラ
私は天才プログラマー
ということでいいかね。
407:デフォルトの名無しさん
07/12/21 03:13:15
いいえ
408:デフォルトの名無しさん
07/12/21 08:06:24
URLリンク(deftv.atspace.com)
URLリンク(deftv.atspace.com)
URLリンク(deftv.atspace.com)
409:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/21 08:47:06
>>405
その指定座標付近の文字を選択ってのはどうやるんだ。
選択時のマウス動作をエミュレートすんのか。
411:デフォルトの名無しさん
07/12/21 12:28:59
>>408
精神的ブラクラ
412:401
07/12/21 12:50:22
みなさん、ありがとうございます。やっぱりちょいと難しそうですね。
413:デフォルトの名無しさん
07/12/21 13:07:00
>>410
カーソルで選択ってものすごい基本的なWindowsAPIじゃん。ウインドウズのプログラマなら誰でも知っているだろ。
マウス動作をエミュレートって・・・アフォカ
414:デフォルトの名無しさん
07/12/21 15:31:56
>>413
おお?それはテキスト入力にフォーカス当たった状態のこといってんの?
そうじゃなくブラウザ上のふつうのテキスト部分の話とおもったんだが。
それもできるんか。
415:デフォルトの名無しさん
07/12/21 16:02:58
>>414
基本的なことをまったく理解していないな。ブラウザ上で普通に範囲選択してCtrl+Cあるいは、右クリックでコピーが実行できるじゃん。
それをプログラム的に実行するだけ。
416:デフォルトの名無しさん
07/12/21 16:05:02
>>415
ぜひ、そのコードを教えてください
417:デフォルトの名無しさん
07/12/21 21:19:44
これでWM_COPYとか言ってきたらズゴーなんだが。
418:デフォルトの名無しさん
07/12/21 23:05:37
JavaScript技でそんなのがあったな。Selectionオブジェクトだかを作って
その占有領域の座標を取って処理するの。座標から近傍文字、の逆バージョンだけど、
ユーザーが選択操作してなくてもできてたので、この応用でなんとかならないかな?
419:デフォルトの名無しさん
07/12/21 23:42:10
URLリンク(deftv.atspace.com)
420:デフォルトの名無しさん
07/12/21 23:46:50
>>415
いやだから、もっと具体的なコードかけよ、そこまでいうなら。
マウスエミュレートもプゲラって言った以上、それもしないコードだぞ?
まず選択するためには、選択始点のテキストがどの座標に存在するか取得しないといかん。
ってかこの時点でこの件は目標は達成なんだが。
421:デフォルトの名無しさん
07/12/26 10:05:19
IHTMLElement から、実際の描画に使われてるフォントの種類やサイズを
調べるにはどうしたらいいですか? style とか見ても null なんですが、
他にどこを見ればよいものやら。
422:デフォルトの名無しさん
07/12/28 13:10:50
いまだに>>378が分からないのですが・・・
pWB2->put_Visible(VARIANT_FALSE);
では音は消えませんでした。もう少し詳しく教えて頂けませんか?
423:デフォルトの名無しさん
08/01/08 16:22:27
サムネイルのような画像を、そのリンク名と関連付けしてデータベース化したいと思っています。
表示中のサムネイル画像ファイルをキャッシュフォルダから拾う方法はあるでしょうか。
キャッシュフォルダには別名で格納されているようで、特定する方法が分かりませんでした。
作成日やサイズで特定しようにも、確実とは行きません。
直接GETする以外で何か良い方法をご存知の方、ご教示いただければと思います。
424:デフォルトの名無しさん
08/01/08 19:10:19
WinInet経由でいいなら、GetUrlCacheEntryInfoでキャッシュの情報が取れる。
425:423
08/01/09 09:59:39
>>424
これで何とかなりそうです。
すばらしい情報をありがとうございました。
426:デフォルトの名無しさん
08/01/13 23:43:43
プロキシ設定を自分のIEコンポーネントだけ別にすることはできますか?
InternetSetOption(NULL,.... )だとシステム全体に影響が及んでしまうので、
hInternetを指定して制限をかければいいのだと思いますが
コンポーネントが利用中のhInternetを知る方法が無いので困っています
427:デフォルトの名無しさん
08/01/14 18:45:46
>>426
私のソースにはこんなのがありました:
UrlMkSetSessionOption(INTERNET_OPTION_PROXY, pInfo,sizeof(INTERNET_PROXY_INFO),0);
これで動いてたような気がするけど、何年も前のブツなので要検証。
428:デフォルトの名無しさん
08/01/17 15:01:00
IEコンポーネントを表示せずに、NavigateやDownloadCompleteを使って、
データの取得を行うことは可能なのでしょうか?
429:デフォルトの名無しさん
08/01/17 15:27:09
可能です
430:デフォルトの名無しさん
08/01/17 15:33:44
どうも有り難うございます。
う~ん、すると、Windowsサービス化も可能なんでしょうか?
System.Windows.Forms派生のクラスをnewした時点で、
変なことになっちゃうんでしょうか?
Windowsサービスは作ったことないので想像もつかないのですが、
通常、UIはサービスを持てないのですよね?
デスクトップとの対話をサービスに許可、とか設定せずに、
普通のデーモン的なデータ取得を行えると、だいぶ方向性が広がるのですが。
431:デフォルトの名無しさん
08/01/17 15:36:02
ううっ、下記の部分、逆でした。
>通常、UIはサービスを持てないのですよね?
Windowsサービスは、普通はUIを持てないのですよね。
ユーザがログインしない状況でも、IEコンポーネントでデータ取得を
行えると嬉しいのですが。
432:デフォルトの名無しさん
08/01/17 21:18:39
それはIEコンポでなければならないのか?
433:デフォルトの名無しさん
08/01/18 09:07:26
う~ん、取得したDOMを操作して、色々処理するので、
結局、何らかのブラウザエンジンは必要になるのです。
まぁ、ゲッコーとかに乗り換えるっていう手はあるのでしょうが、
IEコンポーネントを頑張って使い続けるか、
オープンソースのブラウザエンジンから不要なところをばっさり切って
使うかは、今後の大きな課題にはなるのですが‥‥。
434:デフォルトの名無しさん
08/01/18 18:48:48
>>430
そういうことは、人に聞くより自分で試したほうが早いぞ。
435:デフォルトの名無しさん
08/01/19 12:12:52
質問があります
IEではTAB、SHIFT+TABキーでフォーカスの移動が行われますが、
これを外部から行うにはどうすればいいでしょうか
TABキーイベントを送る、というのはナシの方向で・・・
436:デフォルトの名無しさん
08/01/19 19:45:22
SetFocus
437:デフォルトの名無しさん
08/01/20 03:11:38
IEのフォーム部品はウィンドウを持ってないからSetFocusは役に立たない
438:デフォルトの名無しさん
08/01/20 04:34:22
IHTMLDocument2::all、
IHTMLDocument2::activeElement、
IHTMLElement2::focus
439:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/20 10:16:18
>>436-438
ありがとうございます!
試してみます!
ダイアログのように一発でやる方法があるかとさがしておりました!
442:デフォルトの名無しさん
08/01/20 10:30:21
"DOCHOSTUIFLAG_NO3DOUTERBORDER" が定義されていない…
mshtmhst.h内で定義されてるはずのものなのか、それ以外のどこかなのかは
判らんが、とにかく無い。
443:デフォルトの名無しさん
08/01/20 10:47:47
うちのMsHtmHst.hタンには定義されてるよ
444:デフォルトの名無しさん
08/01/20 10:49:20
よし、Platform SDK落として、中のmshtmhst.hをMinGWのincludeに突っ込んだら出来た。
445:デフォルトの名無しさん
08/01/23 23:59:25
すみません教えてください
取得したpElementがインラインフレームか
普通のフレームかを判定したいのですが
良い方法はあります?
446:デフォルトの名無しさん
08/01/24 00:28:36
tagName見るなりIHTMLIFrameElement取得してみるなりでいいんじゃね
447:デフォルトの名無しさん
08/01/24 01:07:54
>>446
ありがとうございます
これをヒントに調べてみます
448:デフォルトの名無しさん
08/01/31 10:55:56
ho
449:デフォルトの名無しさん
08/01/31 13:00:15
IInternetProtocol::Start()でゴニョゴニョするコードを書いているんだが、
呼び出し元のIWebBrowser2を取得することって出来ないのかな。
複数ウィンドウのブラウザで、IWebBrowser2が複数存在しているので、
グローバル変数では解決出来ない。
スレッドが分かれているわけでもないのでTLSでも解決できない。
450:デフォルトの名無しさん
08/01/31 16:02:17
>>449
IWindowForBindingUIでググれ
451:デフォルトの名無しさん
08/02/09 01:17:35
すみません 教えてください
過去ログで見た気もしますが 見つけられなくて・・・
get_innerHTMLでHTMLソースを取った場合はIEが有る程度整形して
ますが これを メニュー → 表示 → ソースで
表示されるようにオリジナルの大文字・小文字もある状態で
取りたいのですが可能でしょうか?
452:デフォルトの名無しさん
08/02/09 02:09:13
kanou
453:451
08/02/09 02:27:55
>>452
すみません 困っています
もし よろしければ教えていただけないでしょうか?
454:デフォルトの名無しさん
08/02/09 23:24:16
MFCでURLジャンプ時のスクリプトエラー非表示はどうすればいいですか?
IOleCommandTarget::Execで
OLECMDID_SHOWSCRIPTERRORを使うのでしたら、
どのように使うのか教えていただきたいです。
【関連事項】
AtlhostEx.h
ScriptErrorCommandTargetImpl.h
DialogKiller.h
455:デフォルトの名無しさん
08/02/10 00:54:23
今日のメニューについて
URLリンク(zoomtv.atspace.com)
456:デフォルトの名無しさん
08/02/12 13:40:22
CreateWindow("AtlAxWin", "Shell.Explorer.2"・・・
としたときにsubmitやクリックできますか
457:デフォルトの名無しさん
08/02/27 13:53:42
IE7になってマウスの真ん中ボタンで新しいウインドウで
開くようになったんですが、IEコンポーネントを使った
あぷりでは、これは自分で書くしかないんでしょうか?
それとも簡単に有効にする方法があるんですか?
知っている方いましたら教えてください。
458:デフォルトの名無しさん
08/02/27 14:41:58
IEはIEコンポーネントを使ってるだけで、
真ん中ボタンクリックで新規ウィンドウはIEに実装されただけのもの。
IEコンポーネント自体にそういう機能があるわけではない。
459:デフォルトの名無しさん
08/02/27 14:48:16
>>458
ありがとう。
ということは自分でやるしかないんですね。
かなり大変そうですけど・・
460:デフォルトの名無しさん
08/02/27 15:53:19
>>459
おいおい、ボタン押してウィンドウ開くなんて大した手間じゃないだろう
461:デフォルトの名無しさん
08/02/27 17:46:36
>>456
AtlAxGetControl
AtlAxGetHost
>>460
新しいウィンドウで開くとなると結構処理が必要じゃない?
462:デフォルトの名無しさん
08/02/28 11:28:49
大抵のダブブラウザは実装してる
463:デフォルトの名無しさん
08/03/01 04:18:40
ATL使わずにIWebBrowser2のイベントを取得したいんだけど、
どういうコード書けばいいのか参考になるサイトとかないですか
探し方が悪いのかATLなコードしか見つからないんです。
464:デフォルトの名無しさん
08/03/01 04:27:15
そんな事できるのか・・・
465:デフォルトの名無しさん
08/03/01 05:01:32
>>463
DWebBrowserEvents2のこと? だったら普通にOLEコントロール扱うようにすればいけるんじゃね?
まあMFCとかATLとか使わずにやろうとすると死ぬほど面倒らしいが。
466:デフォルトの名無しさん
08/03/01 06:19:08
>>465
うん、DWebBrowserEvents2。
WindowsMobile版のIEコンポーネントを使ってるんだけど、
ATLでの実装がコンパイル通らなくて、
ATLなしでの実装にするか・・・?ってとこにたどり着いたとこ。
死ぬほど面倒ならATLが通る方法調べるほうが楽かなぁ。。
467:デフォルトの名無しさん
08/03/01 06:20:39
コンパイラはなに?
468:デフォルトの名無しさん
08/03/01 06:29:49
VS2005Pro、C++でやってる
469:デフォルトの名無しさん
08/03/01 08:03:29
コンパイルエラーの内容を書いた方がいいのでは。
あと接続ポイント周りをちゃんと理解すると光が見えるかも。
470:デフォルトの名無しさん
08/03/01 10:10:11
>>466
Essential COMに載ってるよ。ネストクラスしたりとかなり面倒だったけど
ATLなし(Win32SDKのみ)でイベント取得までは確認できた。
471:デフォルトの名無しさん
08/03/01 10:50:34
VC++あるなら、CHtmlViewのソースでも見るとか。CHtmlViewが使えるならそれ使うに越したことはないと思うが。
472:デフォルトの名無しさん
08/04/17 02:59:40
IEコンポーネントのJavaScriptを一括で
無効にする方法ってありますか?
473:デフォルトの名無しさん
08/04/17 22:50:05
あるんじゃないの?
俺はやったことないけど、使っているブラウザ (Donut RAPT)が
ボタン1つでオンオフできる機能を持っている。
474:デフォルトの名無しさん
08/04/24 20:30:33
表示してるページで右クリックメニューに追加した「irvineにすべてのURLを送る」みたいのを
自動で実行するのはどうしたらできますか?
475:デフォルトの名無しさん
08/04/27 02:08:05
MFCで組んでるんですが、いろんなサイトを見ていくと使用メモリが増える一方。
メモリリークしていると思ったほうがいいのでしょうか?
それとも履歴蓄積によるものと考えてしまっていいのでしょうか?
476:デフォルトの名無しさん
08/04/27 02:28:31
>>475
メモリリークっていうか、開放し忘れじゃね?
よくあるみたいだよ。
477:デフォルトの名無しさん
08/04/27 03:49:52
IEコンポーネントを使うとそうなるって問題もあったはず。
一旦アプリを最小化すると開放されたようになる。
本当にリークしてるのか、本当に開放されてるのか、分からないけどね。
478:デフォルトの名無しさん
08/04/27 12:15:51
>>477
最小化すると減るのはワーキングセットの量。
479:デフォルトの名無しさん
08/04/29 08:38:59
タスクマネージャーとかで見る使用メモリが増えていくからといって
メモリリークしてるとは限らない。
URLリンク(kkkon.hp.infoseek.co.jp)
この辺参考にしてみるといいかもね。
480:デフォルトの名無しさん
08/05/08 17:50:12
なんかFlash関係が動かなかったりするね。
481:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/09 02:27:06
IEコンポーネントでHTML内に記述されたJavascriptの関数を実行したいのですが、
可能でしょうか?HTMLは自分で用意したものです。
483:デフォルトの名無しさん
08/05/09 20:27:54
>>482
できるよ。
スクリプトを動的に追加することができるから追加したコードで静的なコードを実行すればいい。
HTMLを自分で用意するんだったらIEコンポーネントでやる用途が想像できないけど?
484:デフォルトの名無しさん
08/05/10 04:39:22
>>483
URLリンク(homepage3.nifty.com)
このページの情報を参考にして実装する事ができました。
では逆にHTML側から、ブラウザ(アプリケーション)の関数を実行する事は可能でしょうか?
さすがに無理ですかね、それは・・・
485:デフォルトの名無しさん
08/05/10 06:30:53
>>484
window.external経由ならわりと楽勝で。
486:デフォルトの名無しさん
08/05/18 09:43:36
IE拡張(BrowserObjectHelper)からマイドキュメントフォルダにファイル書き込んでるんだけど
IE保護モードがじゃまして書き込めねぇ・・・
いくつかMSのサイト読んでレジストリいじったりしたが、相変わらず駄目だ
誰かやり方おしえて。
487:デフォルトの名無しさん
08/05/18 12:21:05
アウトプロセスのCOMサーバでも作ってデータ送って書き込ませれば?
488:デフォルトの名無しさん
08/05/19 09:31:02
それは最後の手にしたいな。
URLリンク(www.microsoft.com)
書き込み時に、ブローカープロセスの昇格ってのが出るようにできるっぽいけど、
ここにあるようにレジストリに書いたがうまくいかん。
489:デフォルトの名無しさん
08/05/19 09:37:46
ああ、COMサーバーのCLSIDを登録するってことなんだな、これは・・・
うう、めんどくせー
490:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/23 19:58:46
>>490
HTMLID_FINDでググれ
URLリンク(support.microsoft.com)
492:デフォルトの名無しさん
08/05/27 02:44:37
ダイアログに WebBrowser を 貼り付けて 表示しています。
その ページ内で window.close() を 呼んだら
ダイアログ自体を終了するようにしたいのですが、 WebBrowserEvents
のイベントを取得するような方法しかないのでしょうか?
493:デフォルトの名無しさん
08/06/07 17:33:24
ローカルにある js ファイル ページ表示後に実行したいので、
DWebBrowserEvents の Document Complete 後に
Document に script タグを追加しようとしているのですが、
追加されません。
このやり方だとだめなのでしょうか?
どこかにサンプルがあったりしますか?
494:デフォルトの名無しさん
08/06/13 19:11:21
Win32APIすれから来ました
HTMLを解析したいのでIHTMLDocument2を使おうと思っています
CComPtr<IHTMLDocument2> aDoc;
aDoc.CoCreateinstance(CLSID_HTMLDOCUMENT);
aDoc->put_URL(CComBSTR("URLリンク(~)")); //URLの読み込み(のつもり)
aDoc->get_images()
この put_URL を使うとブラウザで引数のURLを開いてしまい、また、get_imagesで取得したイメージコレクションのサイズが0になっています。
まず、「ブラウザを開かないでHTMLを解析したい」のと、「get_images で取得できていない」理由がよく解りません。
コマンドラインから使うツールのつもりなのでCUIの方がうれしいのですが、ダイアログかなにかで表示させる必要があるのでしょうか?
#イメージとしてはURLを引数で渡すとそのページのIMG src="***" を抽出するプログラムです。
495:デフォルトの名無しさん
08/06/13 19:23:39
>>494
ここにサンプルがあったよ
URLリンク(d.hatena.ne.jp)
496:デフォルトの名無しさん
08/07/23 00:24:40
IWebBrowser2から作ったIEコンポーネントで、フラッシュゲームのページでゲームのキー入力が
効きません助けてください!
IOleInPlaceActiveObject::TranslateAcceleratorもメッセージループ内に入っています!
497:デフォルトの名無しさん
08/07/23 09:21:35
そういや俺もニコニコとかのフラッシュ使ったページでキー入力効かなかったことがあったな。
どうやって解決したか思い出したら書き込むよ。
498:デフォルトの名無しさん
08/07/23 11:55:03
質問です。
戻る、進むことが出来るか否かを判断するにはどうすればいいんですか?
IWebBrower2のメソッドにそれらしき関数が見当たらなかったんだけど
499:デフォルトの名無しさん
08/07/23 20:05:14
DWebBrowserEvents2のCommandStateChangeかなにか
500:デフォルトの名無しさん
08/07/24 18:42:51
>>499
遅レスですがありがとうございました!
501:デフォルトの名無しさん
08/07/24 20:13:24
VC+ATLでタブブラウザっぽいものを作っています。
DWebBrowserEvents2のDISPID_NEWWINDOW2イベントで、
新しく開く遷移先のアドレスを知るためにはどうしたらいいんですか?
OnNewWindow2のハンドラでIEが立ち上がるのをキャンセルするまでは分かったんで巣が。。
Donutのソースみたけどいまいち分かりませんでした・・・
502:デフォルトの名無しさん
08/07/25 19:21:06
NewWindow3にしちゃうのは?
503:デフォルトの名無しさん
08/07/28 14:53:44
WSH/VBScriptからNewWindow?でcancelできない?
504:デフォルトの名無しさん
08/08/08 20:08:34
IE6が入っているPCでは問題なく動作しているプログラムが
IE7が入っているPCで正しい動作をしてくれません。
URLリンク(www.nitoyon.com)
このサイトを参考にC++(VC++)でIEコンポーネントを呼び出しています。
調べてみると、どうやらIE7でNavigate2を呼び出すと
正しくページに移動できないみたいですね。
色々調べてみたんですけど、VC++でのIEコンポーネントの使用で
IE7に対応させるような方法が分かりません。
IE7環境でVC++からIEコンポーネントを呼び出して
正しくページ移動できるようなプログラムは可能でしょうか。
505:デフォルトの名無しさん
08/08/09 16:49:59
しらんけど↓でなんとかならんかのお
Microsoft Web Browserコントロールのセキュリティを制御する:CodeZine
506:デフォルトの名無しさん
08/08/09 18:40:03
ページから移動するんじゃなくて、ページごとに作り直すといいんじゃない?
507:デフォルトの名無しさん
08/08/27 22:13:09
>>504
AtlAxCreateControlExを使用した方法だとうまくいきますよ。
508:507
08/08/27 22:19:03
>>504の詳細を聞かずにレスしたので、思っているのとは違う結果になるかもしれない。
補足すると、タブを使用しない。キオスク端末見たいなことをやりたければ、
AtlAxCreateControlExを使用した方法で作れます。
509:デフォルトの名無しさん
08/08/31 16:14:38
IE7でアクティブなタブがshellwindowsのどれか、わかりますか?
510:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/09/21 12:02:52
>>510
厳密に調査したわけではないが、アクセスタイミングによるものだと思う。
windowオブジェクトは、初期状態で存在しているため、
直にアクセスできるのだと思われる。
全てのイベントを拾って、ポーリングすればアクセスできるタイミングが分かるはず。
試しに html側 head内にてvar i=1000を定義、body onloadにて、
iを初期値と比較して結果を出す関数を作成。
全てのイベントを拾って、GetDispID( 変数名, fdexNameCaseInsensitive, &dispID )
を実行して、DISPID_UNKNOWN != dispIDが成立したら関数InvokeExにて値を変更したら
onload関数の結果が変わるのを確認した。
512:デフォルトの名無しさん
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
それはそれは。。。がんばって!