什么是ActiveX?
百度百科:
ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。
ActiveX 控件是用于互联网的很小的程序,有时称为插件程序。它们会允许播放动画,或帮助执行任务,如在 Microsoft Update 安装安全更新,因此可以增强您的浏览体验。 [1]
在创建包括ActiveX程序时,主要的工作就是组件,一个可以自足的在ActiveX网络(Windows,Mac,Linux)中任意运行的程序。这个组件就是ActiveX控件。ActiveX是Microsoft为抗衡Sun Microsystems的JAVA技术而提出的,此控件的功能和java applet功能类似。
HTML页面可以使用ActiveX空间播放音乐声音和flash,如何在js中进行ActiveX控件的编程?
计算机上安装各种软件后,一些ActiveX空间就会安装在计算机上,可以利用这些ActiveX控件来实现我们所要的功能。
例如FileSystemObject空间对象提供对计算机文件系统的访问;
ExcelApplication和Word.Application提供对Excel和word的空间和操作。
image.png
使用ActiveX编程时需要考虑:ActiveX控件之ActiveXObject is not defined,浏览器是否支持;
ActiveX控件方便用户在网页中插入各种效果,但是并不是所有浏览器都支持该控件。
ActiveX是微软独有的,只有基于IE内核的浏览器才能使用。,如果是chrome的内核的话需要进行注册表操作才能使用
在Chrome中用如上方法调用,会出现ActiveXObject is not defined ,这是因为Chrome出于安全性考虑已经禁止直接调用客户端程序,去除了内置对象ActiveXObject,在Chrome下解决该问题思路,可以选择使用 “url protocol handler”私有协议,widows提供了用户可自定义的协议,使用私有协议首先需要到注册表下添加协议的属性(类型、key、值),通过已定义的私有协议可以就可以调用本地客户端程序
当出现如上错误,可以将通过该控件创建的对象定义为本地的JavaScript对象。代码如下:
var xmlHttp;
//判断浏览器是否支持ActiveX控件
if(window.ActiveXObject){
//支持-通过ActiveXObject的一个新实例来创建XMLHttpRequest对象
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
//不支持
else if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest()
}
FileSystemObject
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
//判断浏览器是否支持ActiveX控件
//支持-通过ActiveXObject的一个新实例来创建XMLHttpRequest对象
var fso = new ActiveXObject("Scripting.FileSystemObject")
var fe=fso.FolderExists("C:\\Bouns");
if(!fe){
fso.CreateFolder("C:\\Bouns");
}
if(confirm("do you vant to delete forder C:\\Bouns")){
fso.DeleteFolder("C:\\Bouns");
}
fso.CopyFile("D:\\图片\\wallhaven-72kx69.jpg","E:\\学习\\1.jpg",true);
//创建新文件,写入文本
var tf=fso.CreateTextFile("E:\\学习\\ddd.txt",true);
tf.WriteLine("Test 1,2,3");//编写一行
tf.WriteBlankLines(3);//跳过三行
tf.Write("this is a test");
tf.Close();
//打开文件,读取文件内容
var ForReading=1;
var ts=fso.OpenTextFile("E:\\学习\\ddd.txt",ForReading);
var s=ts.ReadLine();
alert("File contents="+s);
ts.Close();
</script>
</head>
<body>
</body>
</html>
操作Word和Excel
通过页面程序自动控制word、Excel来帮我们自动完成很多工作!其实,这种变成有一个捷径,就是将要自动完成的工作利用WORD或Excel的录制宏功能生成VBA代码,在复制粘贴到页面中,修改修改即可。
Excel操作
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var ExcelApp = new ActiveXObject("Excel.Application");
var ExcelSheet = new ActiveXObject("Excel.Sheet");//创建Excel工作表
ExcelSheet.Application.Visible = true; //设置窗口可见
ExcelSheet.ActiveSheet.Cells(1, 1).Value = "This is column A, row 1";
ExcelSheet.SaveAs("D:\\TEST1.XLSX");
ExcelApp.Quit();
</script>
</head>
<body>
</body>
</html>
编辑二
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
//����Excel
var ExcelApp = new ActiveXObject("Excel.Application");
ExcelApp.Visible = true; //ʹExcel���ڿɼ�
ExcelApp.WorkBooks.Open("D:\\TEST1.XLSX"); //���ϴν��õ�D:\TEST1.XLSX
var objExcelBook = ExcelApp.ActiveWorkBook;
var objExcelSheets = objExcelBook.Worksheets;
var objExcelSheet = objExcelBook.Sheets(1); //访问第二个sheet
//写入数据
objExcelSheet.Range("B2:k2").Value = Array("Week1", "Week2", "Week3", "Week4", "Week5", "Week6", "Week7");
objExcelSheet.Range("B3:k3").Value = Array("67", "87", "5", "9", "7", "45", "45", "54", "54", "10");
objExcelSheet.Range("B4:k4").Value = Array("10", "10", "8", "27", "33", "37", "50", "54", "10", "10");
objExcelSheet.Range("B5:k5").Value = Array("23", "3", "86", "64", "60", "18", "5", "1", "36", "80");
objExcelSheet.Cells(3, 1).Value = "InternetExplorer";
objExcelSheet.Cells(4, 1).Value = "Netscape";
objExcelSheet.Cells(5, 1).Value = "Other";
objExcelSheet.SaveAs("D:\\TEST2.XLSX"); //���浽D:\TEST2.XLSX
ExcelApp.Quit(); //�˳�Excel
</script>
</head>
<body>
</body>
</html>
word 操作
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
WordApp = new ActiveXObject("Word.Application"); //����Word
WordApp.Application.Visible = true; //ʹWord���ڿɼ�
var mydoc = WordApp.Documents.Add("", 0, 1); //新建一个文档
WordApp.ActiveWindow.ActivePane.View.Type = 3; //Word视图模式为页面
WordApp.Selection.TypeText("holle word"); //输入字符串
WordApp.Selection.HomeKey(5, 1); //光标移到首行
WordApp.Selection.Font.Bold = 9999998; //wdToggle
WordApp.Selection.WholeStory(); //选中整个文档内容
mydoc.SaveAs("D:\\test.doc"); //保存:D\test.doc
for (i = WordApp.Documents.Count; i > 0; i--) { //关闭所有打开的Word文档
WordApp.Documents(i).Close(0);
}
WordApp.Application.quit(); //退出word
</script>
</head>
<body>
</body>
</html>
网友评论