My favorites | Sign in
Project Home Downloads Wiki Issues Source
READ-ONLY: This project has been archived. For more information see this post.
Search
for
Snapshot  
Snapshot System Profiler
Featured
Updated Mar 3, 2008 by john.fle...@gmail.com

Snapshot

Snapshot.js

Usage

var 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.

Source

var 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));
	}
}
Powered by Google Project Hosting