ShellExecuteExについて

[戻る]
n_n 2007/01/22(月) 18:03:29
以下のようなコードを書いてみました。
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です。

Kerry 2007/01/22(月) 19:16:07
> 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が返されます。

n_n 2007/01/22(月) 21:08:37
[[解決]]
なるほどぉ。納得しました。

古いスレッドには追加発言できません。