何年もの間、アプリケーション内からデフォルトの Web ブラウザを起動するために ShellExecute() API を使用してきました。このような:
ShellExecute( hwnd, _T("open"),
_T("http://www.winability.com/home/"),
NULL, NULL, SW_NORMAL );
Google が Chrome ブラウザをリリースした数週間前までは、問題なく動作していました。現在、Chrome がコンピューターにインストールされている場合、ShellExecute API は Web ページを開かなくなりました。
この問題を解決する方法をまだ見つけた人はいますか? (Chrome を検出して、Chrome のせいだとユーザーに伝えるメッセージを表示するまでは?)
編集:セルゲイによって提供されたコードは機能しているように見えるので、「その」答えとして受け入れました。WinExec の呼び出しが気に入らないことを除けば、MSDN によると、WinExec は 16 ビット アプリケーションとの互換性のためにのみ提供されているとのことです。IOW、サービス パックで動作しなくなる可能性があります。私は試していませんが、16 ビット アプリケーションをまったくサポートしていないため、Windows x64 で既に動作しなくなっていても驚かないでしょう。そこで、WinExec の代わりに、Sergey のコードのようにレジストリからパスを取得し、URL を引数として、ShellExecute を使用します。ありがとう!