频道直达 - 学院 - 下载 - 交易 - 特效 - 字库 - 手册 -排名-工具- 繁體
网页教学网站开发 设为首页
加入收藏
联系我们
建站搜索: 常用广告代码   用户注册 | 用户登陆
您当前的位置:中国建站之家 -> 网站开发设计技术教程 -> asp教程 -> 在ASP页里面注册DLL的VBScript CLASS

在ASP页里面注册DLL的VBScript CLASS

作者:未知  来源:转载  发布时间:2005-9-16 0:44:38  发布人:acx

减小字体 增大字体

*******************************************************************************************
*使用本CLASS可以管理并在ASP页里面注册你的DLL
*本CLASS在WIN 2K上测试通过
*注:使用本CLASS需要先建立一个XML文件。文件如下.打开记事本将如下3行存为*.XML文件
*
*    <?xml version="1.0" encoding="gb2312" standalone="yes"?>
*    <Dll列表>
*    </Dll列表>
*
*------------------------------------------------------------------------------------------
*范例:
*    dim objRegsvr32
*    set objRegsvr32 = new Regsvr32
*    with objRegsvr32
*        if .LoadXml("../MyDll.xml") then
*            call Response.Write("XML文件加载错误")
*            set objRegsvr32 = nothing
*            Response.End
*        end if
*        select case .AddNode("F:\web\cw31072\dll\test\MyClass.dll" , true) '添加新条目并注册DLL
*            case 1
*                call Response.Write("条目已经添加进XML文件!并成功注册DLL啦!")
*            case 0
*                call Response.Write("条目已经添加进XML文件!但注册DLL时失败!")
*            case -1
*                call Response.Write("XML文件里已经有该条目!该DLL也已经注册的了!")
*        end select
*        ..........................
*    end with
*            
*    '本CLASS非常简单,里面还有些方法,我就不举例了,看看就知道了。日后你可以打开
*    '该XML文件看你曾经注册过和待注册的DLL列表。
*    'XML文件里每个条目如下:<Dll 是否已经注册="1">F:\web\cw31072\dll\test\MyClass.dll</Dll>
*    'F:\web\cw31072\dll\test\MyClass.dll就是你DLL文件的路径
*    '是否已经注册="1"就是该DLL已经注册过,=“0”就是还没有注册呢!
*******************************************************************************************

