WindowsのアプリケーションをBorland C++ Builder で開発しています.本アプリケーションと同時にInternet Explorerを起動させておき、本アプリケーションからInteret Explorerを操作(F5:最新の情報に更新)する方法はありますでしょうか。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:kidd_pclabo No.1

回答回数102ベストアンサー獲得回数0

ポイント20pt

http://www.hatena.ne.jp/1121507757#

人力検索はてな - WindowsのアプリケーションをBorland C++ Builder で開発しています.本アプリケーションと同時にInternet Explorerを起動させておき、本アプリケーションからInteret Explo..

sendkeysでF5送るとか

id:tj2047

ありがとうございます!

ちなみに、Borland C++ Builderで、VBの「sendkeys」に相当するものはありますでしょうか。

2005/07/16 19:08:33
id:lupu No.2

回答回数214ベストアンサー獲得回数0

ポイント20pt

http://www.hatena.ne.jp/1121507757

人力検索はてな - WindowsのアプリケーションをBorland C++ Builder で開発しています.本アプリケーションと同時にInternet Explorerを起動させておき、本アプリケーションからInteret Explo..

PostMessageを使い、WM_KEYDOWNでVK_F5をIEに送信したところ、上手くいきました。

以下、サンプルとして載せて起きます。

ドラッグした先のウィンドウにVK_F5を送信するようなプログラムの一部分です。


case WM_LBUTTONUP:

  POINT point;

  HWND targetWindow;

  ReleaseCapture();

  GetCursorPos(&point);

  targetWindow = WindowFromPoint(point);

  PostMessage(targetWindow, WM_KEYDOWN, VK_F5, 0);

  return 0;

id:tj2047

ありがとうございます!もう少し、詳しく質問させてください。

本アプリケーションは、自動的にインターネット上のファイルを定期的にチェックし、ファイルが更新されている場合、Internet Explorerで表示させているページを自動的に更新させる、という仕様にしたいのです。

ご教授いただいたプログラムに、「自動で起動させているIEを更新させる」という機能を付けるには、どのようにすればよろしいでしょうか?

よろしくお願いします!

2005/07/16 20:11:49
id:lupu No.3

回答回数214ベストアンサー獲得回数0

ポイント20pt

「自動で起動させているIEを更新させる」というのは、どういう状態の事でしょうか。

現在起動しているすべてのIEのウィンドウハンドルを取得できれば良いのなら、例えば、、

EnumWindows関数を用いて、トップレベルウィンドウを全て取得し、それぞれのクラス名をGetClassName関数で取得してから、”IEFrame”(InternetExplorerのトップウィンドウのクラス名がこれでした。)と比較して・・・、

などでどうでしょうか。

・・・、なんか、ややこしいですが、ちょっとすぐにはこれが限界でした。^^;

もしかしたら、もっといい方法があるかもしれません。

IEのウィンドウが一つだけなら、FindWindowで探せるのですが。。


「自動的にインターネット上のファイルを定期的にチェックし、ファイルが更新されている場合」のチェックは別の方法で良いですね。何かいいライブラリがあるかもしれませんし、なかったら、WinSockなどで自力で・・・、でしょうか。


ちなみに、、もしかしたら、COMを用いればもっとスムーズに出来るかもしれません。

参考までに、VBScriptを用いて、IEを開き、はてなの質問一覧を開いたあと、10秒毎にリロードするものを書いてみました。(VBSやWSHはちゃんと知らないのでめちゃくちゃかも^^;)

[sample.vbs]

Dim objIE

Set objIE = CreateObject(”InternetExplorer.Application”)

objIE.Visible = True

objIE.Navigate(”http://www.hatena.ne.jp/list”)

Do While True

  WScript.Sleep(10000)

  objIE.Refresh()

Loop

[EOF]


2度目ですので、これでラストになります。

失礼しました。

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 tonolove 158 138 0 2005-07-18 10:38:27

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません