在网页上实现shell功能

 
                        果蝇整理 0:47 06-1-30

(一)开始

        从WIN95起,WIN系统的一些基本功能被封装在符合通用对象模式COM(Common Object Mode)标准的OLE组件 中,在网页上可通过JavaScript语言调用shell实现一些系统功能。用JavaScript调用shell是通过ActiveXObject来 实现的,见下:
        <html>
        <script>
        var Oh= new ActiveXObject("Shell.Application");
        </script>
        </html>
        这样将得到Shell类目标。

(二) Shell类

        Shell类包括以下方法:

        (1) BrowseForFolder        

                打开文件浏览对话框,BrowseForFolder是最实用的一种方法,它可以定位文件或文件夹,或定位系统文件夹,具体形式如下:

                Oh.BrowseForFolder(Hwnd,Title,Options,[RootFolder]);

                具体参数:

                Hwnd,这里必须为0

                Title,对话框标题字符串

                Options,浏览方式,见下:
                0x0001  For finding a folder to start document searching
                0x0002  For starting the Find Computer
                0x0004  对话框加宽
                0x0008  确定按钮变灰失效
                0x0010  在对话框顶部加入编辑框
                0x0020  insist on valid result (or CANCEL)
                0x1000  确定按钮变灰失效
                0x2000  可选当前文件,不包括子目录文件,确定按钮变灰失效,(可同时选0x0001使确定按钮有效)
                0x4000  浏览所有项,可选文件或文件夹

                RootFolder,起始根目录,可选项,可以自己指定目录字符串,也可以是系统目录的数字表示,数字含义见下:
                0x0000        桌面
                0x0001        IE浏览器
                0x0002        C:/WINDOWS/Start Menu/Programs目录
                0x0003        控制面板
                0x0004        打印机
                0x0005        我的文档
                0x0006        收藏
                0x0007        启动
                0x0008        Recent文档
                0x0009        发送到
                0x000a        回收站
                0x000b        开始菜单
                0x000c        桌面(打开在我的电脑)        
                0x0010        C:/WINDOWS/Desktop桌面目录
                0x0011        我的电脑(包括所有驱动器)
                0x0012        整个网络
                0x0013        NetHood
                0x0014        字体目录
                0x0015        C:/WINDOWS/ShellNew目录
                0x001a        C:/WINDOWS/Application Data目录
                0x001b  printHood
                0x0020        C:/WINDOWS/Temporary Internet Files目录
                0x0021        cookie目录
                0x0022        IE浏览历史

                如:
                Oh.BrowseForFolder(0,"测报软件:",0x1000|0x0001,"D://OSSMO 2004"); 
                Oh.BrowseForFolder(0,"垃圾文件:",0x4000,0x000a); 
                Oh.BrowseForFolder(0,"请选择目录:",0x0000 ,"c://"); 

                BrowseForFolder 最后将返回用户所选的文件或文件夹的Folder类目标,通过对Folder类目标的处理得到所选目标的完整路径,例如:

                <html>
                <script>
                var Oh= new ActiveXObject("Shell.Application");
                var ob=Oh.BrowseForFolder(0,"我的文件夹:",0x1000|0x0001,0x0000); // 返回Folder目标ob 
                if(ob&&ob.Items()&&ob.Items().Item())        alert("你选择了目录:"+ob.Items().Item().Path);
                else alert("你未做选择");
                </script>
                </html>


        (2) Explore                 
                用资源管理器打开文件夹,可用于下载文件,例如:
                Oh.Explore("c://"); //浏览C盘
                Oh.Explore("c://SCANDISK.LOG");  //本地下载 

        (3) Open                 
                打开文件夹,可用于下载文件,例如:
                Oh.Explore("c://"); //打开C盘

        (4) FileRun                 
                打开运行窗口,例如:
                Oh.FileRun();

        (5) SetTime                        
                打开时间属性设置对话框

        (6) ShutdownWindows         
                打开关闭计算机对话框

        (7) FindFiles                
                打开查找文件对话框 

        (8) TrayProperties                
                打开任务栏属性对话框 

        (9) FindComputer                 
                打开查找计算机对话框

        (10) Help                         
                打开帮助文件, WIN98下无效

        (11) ControlPanelItem         
                打开控制面板中的某一项,例如:
                Oh.ControlPanelItem("C://WINDOWS//SYSTEM//DESK.CPL");//打开桌面属性设置
                这里介绍一种定位控制面板中项目的方法:在控制面板选定一项--->单击右键--->在桌面创建快捷方式--->选定快捷方式单击右键--->按“更改图标”按钮,在弹出的对话框上部有完整目录。

        (12) CascadeWindows                
                层叠排列桌面上的所有窗口,包括最大化的窗口,不包括最小化的窗口

        (13) TileHorizontally         
                竖向排列桌面上的所有窗口

        (14) TileVertically                
                横向排列桌面上的所有窗口

        (15) MinimizeAll                
                使桌面所有窗口图标化 

        (16) UndoMinimizeALL         
                恢复最小化的窗口

        (17) EjectPC                 
                未知,WIN98下无效

        (18) RefreshMenu                 
                未知

        (19) Suspend                        
                暂停计算机,大概是使计算机进入休眠状态!!!!!!!! 

        (20) Windows 
                返回shell的Windows类目标,例如:        
                Oh.Windows();

        (21) NameSpace 
                返回指定文件夹的Folder类目标,例如:
                var fol=Oh.NameSpace("c://");//返回C盘Folder类目标
                var fol=Oh.NameSpace(0x001a);//返回系统C:/WINDOWS/Application Data目录Folder类目标


