#include "SDL_internal.h"
#include "../SDL_sysurl.h"
#include "../../core/windows/SDL_windows.h"
#include <shellapi.h>
#if defined(SDL_PLATFORM_XBOXONE) || defined(SDL_PLATFORM_XBOXSERIES)
bool SDL_SYS_OpenURL(const char *url)
{
return SDL_Unsupported();
}
#else
bool SDL_SYS_OpenURL(const char *url)
{
WCHAR *wurl;
HINSTANCE rc;
const HRESULT hr = WIN_CoInitialize();
if (FAILED(hr)) {
return WIN_SetErrorFromHRESULT("CoInitialize failed", hr);
}
wurl = WIN_UTF8ToStringW(url);
if (!wurl) {
WIN_CoUninitialize();
return false;
}
rc = ShellExecuteW(NULL, L"open", wurl, NULL, NULL, SW_SHOWNORMAL);
SDL_free(wurl);
WIN_CoUninitialize();
if (rc <= ((HINSTANCE)32)) {
return WIN_SetError("Couldn't open given URL.");
}
return true;
}
#endif