美文网首页
ActiveX编程技术

ActiveX编程技术

作者: 开心的小哈 | 来源:发表于2022-04-23 18:42 被阅读0次

什么是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>

相关文章

网友评论

      本文标题:ActiveX编程技术

      本文链接:https://www.haomeiwen.com/subject/fjvaertx.html