Русский   English   中文

一个简单的 DWX 应用示例

在这个示例中,您可以用 vbs 脚本解压一个 rar 文件。在系统里没有安装任何解压软件的情况下,使用 DWX 导出并调用 UnRAR.dll 中包装的函数,实现文件解压缩功能。 UnRAR.dll 不需要安装或注册,它是 RARLAB 发布的一个免费的供第三方调用的链接库文件,您可以去 RAR 官网 下载一份。

示例程序运行需要:显然,这三个文件(dll、rar、vbs)应该保存在同一个文件夹内。
'vbs 调用 unrar.dll 解压缩示例
set FSO = createobject("Scripting.FileSystemObject")  '创建 FSO 文件对象
set DWX = CreateObject("DynamicWrapperX")
DWX.Register "user32.dll", "MessageBoxW", "i=hwwu", "r=l"
curPath = FSO.GetFolder(".").Path
unRar = curPath & "\UnRAR64.dll"      '必要的支持文件
rarfile = curPath & "\examples.rar"   '待解压的文件
if FSO.FileExists(unRar) <> 0 then
    with DWX
        .Register unRar, "RAROpenArchiveEx", "i=p", "r=p"
        .Register unRar, "RARReadHeaderEx", "i=pp", "r=p"
        .Register unRar, "RARProcessFileW", "i=huww", "r=l"
        .Register unRar, "RARCloseArchive", "i=p", "r=l"
    end with   
    RAROpenDataEx = DWX.MemAlloc(336, 1)        '定义文件打开结构体
    frarfile = DWX.StrPtr(rarfile, "w")
    DWX.NumPut frarfile, RAROpenDataEx, 8, "p"  '设置文件路径
    DWX.NumPut 1, RAROpenDataEx, 16, "u"        '设置文件打开模式
    Handle = DWX.RAROpenArchiveEx(RAROpenDataEx) '文件打开
    headData = DWX.MemAlloc(9280, 1)
    Do While (0 = DWX.RARReadHeaderEx(Handle, headData))
        DWX.RARProcessFileW Handle, 2, "", ""
    Loop
    DWX.RARCloseArchive Handle '文件关闭
    DWX.MemFree headData       '释放内存
    DWX.MemFree RAROpenDataEx
    DWX.MessageBoxW 0, "文件解压成功!", "提示", 64
else
    DWX.MessageBoxW 0, "当前路径缺少 UnRAR64.dll 文件", "错误", 48
end if