• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:同じIEのウィンドウで、リンクの内容だけ変更したいのですが)

同じIEのウィンドウでリンクの内容だけ変更する方法は?

このQ&Aのポイント
  • VC超初心者の質問です。Visual C++ 2005 Express EditionのWin32コンソールで作成したアプリで、同じIEウィンドウでリンクの内容を変更したいです。
  • ShellExecute()関数でIEを起動することはできますが、2回目に起動しようとすると新規のIEブラウザが立ち上がってしまいます。対策方法を教えてください。
  • アプリはコマンドプロンプト上でxxx.exe #####と入力すると、http://localhost/index.html?id=#####というURLでIEを起動します。Mutexでは解決できないため、別の方法が必要です。お知恵をお借りしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

そうですか ・・・ 当方で実験したところうまく動いたので投稿した次第ですが FindWindowにて対象を見つけているのでしょうか? 見つかっていれば hwndがNULL以外の値を保持しています ShellExecuteの第2引数は実行すべき操作なの『Open』が妥当だろうと思います ここに URLを設定してしまうと Explorerに制御が行ってしまって新たにIEを起動してしまうように思います 第3引数はファイル名となっていますがIE対してURLを渡してやれば渡されたURLに遷移すると思いますよ 第3または第4引数辺りを使ってURLを渡すのが妥当なように思います

foot-peng
質問者

お礼

redfox63様 度々の御回答有難う御座います。 結論から申しますと、無事できました^^; 御指摘頂きました通り、ShellExecute()の使い方に問題があったようです。 上手く動作しなかったソースは、  ShellExecute( hWnd, "Open", "IExplore",id_url , NULL, SW_SHOW);  // id_urlには、「http://..?id=###」という文字列がchar型配列で入っています。 上手く動作したソースは、  ShellExecute( hWnd, "Open", id_url, NULL, NULL, SW_SHOW); です。 第3引数に"IExplore"とプログラム名を記述した事で、新規にIEを起動するようになっていたようです。 ココを、URLに変更することで、起動済みのIEにURLを渡すことができました。 御記述頂いたソースではそうなっていたのですが、修正時にいつの間にか変更してしまいました・・・。 御教授頂きまして有難う御座いました。

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

IEで表示でしょうか? FindWindowでウィンドウハンドルを取得してからShellExecuteを実行してみてはいかがでしょう HWND hWnd = FindWindow( NULL, _T("http://localhost/index.html - Microsoft Internet Explorer") ); if ( hWnd != NULL ) {   TCHAR buf[256];   _stprintf( buf, _T("http://localhost/index.html?id=%s"), argv[1] );   ShellExecute( hWnd, _T("Open"), buf, NULL, NULL, SW_SHOW ); } else {   ShellExecute( NULL, _T("Open"), _T("http://localhost/index.html"), NULL, NULL, SW_SHOW ); } といった具合です ・・・ なお FindWindowの第2引数は 実情に合わせて修正してください

foot-peng
質問者

お礼

すみません、返事が遅くなりました。 なぜか会社からだと書き込めないという不具合・・・。 改めまして、ご回答頂きまして有難う御座います。 >IEで表示でしょうか? はい、その通りです。 作成したアプリを実行することでIEを起動し、二回目のアプリ実行の時には一回目に起動したIEの中で表示する、といったことを目的としています。(説明下手ですみません・・・;;) そこでまた質問なのですが、記載頂きましたソースで、 一回目の実行でelse分のShellExecute()でIEを起動し、二回目の実行でif文内のShellExecute()を実行するかと思います。 ShellExecute()の第1引数を、hWndとすることで既存のIEに表示するようになるのでしょうか? 現在、第2引数を可変のidに対応するよう修正していますが、二回目の実行でも新規のIEが起動してしまいます。 何か私の解釈が間違っていればご教授願います。

関連するQ&A