Class Regsvr32

    private s_objXml
    private s_objNodeRoot
    private s_strXmlPath
    private s_strAttributeName
    
    '------------------------------------
    '目的:    加载DLL配置xml文件
    '参数:    XML文件地址
    '返回:    加载失败就返回TRUE
    '------------------------------------    
    public function LoadXml(strPath)
        set s_objXml = CreateObject("MSXML2.DOMdocument")
        s_objXml.async = false
        s_objXml.load(strPath)
        if s_objXml.parseError.errorCode <> 0 then
            set s_objXml = nothing
            LoadXml = true
            exit function
        end if
        set s_objNodeRoot = s_objXml.documentElement
        s_strXmlPath = strPath
        s_strAttributeName = "是否已经注册"
    end function
    
    '---------------------------------------------
    '目的:    添加一个DLL项目
    '参数:    strPath:    DLL文件地址
    '          blnReg:    添加后是否将其注册
    '返回:    如果要求添加后注册,注册成功就返回1,注册失败返回0,已经有该项目并注过册就返回-1
    '---------------------------------------------
    public function AddNode(strPath , blnReg)
        dim objNewNode
        dim strStart
        dim objNode
        strStart = "0"
        set objNode = SelectNode(strPath)
        if objNode is nothing then
            if Reg(strPath , true) then
                strStart = "1"
                AddNode = true
            else
                AddNode = false
            end if
            set objNewNode = s_objXml.createElement("Dll")
            call objNewNode.setAttribute(s_strAttributeName , strStart)
            objNewNode.Text = strPath
            call s_objNodeRoot.appendChild(objNewNode)
            call s_objXml.save(s_strXmlPath)
        else
            if blnReg then
                if objNode.Attributes.getNamedItem(s_strAttributeName).nodeValue = "1" then
                    AddNode = true
                else
                    if Reg(strPath , true) then
                        objNode.Attributes.getNamedItem(s_strAttributeName).nodeValue = "1"
                        call s_objXml.save(s_strXmlPath)
                    else
                        AddNode = false
                    end if
                end if
             else
                 AddNode = false
             end if
        end if
    end function
    
    '----------------------------------------
    '目的:    删除所有已经注册,或者没注册的节点
    '参数:    blnStart:    0=未注册的,1=已经注册的
    '返回:    执行了删除操作就返回TRUE,否则返回FALSE
    '----------------------------------------
    public function ReAllNode(byVal blnStart)
        dim objNode
        dim blnIsChange
        blnStart = CStr(blnStart)
        for each objNode in s_objNodeRoot.childNodes
            if objNode.Attributes.getNamedItem(s_strAttributeName).nodeValue = blnStart then
                call s_objNodeRoot.removeChild(objNode)
                blnIsChange = true
            end if
        next
        if blnIsChange then
            ReAllNode = true
            call s_objXml.save(s_strXmlPath)
        else
            ReAllNode = false
        end if     
    end function
    
    '-----------------------------------------
    '目的:    删除某一个节点
    '参数:    节点内容
    '返回:    找不到节点就返回TRUE
    '-----------------------------------------
    public function ReNode(strPath)
        dim objNode
        set objNode = SelectNode(strPath)
        if objNode is nothing then
            ReNode = true
        else
            call s_objNodeRoot.removeChild(objNode)
            call s_objXml.save(s_strXmlPath)
        end if
    end function
    
    
    '-----------------------------------------
    '目的:    寻找某个节点
    '参数:    strPath:   节点内容
    '返回:    找到就返回该节点,找不到就返回nothing
    '-----------------------------------------
    private function SelectNode(ByVal strPath)
        dim objNode
        strPath = UCase(strPath)
        for each objNode in s_objNodeRoot.childNodes
            if UCase(objNode.childNodes.item(0).nodeValue) = strPath then
                Set SelectNode = objNode
                exit function
            end if
        next
        set SelectNode = nothing
    end function
    
    '--------------------------------------------
    '目的:    查看DLL文件列表里某个文件注册状态
    '参数:    该文件路径
    '返回:    1=已经注册
    '          0=未注册
    '          -1=找不到该文件
    '--------------------------------------------
    public function CheckDll(strPath)
        dim objNode
        set objNode = SelectNode(strPath)
        if objNode is nothing then
            CheckDll = -1
        else
            CheckDll = Cint(objNode.Attributes.getNamedItem(s_strAttributeName).nodeValue)
        end if
    end function
    
    '--------------------------------------
    '目的:    将所有未注册的DLL注册
    '返回:    如果有某个DLL注册失败就返回TRUE
    '--------------------------------------
    public function RegAllNode()
        dim objNode
        for each objNode in s_objNodeRoot.childNodes
            if objNode.Attributes.getNamedItem(s_strAttributeName).nodeValue = "0" then
                if Reg(objNode.childNodes.item(0).nodeValue , true) then
                    objNode.Attributes.getNamedItem(s_strAttributeName).nodeValue = 1
                else
                    RegAllNode = true
                end if
            end if
        next
    end function
    
    '-----------------------------------------
    '目的:    注册DLL
    '参数:    strPath:    要注册Dll文件路径
    '          blnLoding:    是否等待注册完成才继续执行程序
    '返回:    如果blnLoging=TRUE,注册成功就返回True
    '-----------------------------------------
    private function Reg(strPath , blnLoding)    
        dim objShell
        set objShell = CreateObject("Wscript.Shell")
        if objShell.Run("regsvr32.exe /s " & strPath , , blnLoding) = 0 then
            Reg = true
        end if
        set objShell = nothing
    end function
    
End Class

将本文收藏到QQ书签与更多好友分享
[打 印]
[] [返回上一页] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
精彩推荐
热门文章
· 注册码大全二
· 注册码大全四
· 注册码大全一
· 要10G免费网络硬盘的请进..
· 通过google 赶快来赚美金..
· 注册码大全十
· 头像-qq头像(qq新头像)4..
· 让你轻松架设FTP服务器1..
· 注册码大全三
· 梦幻背景图片7
· 卡通动物图片6
· 网页制作素材-按钮素材2..
· 让你轻松架设FTP服务器5..
· 风景图片8
· 注册码大全九
· 让你轻松架设FTP服务器2..
关注此文读者还看过
· DreamwaverMX与ASP.NET(..
· 在DW中利用MXP插件插入V..
· @ 指令参考之一 - @CODE..
· 关于代码优化的几点
· PHP新手上路(三)
· 用DataList 控制元件开发..
· 3DsMAX实例制作:三维玻..
· 用ASP做一个TOP COOL的站..
· Flash3d效果实例--水晶球..
· String添加trim,ltrim,r..
· 接触 solaris : 整和 ap..
· PhotoShop制作超酷黄金喜..
· 自动滚动的文本框
· 类的另类用法--数据的封..
· 教你快速掌握Oracle数据..
· 网盛欲做“老母鸡” 再造..
相关文章
· 解析在ASP.NET中调用存储过..
· 在动态网页技术PHP5中类(CL..
· CSS中如何正确的使用..
· 技巧总结:div中class与id的..
· 网页:CSS 中 class 及 id ..
· 推荐文章:在ASP.NET中创建..
· 标准建站来看:CSS元素的cl..
· 网页技术CSS元素的class与I..
· 在ASP页里面注册DLL的VBScr..
· 在ASP.NET AJAX中别使用mod..
· 如何在ASP程序中使用Telnet..
· 在ASP.NET中自动给URL加上超..
· 在ASP中使用事务控制
· 在ASP.NET页面中实现数据棒..
· 在ASP中常见的错误80004005..
· 在ASP中使用SQL语句之7:ORD..
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 人才招聘
网站合作、内容监督、商务咨询:QQ: 9576619
Copyright ? 2005--2008 中国建站之家版权所有
粤ICP备05092265号