DECLARE INTEGER ShellExecute IN Shell32.DLL; INTEGER nWinHandle,; STRING cOperation,; STRING cFileName,; STRING cParameters,; STRING cDirectory,; INTEGER nShowWindow DECLARE INTEGER RegOpenKey IN Win32API; INTEGER nHKey,; STRING sSubKey,; INTEGER @nHandle DECLARE INTEGER RegCloseKey IN Win32API; INTEGER nHKey DECLARE INTEGER RegQueryValueEx IN Win32API; INTEGER nHKey,; STRING sValueName,; INTEGER nReserved,; INTEGER @nType,; STRING @sData,; INTEGER @nData *--------------------------- PUBLIC SysIE_Default SysIE_Default= "?" &&default Internet Browser =ShowWeb("http://www.levelextreme.com", .F.) =ShowWeb("http://www.levelextreme.com", .F.) =ShowWeb("http://www.levelextreme.com", .F.) RETURN *============================================= FUNCTION GetRegistryValue(sKey, sSubKey, sEntry) * In: sKey - "Root", "Local", "User", "Users" * sSubKey - the registry subkey (e.g. "http\shell\open\command") * sEntry - the actual key * Returns a value from the registry. LOCAL rc, sKeyU, nKey, nHandle, nSize, sData, nType #DEFINE HKEY_CLASSES_ROOT 0x80000000 #DEFINE HKEY_CURRENT_USER 0x80000001 #DEFINE HKEY_LOCAL_MACHINE 0x80000002 #DEFINE HKEY_USERS 0x80000003 sKeyU= UPPER(sKey) nKey= IIF(sKeyU=="ROOT", HKEY_CLASSES_ROOT,; IIF(sKeyU=="LOCAL", HKEY_LOCAL_MACHINE,; IIF(sKeyU=="USER", HKEY_CURRENT_USER,; IIF(sKeyU=="USERS", HKEY_USERS,; 0 )))) nHandle= 0 rc= RegOpenKey(nKey, sSubKey, @nHandle) IF rc#0 RETURN "" ENDIF nSize= 512 sData= SPACE(nSize) nType= 4 &&integer 4 bytes rc= RegQueryValueEx(nHandle, sEntry, 0, @nType, @sData, @nSize) IF rc#0 RETURN "" ENDIF =RegCloseKey(nHandle) RETURN IIF(rc#0, "",; IIF(nSize<=1, "",; SUBSTR(sData, 1, nSize-1))) &&erase last chr(0) *============================================= PROCEDURE GetIE_Default() IF !SysIE_Default=="?" RETURN ENDIF LOCAL sIE, i1, i2 SysIE_Default= "" sIE= GetRegistryValue("Root", "http\shell\open\command", "") i1= AT(["], sIE, 1) i2= AT(["], sIE, 2) IF i1#0 .and. i2#0 SysIE_Default= SUBSTR(sIE, i1+1, i2-i1-1) ENDIF RETURN *============================================= PROCEDURE ShowWeb(sURL, FlgOld) IF EMPTY(sURL) =WMsg("!", "There is no URL to show.") RETURN ENDIF LOCAL rc rc= FlgOld IF !rc =GetIE_Default() rc= EMPTY(SysIE_Default) && ENDIF IF rc &&use old browser ShellExecute(0, "open", sURL, "", "", 1) ELSE &&launch new browser ShellExecute(0, "open", SysIE_Default, sURL, "", 1) ENDIF RETURN