谁知道Windows里面自带的Gzip.dll的函数声明及使用方法?

288794 2008-04-26 01:47:11
用inet控制获取的网页是gzip编码的,不知道怎么还原为原始的编码,需要用gzip.dll里面的函数,可是不知道怎么声明和使用,求gzip解压缩的方法。
...全文
548 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
288794 2008-05-06
  • 打赏
  • 举报
回复
问题解决,谢谢大家!!!

Option Explicit


Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
Private Declare Function InitDecompression Lib "gzip.dll" () As Long
Private Declare Function CreateDecompression Lib "gzip.dll" (ByRef context As Long, ByVal Flags As Long) As Long
Private Declare Function DestroyDecompression Lib "gzip.dll" (ByRef context As Long) As Long
Private Declare Function Decompress Lib "gzip.dll" (ByVal context As Long, inBytes As Any, ByVal input_size As Long, outBytes As Any, ByVal output_size As Long, ByRef input_used As Long, ByRef output_used As Long) As Long

Private Const OFFSET As Long = &H8


'解压缩数组
Public Function UnCompressByte(ByteArray() As Byte) As Boolean

Dim BufferSize As Long
Dim buffer() As Byte
Dim lReturn As Long

Dim outUsed As Long
Dim inUsed As Long

'创建解压缩后的缓存
CopyMemory BufferSize, ByteArray(0), OFFSET
BufferSize = BufferSize + (BufferSize * 0.01) + 12
ReDim buffer(BufferSize) As Byte

'创建解压缩进程
Dim contextHandle As Long: InitDecompression
CreateDecompression contextHandle, 1 '创建

'解压缩数据
lReturn = Decompress(ByVal contextHandle, ByteArray(0), UBound(ByteArray) + 1, buffer(0), BufferSize, inUsed, outUsed)

DestroyDecompression contextHandle

'删除重复的数据
ReDim Preserve ByteArray(0 To outUsed - 1)
CopyMemory ByteArray(0), buffer(0), outUsed

End Function
迈克揉索芙特 2008-05-06
  • 打赏
  • 举报
回复
晕,竟然与我的文章有异曲同工之妙。
http://blog.csdn.net/Modest/archive/2006/04/13/662072.aspx
嗷嗷叫的老马 2008-05-06
  • 打赏
  • 举报
回复
结帖吧:)
迈克揉索芙特 2008-05-05
  • 打赏
  • 举报
回复
http://www.example-code.com/vb/vb6-gzip-file.asp
东方之珠 2008-05-05
  • 打赏
  • 举报
回复
up
288794 2008-05-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yinweihong 的回复:]
我倒是有GZIP.DLL里面的方法的声明,但是只是在.NET下测试通过了,VB6却没有...~
[/Quote]

声明是一样的,怎么声明?
yinweihong 2008-04-27
  • 打赏
  • 举报
回复
一般来说实现GZIP的还是用ZLIB.DLL多
yinweihong 2008-04-27
  • 打赏
  • 举报
回复
http://www.google.com/codesearch?hl=en&q=show:IQaFsxIyO24:OxRSJga7rN0:kHBOK1EXgjc&sa=N&ct=rd&cs_p=http://lolsws.tripod.com&cs_f=/0321113594_ch06lev1sec1.html-002&start=1


楼主可以参考一下
yinweihong 2008-04-27
  • 打赏
  • 举报
回复
我倒是有GZIP.DLL里面的方法的声明,但是只是在.NET下测试通过了,VB6却没有...~
288794 2008-04-26
  • 打赏
  • 举报
回复
有那么好我也不用花这20分了。
嗷嗷叫的老马 2008-04-26
  • 打赏
  • 举报
回复
http://www.google.cn/search?hl=zh-CN&q=VB+GZIP&meta=&aq=f

GOOGLE一下你就省了这20分了.

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