美文网首页
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