人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: tj2047
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:Borland Builder C++ EXPLORER Internet Explorer
○ 状態 :終了
└ 回答数 : 3/4件

▽最新の回答へ

1 ● kidd_pclabo
●20ポイント

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

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

sendkeysでF5送るとか

◎質問者からの返答

ありがとうございます!

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


2 ● lupu
●20ポイント

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;

◎質問者からの返答

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

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

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

よろしくお願いします!


3 ● lupu
●20ポイント

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

「自動で起動させている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度目ですので、これでラストになります。

失礼しました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