以下のようなコードを書いてみました。
SHELLEXECUTEINFO si;
ZeroMemory(&si,sizeof(SHELLEXECUTEINFO));
si.cbSize = sizeof(SHELLEXECUTEINFO);
si.fMask = SEE_MASK_NOCLOSEPROCESS;
si.hwnd = hWnd;//自分のウィンドウハンドル
si.lpVerb = open;
si.lpFile = http://www.yahoo.co.jp/;
si.nShow = SW_SHOWNORMAL;
ShellExecuteEx(&si);
ヤフーのサイトは開くのですが、si.hProcessにハンドルが帰ってきません。
hProcess = 0 になってしまいます。
僕の感じでは、si.hProcessにインターネットエクスプローラのウィンドウハンドルが帰
ってくると思っていたのですが、どうも上手くいきません。
コーディングがおかしいのでしょうか?どなたかご教授下さい。
環境はWindowsXPです。
> si.hProcessにインターネットエクスプローラのウィンドウハンドルが帰
> ってくると思っていたのですが、
返ってくるのはプロセスのハンドルですね。
MSDNによりますと、
> Even if fMask is set to SEE_MASK_NOCLOSEPROCESS, hProcess will be NULL
> if no process was launched. For example, if a document to be launched
> is a URL and an instance of Microsoft® Internet Explorer is already
> running, it will display the document. No new process is launched, and
> hProcess will be NULL.
とありますので、すでにIEが起動している状態でURLを開く場合(新しいプロセスが
起動しない場合)はNULLが返されます。
なるほどぉ。納得しました。