• ベストアンサー

Internet ExplorerをC言語プログラムから起動する

タイトルのとおりなのですが、 WinExecやCreateProcessを使用して起動は可能なのですが、 Internet Explorerの指定がフルパスでないと起動しません。 当プログラムは、様々なパソコン、様々なWondowsOS(XP,2000,NT,Me,98,95)で動作させたいので フルパス固定は出来ません。 Internet Explorerのインストールディレクトリの探し方や その他、何かよい方法はありませんでしょうか?

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

  • ベストアンサー
  • otu_otu
  • ベストアンサー率31% (17/54)
回答No.2

Win32APIを使っておられるなら、もっと簡単な方法がありますよ。 それは、ShellExecute関数を用いることです。 ShellExecute(hwnd,"open","http://----/",...); この方法で、インターネットエクスプローラが起動し、指定したURLが開きます。 なお、エラー処理などは、MSDNライブラリを参照してください。

参考URL:
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpshell/html/_win32_shellexecute.asp
kazubon-X
質問者

お礼

ありがとうございました。 おかげで解決できました。

その他の回答 (1)

noname#11722
noname#11722
回答No.1

MFCでいいかな? やり方は、ダミーのhtmlファイルを作成して、 関連付けられているアプリケーションを探す。 で、CreateProcessで起動します。 以下コピペして使ってやってください。 引数にURL指定したら指定した場所が場所開くよ。 指定無しなら、ホームが開きます。 戻り値はプロセスIDです。 DWORD OpenIE( CString openURL ) { DWORD pID=0; char BrowserExec1[250]; FILE *fp; fp=fopen("open.html","w"); fclose(fp); CString BrowserExec; //ここに通常設定されているブラウザの名前が格納されます。 CString URL = "open.html"; //起動するHTMLのファイル名 HINSTANCE RetVal = FindExecutable(URL, NULL, BrowserExec1); BrowserExec = (CString) BrowserExec1; BrowserExec.TrimLeft(); //両端のスペースを削除します。 BrowserExec.TrimRight(); DeleteFile("open.html"); //いらなくなったので削除 long Ret = (long)RetVal; if ((Ret <= 32) || (BrowserExec.IsEmpty())){ //ブラウザが見つからなかった場合 AfxMessageBox("インターネットブラウザが見つかりません",MB_ICONEXCLAMATION); }else{ BrowserExec+= " "+openURL; strcpy(BrowserExec1,BrowserExec.GetBuffer(BrowserExec.GetLength())); BrowserExec.ReleaseBuffer(); STARTUPINFO start; PROCESS_INFORMATION info; ZeroMemory(&start,sizeof(start)); ZeroMemory(&info,sizeof(info)); start.cb = sizeof(start); CreateProcess(NULL,BrowserExec1,NULL,NULL,FALSE,CREATE_DEFAULT_ERROR_MODE,NULL,NULL,&start,&info); pID = (unsigned long)info.dwProcessId; //プロセスID取得(後で使うから) WaitForInputIdle(info.hProcess,INFINITE); //入力状態まで待つ } return pID; } // 使い方 void COpenIeDlg::OnButton1() { OpenIE("www.microsoft.com/japan"); //指定無しでもOK }

kazubon-X
質問者

お礼

早速の丁寧な回答、ありがとうございました。 おかげで問題が解決しました。

関連するQ&A

  • Internet Explorerからローカルにあるプログラムを起動するには

    こんばんわ 現在、Webブラウザタイプのグループウェアのページから、各クライアントにインストールしてあるプログラムを起動するよう設定するため、URLに直接、起動したいプログラムのパスを入れております。 例:C:\Program Files\Utility\utl.exe しかし、Windows 2000のInternet Explorerからは起動できますが、Windows XPのInternet Explorer 6・7からは起動できなくなっています。 (むしろ、Win2kのIEのみ可能でした)  Webブラウザからクライアントを操作をするようなものは、セキュリティの観点から好ましくない方法だとは理解しておりますが、どうしても必要であるとのことなので、方法を探したり、各設定をいじってみているのですが、なかなか見つかりません。  このようなWebブラウザからクライアントのソフトを起動する良い方法をご存じの方いらっしゃいましたら、ご教授お願いいたします。

  • InternetExplorerが起動しない

    InternetExplorer7をインストールしてダブルクリックしたのですが起動しません。 プロパティをクリックすると 『序数 237 がダイナミック ライブラリ IEFRAME.dll から見つかりませんでした。』 とエラーが出ました。 InternetExplorerを再インストールしてもだめでした。 どうしたらなおるのか教えてください。 OSはXPを使ってます。

  • Internet Explorer 7アンインストール方法

    プログラムの追加と削除のところからInternet Explorer 7を削除 しても途中で「ieakmmc.chmをコピーできません。 指定した場所が正しい事を確認するか、または場所を変更して、 指定したドライブに'Windows NT Service Pack Uninstall Directory'を挿入してください。」と出て削除できないんですが どうすれば良いのでしょうか?

  • コマンドプロンプト(cmd.exe)を小さいフォントで起動したい

    コマンドプロンプト(cmd.exe)を小さいフォントを指定して起動したいのですが、そのフォントの指定方法がわかりません。ご存じのかたがおりましたら、教えて下さい。 コマンドプロンプトのショートカットで、フォントの指定欄があり、そこで小さいフォント(6×13等)を指定すれば、実現は可能ですが、その方法ですと、作業フォルダも、そのプロパティで指定したところになってしまいます。 やりたいことは、以下の通りです。 1.作業ディレクトリを、第1パラメータで受け取り、そこのディレクトリを作業ディレクトリとして、コマンドプロンプトを起動したい。 2.そのとき、小さいフォント(6×13)で、起動したい。 API(CreateProcess)を呼び出して、コマンドプロンプトの起動までは、出来たのですが、そのときに、フォントサイズを指定する方法がわかりません。(少なくとも、CreateProcessのパラメータにはフォントに関する指定はありませんでした) 実行環境は以下の通りです。 Windows2000 VC++2003

  • プログラムが起動できません。

    適当なプログラムを右クリックでスタートメニューにアイコンを登録を選択 その元のフォルダの名前変更しスタートメニューからアイコンをクリック。 当然起動されない。そのショートカット先を変更。するとそのソフト(1とする)は使えるようになるが他のプログラムを起動しても1しか起動されないようになってしまった。そこでアイコンとそのプログラム(1のソフトが入っているフォルダ)削除。すると指定されたパスは存在しません。パスが正しいか確認してください。と出て他のプログラムを起動できません。かろうじてIEだけは起動できたんです。再起動もしましたけどだめでした。使っているOSはXPのhome edition sp1です。パソ本体はFMV-BIBLO NB16C/Aです これはOSのバグなんでしょうか?とにかく他のプログラムが起動できなくて困ってます。誰かわかる方、精通している方お願いします。

  • プログラムがほとんど起動しません

    プログラムが動作しなくなりました! なんとCドライブにあるプログラムまでも立ち上がりません。 いまIEはこうやって書きこめていますが、 WMPはエクスプローラから特定ファイルを指定して 右クリックしてプログラムの指定でWMPを指定しないと ファイル名をクリックしただけでは立ち上がらなくなりました。 どこをいじったか記憶にありません。 何かのDLL(関連付け関係を記述しているもの)がいたずらしているのでしょうか? スタートメニューから今までのソフトすべて立ち上がりません。 プログラム格納ドライブのD/E/F/Gなどがずれてしまったのが原因かと思いまして プロパティで起動パスを変更しても立ち上がりません。 お知恵を拝借願います

  • Internet Explorerが…

    突然Internet Explorerが起動出来なくなってしまいました。(XP) キーボードの左下に(Fn・Ctrl)箱を乗っけてしまい 押された状態になっているのに気づかず検索をするために、 文字を打ち込んだのですが急に重くなり再起動すると起動出来なくなっていました。 ルーターで2台パソコンを繋いでいるのですが、 もう一方のほうは普通に起動出来ます(今このパソコンを使ってます) 2chブラウザのギコナビで、普通にレス取得は出来るのに(winampでラジオも聴けます) 何故かInternet Explorerのアイコンをクリックすると、 ブラウザは出てくるのですが何も表示されません。 すごく動作が重くなってほとんど何も出来なくなります。 どうやら接続は出来ているようで、 真っ白な画面なの「ページが表示されました」と下に出てきます。 ツールやお気に入りを開いたり(たまに出ることもありますが、開けません) ウインドウを小さくしたり出来ません。 消そうとすると、「このプログラムは応答していません~」と出てきます。 インターネットのオプションなどは変更していないのですが…。 Internet Explorerを再インストールしてみたらどうですか。 と言われたのですが、インターネットが出来ない状態ですので Internet Explorer 6 Service PackをDL出来ません…。 リカバリするしかないのでしょうか?(T_T)

  • Internet Explorerが起動できません

    最近、急にIEが起動できなくなりました。 クリックするとエラー送信しますかのようなエラーになり、起動すらしません。 ためしにアカウントを新しく作成したところ、そっちは問題なく起動できます。 再インストールの必要があるかどうかわからないのですが、コントロールパネルの「プログラムの追加と削除」の項目にMicrosoft Internet Explorerの項目がないので再インストールの仕様がありません・・・。 どうすればまた起動できるようになるのでしょうか? 詳しい方、回答お願いします。

  • Internet Explorerが消えてしまいました

    タイトルの通りです。OSはvistaを使用しております。 Internet Explorer8をインストールして使ってみたのですがどうもしっくりこず、アンインストールしたところ、どうやらInternet Explorer7まで消えてしまったようなのです。 PCの中をどれだけ調べても現れず、完全に気配がありません。 しかし再インストールしようとすると失敗し、再起動。これの繰り返しです。 過去の同じような質問に対する答えなども調べて試してみたのですがうんともすんとも言わないのです。 lunascapeが動いているので、きっとPCのどこかに残っているのだと思うのですが、復元することは可能でしょうか?

  • Internet explorer8を7に戻したい。

    internetExploer8を導入しましたが、 途端にブラウザの動作が重くなりました。 それだけではなくパソコンの動作自体も遅くなりました。 デフラグやクリーンアップ等を行っても改善はされませんでした。 ですのでinternetExploer8を7に戻そうとしました。 しかし! マイクロソフトのサイトでInternet Explorer 7を インストールしようとしたところ、 パソコンにInternet Explorer 8 が入っているので 出来ませんでした、と表示されます ですので、プログラムの追加と削除から 「internetExploer8」と「internetExploer8の更新」 をアンストールしようとしたところ 「XPのセキュリティ更新」や「framework」等が 正しく動作しない可能性ががあると表示されます。 はっきり言って怖いです。 internetExploer8を7に戻したいです。 アンインストールしても大丈夫でしょうか? どうすればパソコンに支障なく戻せますか? (windows XP使用)

専門家に質問してみよう