プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (2件)

Win32APIを使っておられるなら、もっと簡単な方法がありますよ。



それは、ShellExecute関数を用いることです。

ShellExecute(hwnd,"open","http://----/",...);

この方法で、インターネットエクスプローラが起動し、指定したURLが開きます。

なお、エラー処理などは、MSDNライブラリを参照してください。

参考URL:http://www.microsoft.com/japan/msdn/library/defa …
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/07/12 15:11

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
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/07/12 15:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!