任意のIEにリンクを指定したいです
2つのIEが起動しており、そのうち指定するIEの方にリンク先を上書きする方法をご教授頂ければと思います。
環境はVisual C++ 2005 Express Editionのwin32コンソールで作成しています。
IEを起動する方法として、FindWindow関数で上書きしたいIEのウィンドウ名のハンドルを取得し、ShellExecute関数でそのハンドルにリンク先を指定する方法を取っています。
下記は作成したプログラムです。
確かに指定したウィンドウ名を参照し、hWndにNULL以外の値が入っておるのですが、URLを上書きするウィンドウが指定したウィンドウではなく、最後に起動したIEのウィンドウに表示されてしまいます・・・。
説明べたなので例を示します・・・。以下のような動作になります。
(1)作成したプログラムからIEを起動する。ウィンドウ名:test - Windows Internet Explorer
(2)デスクトップから新規にIEを起動する。ウィンドウ名:yahoo - Windows Internet Explorer
(3)もう一度作成したプログラムからIEを起動すると、(2)で起動したIEに上書きしてしまう。本当は(1)に上書きしたいのに・・・。
また、ShellExecuteの第一引数はそのハンドルを持つウィンドウを差していると認識しているのですが、違いますでしょうか?
///////////////////////////////////////////////////
HWND hWnd = FindWindow( NULL, "ウィンドウ名") );
if ( hWnd != NULL ) {
ShellExecute( hWnd, "Open", URL, NULL, NULL, SW_SHOW );
}
else {
ShellExecute( NULL, "Open", "IExplore", URL, NULL, SW_SHOW );
}
///////////////////////////////////////////////////
お礼
度重なる質問に丁寧にお答え頂き大変助かっております。 ありがとうございます。動作も確認いたしました。 さらに甘えさせて頂きます。 (可能な範囲でお答えください。もう十分教えて頂きましたので) テキストボックスにファイル名を入力し、「実行」釦を押す事で、IEを立ち上げ、画像ファイル、映像ファイルを開く形とした場合、 (1)「実行」釦のコードに教えて頂いた内容を全て記述し、Param =の部分をテキストボックスを指定すれば良いでしょうか? (2)「クリア」という釦を作り、その釦を押した際にテキストボックスに入力した値を消す為には、そのコードにはどのように記述すればよいでしょうか? (2)さらにその「クリア」釦を押す事により立ち上げたIEを閉じる事はできないでしょうか?(頂いた内容であればこれは必要ないですか?) (3)このマクロを組んだExelファイルを、開いた時点で、このマクロを実行し、「終了釦」を作り、その釦により、Exelごと終了させるにはどうすれば良いでしょうか? 本当に度々申し訳ありません。 可能な範囲でご回答ください。 よろしくお願い致します。