(三)Windows类
        
        可通过Shell类的Windows方法得到Windows类目标,见上节。既返回系统进程中所有的shell window,这些 shell可以是文件夹、IE浏览器、资源管理器,如我们打开资源管理器和一个网页,并在"我的电脑"中打开一个文件夹,那么将有一个Windows类目 标,包括三个子Windows,Count属性值将为3,见下:
        <html>
        <script>
        var Oh= new ActiveXObject("Shell.Application");
        alert(Oh.Windows().Count);
        </script>
        </html>

        各个子Windows可通过Item索引得到,如:
        Oh.Windows().Item(0).StatusBar=0;
        将去掉第一个子Windows的状态栏,相似的过程还有
        Oh.Windows().Item(0).ToolBar=1;
        Oh.Windows().Item(0).StatusText="你好";
        Oh.Windows().Item(0).Quit();//关闭浏览器或资源管理器 *************************
        alert(Oh.Windows().Item(0).FullName);//浏览器或资源管理器程序全名
        alert(Oh.Windows().Item(0).LocationURL);//文件或网页地址
        alert(Oh.Windows().Item(0).Path);//浏览器或资源管理器程序所在目录
        对于IE浏览器有:
        Oh.Windows().Item(0).Document.write("123");
        alert(Oh.Windows().Item(0).Document.title);


        先打开资源管理器或IE浏览器,再运行下列代码,看看资源管理器的状态栏有什么结果。
        <html>
        <input type="button" value="请点击这里,然后看资源管理器的状态栏" οnclick="onck()">
        <script>
        function onck(){
                var Oh= new ActiveXObject("Shell.Application");
                Oh.Windows().Item(0).StatusText="你选定了一万个对象,系统资源不足...";
        }
        </script>
        </html>

