Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
<HTML>
<OBJECT ID="MMCCtrl" < CLASSID="CLSID:545AE700-50BF-11D1-9FE9-00600832DB4A"> > </OBJECT>
<STYLE TYPE="text/css"> </STYLE> <SCRIPT LANGUAGE="JavaScript">
function CheckForDuplicate (taskArray, j) { var i; var task = taskArray[j]; for (i=0; i<j; i++) { var display = taskArray[i].DisplayObject; if (display.DisplayObjectType == 1) if (display.FontFamilyName == task.DisplayObject.FontFamilyName) if (display.URLtoEOT == task.DisplayObject.URLtoEOT) return true; } return false; }
function AddClickStuff (str, task) { var myStr = ""; var clsid = task.Clsid;
switch (task.ActionType) { case 0: // task.MMC_TASK_ACTION_ID: myStr += "onclick=\"MMCCtrl.TaskNotify ('" + clsid + "', " + task.CommandID +", '" + "0" + "')\""; break; case 1: //task.MMC_TASK_ACTION_LINK: myStr += "onclick=\"window.location=" + task.ActionURL + "\""; break; case 2: //task.MMC_TASK_ACTION_SCRIPT: myStr += "onclick=\"" + task.Script + "\""; break; default: alert ("unrecognized task"); break; } return myStr; }
function myLoad() { var taskArray = new Array();
// get title and ignore it for now var title = MMCCtrl.GetTitle (hash);
var background = MMCCtrl.GetBackground (hash);
// TODO: get descriptive text
var str; var display; // display object var hash = location.hash; if (hash != "") hash = hash.substr(1); var task = MMCCtrl.GetFirstTask (hash); var numTasks = 0; while (task != null) { taskArray[numTasks++] = task; task = MMCCtrl.GetNextTask(); }
window.name = "don't reload"; // alert (window.name);
document.open(); document.writeln ("<HTML>");
document.writeln ("<OBJECT ID=\"MMCCtrl\" <"); document.writeln (" CLASSID=\"CLSID:545AE700-50BF-11D1-9FE9-00600832DB4A\">"); document.writeln (">"); document.writeln ("</OBJECT>");
document.writeln ("<STYLE>");
// TODO: these may cause duplicates, too if (background != null) if (background.DisplayObjectType == 1) { str = "@font-face {"; str += " font-family: " + background.FontFamilyName + ";"; str += " src: url(" + background.URLtoEOT +");"; str += "}"; document.writeln (str); }
var i; for (i=0; i<numTasks; i++) { display = taskArray[i].DisplayObject; if (display.DisplayObjectType == 1) { // MMC_TASK_DISPLAY_TYPE_SYMBOL if (CheckForDuplicate (taskArray, i) == false) { str = "";
str += "@font-face {"; str += " font-family: " + display.FontFamilyName + ";"; str += " src: url(" + display.URLtoEOT +");"; str += "}";
// alert (str); document.writeln (str); } } } document.writeln ("</STYLE>");
document.writeln ("<SCRIPT>");
document.writeln ("if (window.name == \"do reload\") {"); // document.writeln (" alert (\"about to reload\");"); document.writeln (" window.name = \"don't reload\";"); // document.writeln (" location.reload (true);"); // document.writeln (" alert (\"default.htm#" + hash + "\");"); document.writeln (" location.replace (\"default.htm#" + hash + "\");"); document.writeln ("}");
// document.writeln (" alert (location + \"#\" + \"" + hash + "\");"); // document.writeln (" alert (this.outerHTML);");
document.writeln ("</" + "SCRIPT>");
// TODO: this doesn't work! // TODO: load a generic loader page that just reloads this one?
document.writeln ("<BODY>"); document.writeln ("</BODY>"); document.writeln ("</HTML>");
document.close();
window.name = "do reload";
// background if (background != null) { // use z-index = -2 switch (background.DisplayObjectType) { default: alert ("skipping due to background.DisplayObjectType == " + background.DisplayObjectType); break; // skip case 1: // MMC_TASK_DISPLAY_TYPE_SYMBOL str = ""; str += "<SPAN STYLE=\"position:absolute; top:0; left:0; z-index:-1; font-family:"; str += background.FontFamilyName; str += "; font-size:45pt; \">"; str += background.SymbolString; str += "</SPAN>"; document.body.insertAdjacentHTML ("BeforeEnd", str); break; case 2: // MMC_TASK_DISPLAY_TYPE_VANILLA_GIF, // (GIF) index 0 is transparent case 3: // MMC_TASK_DISPLAY_TYPE_CHOCOLATE_GIF, // (GIF) index 1 is transparent case 4: // MMC_TASK_DISPLAY_TYPE_BITMAP // non-transparent raster document.body.insertAdjacentHTML ("BeforeEnd", "<IMG SRC=\"" + background.MouseOverBitmap + "\" STYLE=\"position:absolute; top:0; left:0; z-index:-2\">"); break; } }
// for all tasks for (i=0; i<numTasks; i++) { task = taskArray[i];
var text = task.Text; var help = task.Help; var type = task.ActionType; var clsid = task.Clsid;
str = "";
display = task.DisplayObject; switch (display.DisplayObjectType) { default: alert ("bad DisplayObjectType! skipping..."); break; case 1: // MMC_TASK_DISPLAY_TYPE_SYMBOL
str += "<P ALIGN=center ";
str += "STYLE= \""; str += "font-family:" + display.FontFamilyName + ";"; str += "font-size:45pt"; str += "\" ";
str += AddClickStuff (str, task);
str += ">";
str += display.SymbolString;
str += "</P>";
// alert (str); break; case 2: // MMC_TASK_DISPLAY_TYPE_VANILLA_GIF, // (GIF) index 0 is transparent case 3: // MMC_TASK_DISPLAY_TYPE_CHOCOLATE_GIF, // (GIF) index 1 is transparent case 4: // MMC_TASK_DISPLAY_TYPE_BITMAP // non-transparent raster
// 3 possibilities for action: "ID:", "LINK:" and "SCRIPT:" // default is "ID:", I guess switch (type) { case 0: //task.MMC_TASK_ACTION_ID: str += "<P ALIGN=center>"; str += "<IMG SRC=" + display.MouseOffBitmap; str += " style=\"filter: gray(enabled=true) invert(enabled=0)\""; str += " onmouseover=\"filters.invert.enabled = true;\""; str += " onmouseout =\"filters.invert.enabled = false;\""; // str += " onclick=\"myClick('" + clsid + "', " + task.CommandID +", '" + "0" + "')\">"; str += " onclick=\"MMCCtrl.TaskNotify ('" + clsid + "', " + task.CommandID +", '" + "0" + "')\">";
str += text + "</P>"; break; case 1: //task.MMC_TASK_ACTION_LINK: str = "<P ALIGN=center>"; str += "<A HREF=" + task.ActionURL + ">"; str += "<IMG SRC=" + display.MouseOffBitmap + ">"; str += text + "</A>"; break; case 2: //task.MMC_TASK_ACTION_SCRIPT: str += "<P ALIGN=center>"; str += "<IMG SRC=" + display.MouseOffBitmap; str += " LANGUAGE=" + task.ScriptLanguage; str += " onclick=\"" + task.Script; str += "\">"; str += text + "</P>"; break; default: alert ("unrecognized task"); break; } break; } if (str != "") document.body.insertAdjacentHTML ("BeforeEnd", str); } alert ("document.body.innerHTML:\n" + document.body.innerHTML); } window.onload = myLoad; </SCRIPT>
<HEAD> <TITLE>Default TaskPad</TITLE> </HEAD>
<BODY BGCOLOR="white" TOPMARGIN=0 LEFTMARGIN=0>
</BODY>
</HTML>
|