- //Try wxExecute - if it doesn't work or the regkey stuff
- //above failed, fallback to opening the file in the same
- //browser window
- if ( command.empty() || wxExecute(command) == -1)
- {
- // CYGWIN and MINGW may have problems - so load ShellExecute
- // dynamically
- typedef HINSTANCE (*LPShellExecute)(HWND hwnd, const wxChar* lpOperation,
- const wxChar* lpFile,
- const wxChar* lpParameters,
- const wxChar* lpDirectory,
- INT nShowCmd);
-
- HINSTANCE hShellDll = ::LoadLibrary(wxT("shell32.dll"));
- if(hShellDll == NULL)
- return false;
-
- LPShellExecute lpShellExecute =
- (LPShellExecute) ::GetProcAddress(hShellDll,
- wxString::Format(wxT("ShellExecute%s"),
-
-#ifdef __WXUNICODE__
- wxT("W")
-#else
- wxT("A")
-#endif
-#ifdef __WXWINCE__
- )
-#else
- ).mb_str(wxConvLocal)
-#endif
- );
- if(lpShellExecute == NULL)
- return false;
-
- // Windows sometimes doesn't open the browser correctly when using mime
- // types, so do ShellExecute - i.e. start <url> (from James Carroll)
- unsigned int nResult = (int) (*lpShellExecute)(NULL, NULL, finalurl.c_str(),
- NULL, wxT(""), SW_SHOWNORMAL);
+ WinStruct<SHELLEXECUTEINFO> sei;
+ sei.lpFile = url.c_str();
+ sei.lpVerb = _T("open");
+ sei.nShow = SW_SHOWNORMAL;