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.
 
 
 
 
 
 

578 lines
13 KiB

<HTML>
<HEAD>
<TITLE>Remote Test Page</TITLE>
<STYLE>
BLOCKQUOTE { margin-top:0; padding-top:0; }
</STYLE>
<SCRIPT>
var aMachines =
[
"edsel01", "edsel02", "edsel03", "edsel04", "edsel05",
"edsel06", "edsel7", "edsel8", "edsel9", "edsel10",
"edsel11", "edsel12",
"windshield",
"EXHAUST",
"headlight",
"antenna",
"studebaker",
"hound-1",
"hound-2",
"upholstry",
"handbrake",
"headerpipe",
"glasspack",
"jackspc2",
"jackspc"
];
function ErrorCheck(fn)
{
try
{
eval(fn);
}
catch(ex)
{
var i;
var str = '';
for (i in ex)
{
if (typeof(ex[i]) == 'number')
{
var value = ex[i];
if (value < 0)
{
value = value + 0x100000000;
}
str += '\t' + i + ': ' + ex[i] + ' (' + value.toString(16) + ')\n';
}
else
{
str += '\t' + i + ': ' + ex[i] + '\n';
}
}
window.alert("an error occurred while executing '" + fn + "'\n" + str);
}
}
function Connect()
{
window.alert("Try 1");
var g_RemoteObj1 = new ActiveXObject('MTScript.Proxy', "JPORKKA1");
window.alert("Try 2");
var g_RemoteObj2 = new ActiveXObject('MTScript.Remote', "JPORKKA1");
window.alert("Try 3");
var str = '';
RemoteObj.Connect(machname.value);
str = 'Connected to machine ' + RemoteObj.Name + '.<BR>';
str += '&nbsp;&nbsp;&nbsp;Platform = ' + RemoteObj.Platform + '<BR>';
str += '&nbsp;&nbsp;&nbsp;OS = ' + RemoteObj.OS + '<BR>';
str += '&nbsp;&nbsp;&nbsp;MajorVer = ' + RemoteObj.MajorVer + '<BR>';
str += '&nbsp;&nbsp;&nbsp;MinorVer = ' + RemoteObj.MinorVer + '<BR>';
str += '&nbsp;&nbsp;&nbsp;BuildNum = ' + RemoteObj.BuildNum + '<BR>';
str += '&nbsp;&nbsp;&nbsp;PlatformIsNT = ' + RemoteObj.PlatformIsNT + '<BR>';
str += '&nbsp;&nbsp;&nbsp;ServicePack = ' + RemoteObj.ServicePack + '<BR>&nbsp;';
Output.innerHTML = str;
DumpData();
}
function Disconnect()
{
RemoteObj.Disconnect();
Output.innerText = '';
Pub.innerText = '';
}
function SetMode(modename)
{
cmd.value = 'setmode';
args.value = modename;
SendExec();
DumpData();
}
function Init()
{
cmd.value = 'setconfig';
// args.value = 'file://%ScriptPath%\\..\\docs\\config_template.xml';
args.value = 'file://%ScriptPath%\\config_template.xml';
SendExec();
cmd.value = 'setenv';
// args.value = 'file://%ScriptPath%\\..\\docs\\env_template.xml';
args.value = 'file://%ScriptPath%\\env_template.xml';
SendExec();
DumpData();
}
function SendExec()
{
var vRet = RemoteObj.Exec(cmd.value, args.value);
try
{
Output.insertAdjacentText('beforeEnd', 'Exec sent. Return value = "' + vRet + '"');
Output.insertAdjacentHTML('beforeEnd', '<BR>&nbsp;');
}
catch(ex)
{
// Ignore errors
}
}
var g_strDump;
function DumpDataPrivate()
{
g_strDump = '';
try
{
var str = RemoteObj.Exec('getpublic', 'PrivateData');
var pd = eval(str);
DumpObject(pd, 77);
}
catch(ex)
{
debugger;
throw ex;
}
Pub.innerHTML = g_strDump;
}
function DumpData()
{
g_strDump = '';
try
{
var str = RemoteObj.Exec('getpublic', 'root');
var pd = eval(str);
DumpObject(pd, 77);
}
catch(ex)
{
debugger;
throw ex;
}
Pub.innerHTML = g_strDump;
}
function OutputDebugString(str)
{
Output.insertAdjacentText('beforeEnd', str);
Output.insertAdjacentHTML('beforeEnd', '<BR>&nbsp;');
}
function ExitAllProc()
{
var m;
var vRet;
for( m in aMachines)
{
try
{
RemoteObj.Connect(aMachines[m]);
str = 'Connected to machine ' + RemoteObj.Name;
vRet = RemoteObj.Exec("exitprocess", 0);
OutputDebugString("Exit proc on " + aMachines[m] + " returned " + vRet);
RemoteObj.Disconnect();
}
catch(ex)
{
}
}
}
function ConnectAllProc()
{
var m;
for( m in aMachines)
{
try
{
RemoteObj.Connect(aMachines[m]);
var str = RemoteObj.Exec('getpublic', 'nDataVersion');
str = RemoteObj.Name + " OK";
OutputDebugString(str);
RemoteObj.Disconnect();
}
catch(ex)
{
OutputDebugString(aMachines[m] + " " + ex.description);
}
}
}
function Browse()
{
var opt;
var strRootTag;
var strFilePattern = '*PublicData*.log';
var strTempDir;
FSObj = new ActiveXObject('Scripting.FileSystemObject');
strTempDir = FSObj.GetSpecialFolder(2).Path; // Temp Folder
comdlg.FileName = strFilePattern;
comdlg.DialogTitle = 'Select Log File';
comdlg.Flags = 524288 + // Use explorer format
4 + // Hide read-only checkbox
2048 + // Path must exist
4096; // File must exist
comdlg.Filter = 'LOG Files (*.log)|*PublicData*.log';
comdlg.InitDir = strTempDir;
comdlg.ShowOpen();
if (comdlg.FileName == strFilePattern)
return;
return comdlg.FileName;
}
function ViewPDLog()
{
try
{
var strFileName = Browse();
if (!strFileName)
return;
var FSObj = new ActiveXObject("Scripting.FileSystemObject");
var logfile = FSObj.OpenTextFile(strFileName, 1, false);
var strData = logfile.ReadAll();
logfile.Close();
var obj = eval(strData);
DumpObject(obj, 99);
Pub.innerHTML = g_strDump;
}
catch(ex)
{
Pub.innerHTML = '';
}
}
function DumpObject(obj, maxdepth)
{
var TreeResult = DumpObjectWorker(obj, maxdepth);
var str = UndumpTree(TreeResult);
g_strDump = str;
}
function UndumpTree(tree)
{
var str = '';
for(var index = 0; index < tree.length; ++index)
{
if (typeof(tree[index]) == 'object')
{
str += UndumpTree(tree[index]);
}
else
str += tree[index];
}
return str;
}
function DumpObjectWorker(obj, maxdepth)
{
var fHasChildren;
var j;
var i;
var result;
var tree = new Array();
var index = 0;
if (maxdepth == 0)
{
tree[index] = '<I>Maximum Depth reached</I><BR>';
return tree;
}
for (i in obj)
{
if (typeof(obj[i]) == 'object')
{
fHasChildren = false;
for (j in obj[i])
{
if (j != 'length')
{
fHasChildren = true;
break;
}
}
if (!fHasChildren)
{
tree[index++] = '<STRONG>' + i + '</STRONG> (empty)<BR>';
}
else
{
tree[index++] = '<SPAN> <B onclick="toggle(this)">' + i + '</B><BR><DIV id=quote style="display:none;margin-left:3em">';
result = DumpObjectWorker(obj[i], maxdepth-1);
tree[index++] = result;
tree[index++] = '</DIV></SPAN>';
}
}
else if (typeof(obj[i]) == 'string')
{
tree[index++] = '' + i + ' = "' + obj[i] + '"<BR>';
}
else
{
tree[index++] = '' + i + ' = ' + obj[i] + '<BR>';
}
}
return tree;
}
function toggle(obj) { with (obj.parentElement.children("quote").style) { if (display=="none") display=""; else display="none"; }}
//======================================================================================================
/*
function DumpObject(obj, maxdepth)
{
var TreeResult = DumpObjectWorker(obj, maxdepth);
g_strDump = UndumpTree(TreeResult);
}
function UndumpTree(tree)
{
var str = '';
for(var index = 0; index < tree.length; ++index)
{
if (typeof(tree[index]) == 'object')
{
str += UndumpTree(tree[index]);
}
else
str += tree[index];
}
return str;
}
function DumpObjectWorker(obj, maxdepth)
{
var fHasChildren;
var j;
var i;
var result;
var tree = new Array();
var index = 0;
if (maxdepth == 0)
{
tree[index] = '<I>Maximum Depth reached</I><BR>';
return tree;
}
for (i in obj)
{
if (typeof(obj[i]) == 'object')
{
fHasChildren = false;
for (j in obj[i])
{
if (j == 'length')
{
fHasChildren = true;
break;
}
}
if (!fHasChildren)
{
tree[index++] = '<STRONG>' + i + '</STRONG> (empty)<BR>';
}
else
{
tree[index++] = '<SPAN> <B onclick="toggle(this)">' + i + '</B><BR><DIV id=quote style="display:none;margin-left:3em">';
result = DumpObjectWorker(obj[i], maxdepth-1);
tree[index++] = result;
tree[index++] = '</DIV></SPAN>';
}
}
else if (typeof(obj[i]) == 'string')
{
tree[index++] = '' + i + ' = "' + obj[i] + '"<BR>';
}
else
{
tree[index++] = '' + i + ' = ' + obj[i] + '<BR>';
}
}
return tree;
}*/
/*function DumpObject(obj, maxdepth)
{
if (maxdepth == 0)
return;
for (i in obj)
{
if (typeof(obj[i]) == 'object')
{
g_strDump += '<B>' + i + '</B><BLOCKQUOTE>';
DumpObject(obj[i], maxdepth-1);
g_strDump += '</BLOCKQUOTE>';
}
else
{
g_strDump += i + ' = "' + obj[i] + '"<BR>';
}
}
}
*/
</SCRIPT>
<SCRIPT for=RemoteObj event="OnScriptNotify(arg1, arg2)" language=JavaScript>
try
{
Notify.insertAdjacentHTML('beforeEnd', '<B>Notify(' + arg1 + ', ' + arg2 + ')</B><BR>');
if (arg1 == 'UpdatePublicData')
{
DumpData();
}
}
catch(ex)
{
// Ignore errors
}
</SCRIPT>
<SCRIPT for=RemoteObjWorker event="OnScriptNotify(arg1, arg2)" language=JavaScript>
try
{
}
catch(ex)
{
// Ignore errors
}
</SCRIPT>
</HEAD>
<BODY>
Machine (leave blank for local machine): <INPUT type=text id=machname>
<INPUT type=button value="Connect" onclick="ErrorCheck('Connect()')">
<INPUT type=button value="Disconnect" onclick="ErrorCheck('Disconnect()')">
<INPUT type=button value="Init" onclick="ErrorCheck('Init()')" style="width:5em">
<TABLE>
<TR>
<INPUT type=button value="SetMode master" onclick="ErrorCheck('SetMode(\'master\')')" style="width:8em">
<INPUT type=button value="SetMode slave" onclick="ErrorCheck('SetMode(\'slave\')')" style="width:8em">
<INPUT type=button value="SetMode test" onclick="ErrorCheck('SetMode(\'test\')')" style="width:8em">
<INPUT type=button value="SetMode idle" onclick="ErrorCheck('SetMode(\'idle\')')" style="width:8em">
</TABLE>
<P>
Command: <INPUT type=text id=cmd> &nbsp;&nbsp;
Args: <INPUT type=text id=args>
<INPUT type=button value="Send" onclick="ErrorCheck('SendExec()')">
<hr>
<TABLE width=100%>
<TR>
<TD valign=top ROWSPAN=2>
<INPUT type=button value="Clear Output" onclick="Output.innerHTML='';Notify.innerHTML='';">
<P>
<SPAN id=Output></SPAN>
</TD>
<TD valign=top>
<SPAN id=Notify></SPAN>
</TD>
</TR>
<TR>
<TD valign=top>
<INPUT type=button value="Exit All Edsel" onclick="ErrorCheck('ExitAllProc()')">
<INPUT type=button value="Connect All Edsel" onclick="ErrorCheck('ConnectAllProc()')">
<INPUT type=button value="View PD Log" onclick="ErrorCheck('ViewPDLog()')">
<INPUT type=button value="Dump PublicData" onclick="ErrorCheck('DumpData()')">
<INPUT type=button value="Dump PrivateData" onclick="ErrorCheck('DumpDataPrivate()')">
<P>
<DIV id=Pub></DIV>
</TD>
</TR>
</TABLE>
<OBJECT id=RemoteObj
CLASSID="clsid:854c3182-c854-4a77-b189-606859e4391b">
</OBJECT>
<OBJECT id=RemoteObjWorker
CLASSID="clsid:854c3182-c854-4a77-b189-606859e4391b">
</OBJECT>
<!-- License object which allows us to us the common dialog OCX -->
<object CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331" VIEWASTEXT>
<param NAME="LPKPath" VALUE="comdlg.lpk">
</object>
<!-- The common dialog OCX -->
<object classid="clsid:F9043C85-F6F2-101A-A3C9-08002B2F49FB" codeBase="controls/comdlg32.ocx#version=6,0,84,18" id="comdlg" style="LEFT: 0px; TOP: 0px" VIEWASTEXT>
<param NAME="_ExtentX" VALUE="847">
<param NAME="_ExtentY" VALUE="847">
<param NAME="_Version" VALUE="393216">
<param NAME="CancelError" VALUE="0">
<param NAME="Color" VALUE="0">
<param NAME="Copies" VALUE="1">
<param NAME="DefaultExt" VALUE>
<param NAME="DialogTitle" VALUE>
<param NAME="FileName" VALUE>
<param NAME="Filter" VALUE>
<param NAME="FilterIndex" VALUE="0">
<param NAME="Flags" VALUE="0">
<param NAME="FontBold" VALUE="0">
<param NAME="FontItalic" VALUE="0">
<param NAME="FontName" VALUE>
<param NAME="FontSize" VALUE="8">
<param NAME="FontStrikeThru" VALUE="0">
<param NAME="FontUnderLine" VALUE="0">
<param NAME="FromPage" VALUE="0">
<param NAME="HelpCommand" VALUE="0">
<param NAME="HelpContext" VALUE="0">
<param NAME="HelpFile" VALUE>
<param NAME="HelpKey" VALUE>
<param NAME="InitDir" VALUE>
<param NAME="Max" VALUE="0">
<param NAME="Min" VALUE="0">
<param NAME="MaxFileSize" VALUE="260">
<param NAME="PrinterDefault" VALUE="1">
<param NAME="ToPage" VALUE="0">
<param NAME="Orientation" VALUE="1"></object>
</BODY>
</HTML>