贴出GZip.dll里面API声明,欢迎大虾们一起看看,顺便散分
翻箱倒柜,在这里找到
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
c#和vb.net的声明我就不贴了,调试后发现在c#和vb.net中都能正常压缩解压缩长度<N的字符串,更长的都被截断了~ 要看代码的请跟贴,呵呵
VB里面我这样声明的
Public Declare Function InitDecompression Lib "c:\\windows\\system32\\inetsrv\\gzip.dll" () As Long
Public Declare Function InitCompression Lib "c:\\windows\\system32\\inetsrv\\gzip.dll" () As Long
Public Declare Function CreateDecompression Lib "c:\\windows\\system32\\inetsrv\\gzip.dll" (ByRef context As Long, ByVal flags As Long) As Long
Public Declare Function CreateCompression Lib "c:\\windows\\system32\\inetsrv\\gzip.dll" (ByRef context As Long, ByVal flags As Long) As Long
Public Declare Function ResetDecompression Lib "c:\\windows\\system32\\inetsrv\\gzip.dll" (ByVal context As Long) As Long
Public Declare Function ResetCompression Lib "c:\\windows\\system32\\inetsrv\\gzip.dll" (ByVal context As Long) As Long
Public Declare Function DestroyDecompression Lib "c:\\windows\\system32\\inetsrv\\gzip.dll" (ByRef context As Long) As Long
Public Declare Function DestroyCompression Lib "c:\\windows\\system32\\inetsrv\\gzip.dll" (ByRef context As Long) As Long
Public Declare Function Decompress Lib "c:\\windows\\system32\\inetsrv\\gzip.dll" (ByVal context As Long, ByVal inBytes As Long, ByVal input_size As Long, ByVal outBytes As Long, ByVal output_size As Long, ByVal input_used As Long, ByVal output_used As Long) As Long
Public Declare Function Compress Lib "c:\\windows\\system32\\inetsrv\\gzip.dll" (ByVal context As Long, ByVal inBytes As Long, ByVal input_size As Long, ByVal outBytes As Long, ByVal output_size As Long, ByRef input_used As Long, ByRef output_used As Long, ByVal compressionLevel As Long) As Long
到现在还没调试出来过,一个字符都没有,呵呵
大虾们一起讨论讨论,尤其是Compress 和Decompress 这两函数
欢迎接分~~~!!!!
[解决办法]
我也先占楼
[解决办法]
首先,VB字符串中字符“\”不是转义符,所以声明路径中不需要用双斜杠“\\”。
[解决办法]
貌似我的正版HOME版XP中没有GZIP.DLL这个文件
[解决办法]
最好贴出C的声明,也比较容易转化
[解决办法]
看看........
然后接分.....
^_^
[解决办法]
GZip.dll原来是字符串解/压缩函数!
顶!!
[解决办法]
接分
[解决办法]
很不错 谢谢 顶
[解决办法]
我的专业版的没有。
安装的是IIS5
标下。。
顶下。。
分。。顺便接下。。
[解决办法]
学习。
- VBScript code
Option Explicit Public WithEvents owinhttp As WinHttp.WinHttpRequestPublic Function StartWork() As Boolean Dim FileNo As Integer With owinhttp .SetRequestHeader "accept-encoding", "gzip,deflate" Call .Open("GET", "http://www.sina.com.cn/", True) ' True 异步 ; False 同步 .Option(WinHttpRequestOption_UserAgentString) = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" .SetRequestHeader "accept", "*/*" .SetRequestHeader "accept-language", "en-us" .SetRequestHeader "accept-encoding", "gzip,deflate" .SetRequestHeader "connection", "Keep-Alive" .SetRequestHeader "cache-control", "no-cache" .SetTimeouts 90000, 15000, 80000, 90000 owinhttp.Send Do While Not .WaitForResponse(1) DoEvents Loop Dim strContent As String .ResponseText '怎么解压缩 StartWork = TrueEnd Function
[解决办法]
我解决了问题(整个数组解压缩的,压缩的同样,没有调试),代码如下:
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
[解决办法]
进来学习!!!感谢大家提供多么宝贵的知识!!
[解决办法]
伟红,哈哈,好久不见
还好在没结贴前赶上了
