[VC++6]起動しているIEを操作したい

[戻る]
わい 2005/09/06(火) 01:54:51
はじめまして。
VC++6.0を使用しIEの操作のツールを作成しようとしています。
ダイアログで考えています。

1.起動しているIEに対し、プログラム上からURLを渡したい。
  この場合は、下記のShellExecute関数を使えばいいのでしょうか?
  それとも何か別にいい方法ありますか?
     ShellExecute(HWND, "open", IEのフルパス, URL, NULL, SW_SHOWNORMAL);
2.起動しているIEに対し、フォームの入力内容を渡したい。
  CGIで送信した時の内容をプログラム上で生成して渡したい。
  Postですがどのようにすれば実現するのでしょうか?

以上、よろしくお願いします。

switch 2005/09/06(火) 17:54:08
1.ShellExecuteでもかまいません。ほかはCreateProcessですかね
  動的にやるならば、ダミーのHTMLファイル作って(中身は空でいい)
  FindExecutableで関連付けされているアプリ取得して、CreateProcessで起動。
  そのときにプロセスIDでも取っておけば、WaitForInputIdleで入力できるように
  なるまで、制御にWAITをかけられます。

2.起動したIEのウィンドウハンドルを取得します。
  プロセスIDがあれば、それからウィンドウハンドルを検索してもいいでしょう。
  取得したIEハンドルの下層にある、Internet Explorer_serverクラスの
  ウィンドウハンドルを取得し、COMからIWebBrowser2のポインタをもらいます。

3.IWebBrowser2のget_Document使ってドキュメントを取ったら、
  IHTML系のオブジェクトを使って、エレメント操作をする

こんな感じです。

  
  
  

わい 2005/09/07(水) 10:19:04
switchさん、ありがとうございます。

IEのウィンドウハンドルを取得がどう組めば探せますか?
おそらくEnumWindows関数を使うんでしょうか?
いろんなサイトで調べるとFindWindowやEnumWindowsが出てきます。
もしEnumWindows関数ならば、ウィンドウを列挙するサンプルを教えて下さい。

あとは、2、3の参考になるサイトなどあれば教えて下さい。

聞きっぱなしで申し訳ないですが、よろしくお願いします。

KING・王 2005/09/07(水) 12:37:55
> おそらくEnumWindows関数を使うんでしょうか?
> いろんなサイトで調べるとFindWindowやEnumWindowsが出てきます。
> もしEnumWindows関数ならば、ウィンドウを列挙するサンプルを教えて下さい。

EnumWindow関数まで調べれているなら、サンプルも見つかっているような気がするのですが。

とりあえず"EnumWindow"でぐぐると以下のようなページが見つかりましたが。
> http://yokohama.cool.ne.jp/chokuto/urawaza/mcn/vc_enumwnd.html

わい 2005/09/07(水) 13:25:07
KING・王さん、ありがとうございます。

いろんなサンプルはありますが、思うようなものがなかったんです。
MFCベースのがあまりないし、なぜかエラーだったり.......
とりあえず起動してるのはひろえました。

わい 2005/09/07(水) 13:41:59
switchさん、こんにちは。

IEのウィンドウハンドルですが、EnumWindows関数のコールバックで"IEFrame"と一致する
ウィンドウクラスを探します。
それで見付かった時のハンドルがIEのウィンドウハンドルの事と同じでしょうか?
また、取得したIEハンドルの下層にある、Internet Explorer_serverクラスのウィンドウ
ハンドルとは?

switch 2005/09/07(水) 17:13:04
いつの間にかレスが付いていたw
遅くなりました。switchです

IEFrameと一致する・・・でOKです。
出来れば、プロセスIDの比較もすれば100%確実です。

Internet Explorer_serverとは・・・
VC6++付属のSPY++で確認するとわかると思います。
Shell DocObject Viewクラスの下にあります。
EnumChildWindowsを使用して取得してください。

参考になるかはわかりませんが・・・
嫁のIDで勝手にブログを倉庫代わりにしてます。
http://blogs.yahoo.co.jp/jyouga
の”VCでIEを使い倒す その4(IWebBrowserの取得)”
を見てください。

元の参考ブックマークが見当たらないorz

switch 2005/09/07(水) 17:16:07
参考URLあったです。
http://www.nitoyon.com/vc/tips/ie_component.htm

わい 2005/09/08(木) 00:56:17
switchさん、ありがとうございます。

そのURLの「ウインドウハンドルからIWebBrowser2を取得したい 」のロジックをそのま
ま写しましたが、
コンパイルでエラーになってしまいました。
CComPtr<IWebBrowser2>での型がとか言われてたと思います。(コンパイルは別の場所な
ので....)
宣言か何か足りないかだと思いますが........

switch 2005/09/08(木) 09:03:57
#include <mshtml.h>
#import <shdocvw.dll>
#include <oleacc.h>

を入れてみてください。

古いスレッドには追加発言できません。