|
Snapshot
Snapshot System Profiler
Featured SnapshotSnapshot.jsUsagevar requiredFlashVersion = Snapshot.parseVersion('9.0.115');
var currentFlashVersion = Snapshot.getFlashVersion();
if (Snapshot.hasRequiredVersion(currentFlashVersion, requiredFlashVersion)) {
application.showErrorMessage('Flash '+Snapshot.toVersionString(requiredFlashVersion, 3)+' is required. You have '+Snapshot.toVersionString(currentFlashVersion, 3)+'.');
}Flash 9.0.115 is required. You have 9.0.47. Sourcevar Snapshot = function() {
return {
/***************************************************************************************************
* Public
***************************************************************************************************/
version: '0.9beta3',
hasAccess: ((/vzwcorp.com|verizonwireless.com|file:\/\//.test(window.location.href)) && window.ActiveXObject && FileSystem),
/***************************************************************************************************
* Plug-ins
***************************************************************************************************/
/*************************************************
* Adobe Flash
*************************************************/
getFlashVersion: function() {
var obj, version;
if (window.ActiveXObject) {
try {
obj = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.7');
} catch(e) {
try {
obj = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6');
version = [6, 0, 21];
obj.AllowScriptAccess = 'always';
} catch(e) {
try {
obj = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
} catch(e) {
return null;
}
}
}
try { version = obj.GetVariable('$version').split(' ')[1].split(','); } catch(e) { }
} else {
if (navigator.plugins && navigator.mimeTypes.length) {
obj = navigator.plugins['Shockwave Flash'];
if (obj && obj.description) {
version = obj.description.replace(/([a-z]|[A-Z]|\s)+/, '').replace(/(\s+r|\s+b[0-9]+)/, '.').split('.');
}
}
}
return ((!!version) ? version.splice(0,3).join('.') : null);
},
isFlashInstalled: function() {
return !!parseFloat(Snapshot.getFlashVersion());
},
/*************************************************
* Adobe/Macromedia Shockwave
*************************************************/
getShockwaveVersion: function() {
var obj, version;
if (window.ActiveXObject) {
try { obj = new ActiveXObject('SWCtl.SWCtl'); } catch(e) {}
if (obj) {
version = obj.ShockwaveVersion('').replace(/(r|b[0-9]+)/, '').split('.');
}
} else {
if (navigator.plugins && navigator.mimeTypes.length) {
obj = navigator.plugins['Shockwave for Director'];
if (obj && obj.description) {
version = obj.description.substr(obj.description.lastIndexOf(' ')).split('.');
}
}
}
return ((!!version) ? version.splice(0,3).join('.') : null);
},
isShockwaveInstalled: function() {
return !!parseFloat(Snapshot.getShockwaveVersion());
},
/*************************************************
* Java
*************************************************/
getJavaVersion: function() {
try { return document.getElementById('viewfinder').getProperty('java.version'); } catch(e) { return 'System property "java.version" is not accessible.' }
},
isJavaInstalled: function() {
return !!parseFloat(Snapshot.getJavaVersion());
},
/*************************************************
* Adobe Acrobat Reader
*************************************************/
getAcrobatVersion: function() {
var obj, version;
if (window.ActiveXObject) {
try {
obj = document.createElement('object');
obj.setAttribute('classid', 'clsid:CA8A9780-280D-11CF-A24D-444553540000');
if (obj) {
var versions = (obj.GetVersions()).split(',');
version = versions[0].split('=')[1].split('.')
}
} catch(e) {}
} else {
if (navigator.plugins && navigator.mimeTypes.length) {
obj = navigator.plugins['Adobe Acrobat'];
if (obj && obj.description) {
var versionNumber = parseFloat(obj.description.substr(obj.description.lastIndexOf('Version ')+8, 1));
if (isNaN(versionNumber)) {
return '8.0+';
}
version = (versionNumber+'.0.0').split('.');
}
}
}
return ((!!version) ? version.splice(0,3).join('.') : null);
},
isAcrobatInstalled: function() {
return !!parseFloat(Snapshot.getAcrobatVersion());
},
/*************************************************
* Windows Media Player
*************************************************/
getWindowsMediaPlayerVersion: function() {
var obj, version;
if (window.ActiveXObject) {
try {
obj = new ActiveXObject('WMPlayer.OCX');
if (obj && obj.versionInfo) {
return obj.versionInfo.split('.').splice(0, 2).join('.');
}
} catch(e) {
try {
obj = new ActiveXObject('MediaPlayer.MediaPlayer.1');
if (obj) {
return '6.4';
}
} catch(e) {}
}
} else {
var i = 0;
while (i < navigator.plugins.length) {
if (/Windows Media Player/.test(navigator.plugins[i].name)) {
return '6.4+';
}
++i;
}
}
return null;
},
isWindowsMediaPlayerInstalled: function() {
return !!parseFloat(Snapshot.getWindowsMediaPlayerVersion());
},
/*************************************************
* Outlook
*************************************************/
isOutlookInstalled: function() {
if (Snapshot.hasAccess) {
try {
var fso = new ActiveXObject('Scripting.FileSystemObject');
return !!fso.FolderExists(FileSystem.getSpecialFolder('Desktop').replace(/Desktop/, '')+'Local Settings\\Application Data\\Microsoft\\Outlook');
} catch(e) { }
}
return false;
},
/***************************************************************************************************
* Browser
***************************************************************************************************/
/*************************************************
* Pop-up Blocker
*************************************************/
hasPopUpBlocker: function() {
return !window.open('/scorm/content/snapshot/assets/hasPopUpBlocker.htm','hasPopUpBlocker','width=100,height=100,top=1600,left=1600,scrollbars=0,resizable=0,menubar=0,toolbar=0,personalbar=0,location=0,directories=0,status=0,dependent=1');
},
/*************************************************
* Cookies
*************************************************/
isCookiesEnabled: function() {
return !!navigator.cookieEnabled;
},
/*************************************************
* Mozilla Firefox
*************************************************/
isFirefoxInstalled: function() {
if (Snapshot.hasAccess) {
try {
var fso = new ActiveXObject('Scripting.FileSystemObject');
return !!fso.FolderExists('C:\\Program Files\\Mozilla Firefox');
} catch(e) {
return 'no';
}
}
return /firefox/gi.test(navigator.userAgent);
},
/*************************************************
* Internet Explorer
*************************************************/
//isInternetExplorer: /*@cc_on!@*/false,
isInternetExplorer: window.ActiveXObject && window.execScript,
/*************************************************
* Browser Name
*************************************************/
getBrowserName: function() {
return navigator.appName;
},
/***************************************************************************************************
* Software/Hardware
***************************************************************************************************/
/*************************************************
* Operating System
*************************************************/
getOperatingSystem: function() {
try { return document.getElementById('viewfinder').getProperty('os.name'); } catch(e) { return 'System property "os.name" is not accessible.' }
},
getScreenResolution: function() {
return screen.width+'x'+screen.height;
},
/*************************************************
* Direct X
*************************************************/
getDirectXVersion: function() {
if (Snapshot.hasAccess) {
try {
var registryValue = FileSystem.readRegistry('HKLM\\SOFTWARE\\Microsoft\\DirectX\\Version');
var versionObject = {
'4.02.0095': '1.0',
'4.03.00.1096': '2.0a',
'4.04.00.0068': '3.0',
'4.04.00.0069': '3.0',
'4.04.00.0070': '3.0b',
'4.05.00.0155': '5.0',
'4.05.01.1600': '5.2',
'4.05.01.1998': '5.2',
'4.06.00.0318': '6.0',
'4.06.02.0436': '6.1',
'4.06.03.0518': '6.1a',
'4.07.00.0700': '7.0',
'4.07.00.0716': '7.0a',
'4.07.01.3000': '7.1',
'4.08.00.0400': '8.0a',
'4.08.01.0810': '8.1',
'4.08.01.0881': '8.1',
'4.08.01.0901': '8.1b',
'4.08.02.0134': '8.2',
'4.09.00.0900': '9.0',
'4.09.00.0901': '9.0a',
'4.09.00.0902': '9.0b',
'4.09.00.0903': '9.0c',
'4.09.00.0904': '9.0c',
'6.0.6000.16386': '10.0'
};
var versionString = versionObject[registryValue];
return (versionString) ? versionString + ' (' + registryValue + ')' : registryVersion;
} catch(e) {
return null;
}
}
return null;
},
isDirectXInstalled: function() {
return !!parseFloat(Snapshot.getDirectXVersion());
},
/*************************************************
* Jaws
*************************************************/
getJawsVersion: function() {
if (Snapshot.hasAccess) {
var jawsFolderContents = FileSystem.list('C:\\Program Files\\Freedom Scientific\\JAWS', true, 'subfolders');
var length = jawsFolderContents.length, i = 0;
for (; i<length; i++) {
jawsFolderContents[i] = parseFloat(jawsFolderContents[i].substring(1));
}
jawsFolderContents.sort(function(a,z){ return z-a; });
return jawsFolderContents[0];
}
return null;
},
isJawsInstalled: function() {
return !!parseFloat(Snapshot.getJawsVersion());
},
/***************************************************************************************************
* Version
***************************************************************************************************/
parseVersion: function(v) {
var version = String(v).replace(/_|x/, '.').split('.');
this.major = (version[0]) ? parseInt(version[0]) : 0;
this.minor = (version[1]) ? parseInt(version[1]) : 0;
this.revision = (version[2]) ? parseInt(version[2]) : 0;
this.update = (version[3]) ? parseInt(version[3]) : 0;
},
toVersionString: function(versionObject, length) {
var versionArray = [versionObject.major, versionObject.minor, versionObject.revision, versionObject.update];
return ((length) ? versionArray.splice(0, length) : versionArray).join('.');
},
hasRequiredVersion: function(current, required) {
if (current.major > required.major) { return true; }
if (current.major < required.major) { return false; }
if (current.minor > required.minor) { return true; }
if (current.minor < required.minor) { return false; }
if (current.revision > required.revision) { return true; }
if (current.revision < required.revision) { return false; }
if (current.update > required.update) { return true; }
if (current.update < required.update) { return false; }
return true;
},
hasExactVersion: function(current, required) {
return ((current.major == required.major) && (current.minor == required.minor) && (current.revision == required.revision) && (current.update == required.update));
},
/***************************************************************************************************
* Java Object Creation
<!--[if !IE]>-->
<object id="viewfinder" type="application/x-java-applet" classid="java:snapshot.class" archive="snapshot.jar" height="100" width="100">
<!--<![endif]-->
<!--[if IE]>
<object id="viewfinder" classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" height="100" width="100">
<param name="code" value="snapshot" />
<param name="archive" value="snapshot.jar" />
</object>
<![endif]-->
<!--[if !IE]>-->
</object>
<!--<![endif]-->
***************************************************************************************************/
addViewFinder: function(e) {
try {
var container = document.createElement('div'), object;
container.setAttribute('id', 'viewfinderContainer');
if (container && !document.getElementById('viewfinder')) {
if (Snapshot.isInternetExplorer) {
object = '<object id="viewfinder" classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" height="1" width="1">';
object += '<param name="archive" value="/scorm/content/snapshot/assets/snapshot.jar" />';
object += '<param name="code" value="snapshot.class" />';
object += '</object>';
} else {
//object = '<object id="viewfinder" type="application/x-java-applet" classid="java:snapshot.class" archive="/scorm/content/snapshot/assets/snapshot.jar" height="100" width="100" />';
object = '<applet id="viewfinder" archive="/scorm/content/snapshot/assets/snapshot.jar" code="snapshot.class" width="1" height="1" />';
}
container.innerHTML = object;
document.getElementsByTagName('body')[0].appendChild(container);
}
} catch(e) {}
},
removeViewFinder: function() {
try {
var viewfinderObject = document.getElementById('viewfinder');
if (viewfinderObject) {
viewfinderObject.parentNode.parentNode.removeChild(viewfinderObject.parentNode);
}
} catch(e) {}
}
}
}();Java Applet/**
* @(#)snapshot.java
*
*
* @author John Flesch
* @version 1.00 2007/11/19
*/
import java.applet.Applet;
import java.awt.Color;
import java.net.URL;
import java.net.MalformedURLException;
public class snapshot extends Applet {
public void init() {
setBackground(Color.decode("#222222"));
try {
getAppletContext().showDocument(new URL("javascript:onJavaReady()"), "_self");
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
public String getProperty(String prop) {
return System.getProperty(prop);
}
public void setBackgroundColor(String hexColor) {
setBackground(Color.decode(hexColor));
}
}
|