(四)Folder类(文件夹)
        
        属性:
        Application 
        Parent                        ??返回父Folder
        ParentFolder                 返回父Folder
        Title                        得到目录名

        方法:
        CopyHere                 拷贝,不支持中文文件名,支持目录拷贝
        GetDetailsOf 
        Items                         返回FolderItems目标
        MoveHere                 移动,不支持中文文件名,支持目录移动
        NewFolder                 新建,不支持
        ParseName                 返回FolderItem目标        
        GetDetailsOf                得到子目标属性

        用法:
 
        (1)若想得到文件sdr.txt的属性,可用以下实现:
        var fitem=Oh.NameSpace("e://zxd//").ParseName("sdr.txt");//先得到sdr.txt的FolderItem类目标
        alert(Oh.NameSpace("c://zxd//").GetDetailsOf(fitem,0/*属性参数*/));//得到子目录或字文件的属性
        属性参数:
        0  Retrieves the name of the item.  
        1  Retrieves the size of the item.  
        2  Retrieves the type of the item.  
        3  Retrieves the date and time that the item was last modified.  
        4  Retrieves the attributes of the item.          
        -1 Retrieves the info tip information for the item.  

        (2)如将JavaScript.zip文件拷贝到e:/new/当前目录,可用以下实现:
        var fitem=Oh.NameSpace("e://").Items().Item("JavaScript.zip");//先得到FolderItem类目标
        Oh.NameSpace("e://new//").CopyHere(fitem,0x0010/*拷贝参数*/);
        拷贝参数
        0x0001 ???磁盘被保护?
        0x0008 如果以存在目标则形成“复件 JavaScript.zip”
        0x0010 如果以存在目标不提示直接覆盖

        (3)其他
        alert(Oh.NameSpace("c://windows//help//").Title);//得到父目录
        Oh.NameSpace("e://zxd//").Items();//得到FolderItems目标,既字目录和文件集
        Oh.NameSpace("e://new//").MoveHere(ob,0x0000);//移动


(五)FolderItems类(文件夹下的文件集合,包括子文件夹)

        属性:Count                子项目总数
        方法:Item                得到子文件,参数为文件名或索引数值
        用法:
        alert(Oh.NameSpace("c://zxd").Items().Count);//文件夹内文件总数,包括子文件夹
        alert(Oh.NameSpace("c://zxd//").Items().Item("ts.exe"));//得到FolderItem文件目标
        alert(Oh.NameSpace("c://zxd//").Items().Item(3));//得到FolderItem文件目标
        


(六)FolderItem类(子文件)

        属性:
        Application 
        GetFolder        如果此目标是文件夹,该属性将返回该目标的Folder类
        GetLink         如果此目标是快捷方式,该属性将返回该目标的IShellLinkDual类
        IsBrowsable         是否能被浏览
        IsFileSystem         是否文件
        IsFolder         是否文件夹
        IsLink                 是否快捷方式
        ModifyDate         返回创建时间
        Name                 名称
        Parent                 返回父目标的FolderItem
        Path                 返回目标的完整路径
        Size                 大小
        Type                 类型

        方法:
        InvokeVerb         打开目标(运行程序)
        Verbs                 得到FolderItemVerbs类目标 

        用法:

        alert(Oh.NameSpace("e://").Items().Item("一些JS技术.htm").name);//"一些JS技术.htm" 支持中文
        alert(Oh.NameSpace("e://new//").Items().Item("JavaScript.zip").Path);//得到文件path "E:/new/JavaScript.zip"
        alert(Oh.NameSpace("c://zxd//").Items().Item("计算器.pif").GetLink);//得到源文件
        alert(Oh.NameSpace("c://zxd//").Items().Item("计算器.pif").IsFolder);//是否文件夹IsLink,IsFileSystem,IsBrowsable
        alert(Oh.NameSpace("c://zxd//").Items().Item("计算器.pif").date);
        alert(Oh.NameSpace("e://new//").Items().Item("JavaScript.zip").Size);//得到文件大小 72259字节,文件夹为0
        alert(Oh.NameSpace("e://new//").Items().Item("JavaScript.zip").Type);//得到文件类型 "zip 文件"  "文件夹"
        Oh.NameSpace("e://new").Items().Item("JavaScript.zip").InvokeVerb(od);//运行
        Oh.NameSpace("c://zxd//").ParseName("ts.exe").InvokeVerb();//运行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值