Hodo33 Posted November 30, 2019 Posted November 30, 2019 This is the callgotoWebPage("http://www.myweb.com/info.html");this is the fail response in logPlatform::openWebBrowser - Failed to open the HKCR\http registry key!!!The program is being run from downloads, just unzipped into a directory there.Works on my machine but not others. They tried run as admin as well it fails Quote
Happenstance Posted November 30, 2019 Posted November 30, 2019 It's an issue with their OS rather than your app/Torque. Platform::openWebBrower() will fail on Windows machines if it can't find the registry key that points to the user's default web browser.More info and some possible solutions:https://social.msdn.microsoft.com/Forums/windows/en-US/aa3a1535-aa86-4afe-9fa2-c6345682efc9/registry-key-for-default-browser?forum=windowsgeneraldevelopmentissues Quote
Bloodknight Posted November 30, 2019 Posted November 30, 2019 just to add to this, I'm sure it's not the default web browser, it's one of those commands that launch internet explorer, this happens quite a lot from a variety of applications, and many people uninstall it for whatever reason. Quote
Azaezel Posted December 1, 2019 Posted December 1, 2019 quickietest this end looks like it's still functional... though I generally don't use IE, so odd that wouldn't pop the system-registered preferred browser.. got any additional info? Quote
Bloodknight Posted December 1, 2019 Posted December 1, 2019 I never use IE, but its still on my system because I don't clean out default installed junk, but still some places open IE vs default browser.gotowebpage() launches IE on my system for... reasons Quote
Azaezel Posted December 1, 2019 Posted December 1, 2019 https://github.com/GarageGames/Torque3D/blob/5b8f316d804e4df2cf2b4748e5a64e6b44353204/Engine/source/platformWin32/winWindow.cpp#L528 will need to follow up on that..... looks correct, but...also seems linux lacks it entirely: https://github.com/GarageGames/Torque3D/blob/561f010f2e6411d8253d23f0cfcff794e81f60bf/Engine/source/platformX86UNIX/x86UNIXPlatform.cpp#L3 Quote
Happenstance Posted December 1, 2019 Posted December 1, 2019 The code is correct Az (at least on Windows, poor Linux...) but if the registry key is missing for some reason it'll fail which sounds like what's happening in Hodo's case. There are some other registry keys we can check as well (the thread I linked lists those). Another potential alternative would be to call ShellExecute, something like: ShellExecute(NULL, "open", "website_URL_here", NULL, NULL, SW_SHOWNORMAL); Quote
Azaezel Posted December 1, 2019 Posted December 1, 2019 first draft, go ahead and throw this at it, see if that covers it... bool Platform::openWebBrowser( const char* webAddress ) { //should handle unicode better here... int nRet = (int)ShellExecute(NULL, TEXT("open"), String(webAddress).utf16(), NULL, NULL, SW_SHOWNORMAL); if (nRet <= 32) { DWORD dw = GetLastError(); wchar_t szMsg[250]; FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, dw, 0, szMsg, sizeof((const wchar_t*)szMsg), NULL); Con::errorf(ConsoleLogEntry::General, "Platform::openWebBrowser - Failed to open %s due to %s", webAddress, String(szMsg).c_str()); } return( true ); } seemed to this end. even popped my default browser, though given the flexibility of that... might (probably) need to cook up a more secure variation... Quote
Hodo33 Posted December 4, 2019 Author Posted December 4, 2019 Thanks for the info. User refuses to use IE and that is the issue. Thanks all for response. Quote
Azaezel Posted December 4, 2019 Posted December 4, 2019 well, like i said, this other popped chrome. so doable, just need to find time to root around and get the correct series of fallbacks for the keys to use so user preferred tries first.. Quote
Nils Posted November 24, 2020 Posted November 24, 2020 Solution works fine for me. Thanks AzAdvised to add a fullscreen toggle when the canvas is full screen, for practical reasons Quote
OTHGMars Posted December 15, 2020 Posted December 15, 2020 SDL will be adding SDL_OpenURL() in version 2.0.14. It's still pre-release, but it checks out on Win10 (opens url in default browser not IE). If it works on all supported platforms after the next SDL release, all of the platform specific openWebBrowser() calls can be eliminated and replaced with a single SDL call.https://hg.libsdl.org/SDL/rev/d0348dab7c0fSee line 3.45. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.