<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; HTA: вычисление CRC32 строки или файла]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=3827</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=3827&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «HTA: вычисление CRC32 строки или файла».]]></description>
		<lastBuildDate>Sat, 06 Nov 2021 20:25:51 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: HTA: вычисление CRC32 строки или файла]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=150515#p150515</link>
			<description><![CDATA[<p><em>Без гарантий. Используете на свой страх и риск.</em></p><p>Подсчет CRC32 файла на VBScript. Для запуска нужно перетащить значок файла на значок скрипта.</p><p>Потребуется зарегистрированная библиотека <a href="http://forum.script-coding.com/viewtopic.php?id=8082">scrsvc.dll</a> </p><p>Win7 x32</p><p><strong>VBScript:</strong><br /></p><div class="codebox"><pre><code>
Option Explicit

Const FILE_READ_ATTRIBUTES = &amp;H80
Const FILE_READ_DATA = 1
Const OPEN_EXISTING = 3
Const FILE_ATTRIBUTE_READONLY = 1
Const FILE_ATTRIBUTE_NORMAL = &amp;H80

Const BUF_SIZE = 65536

&#039;---------------------------------------------------------------------------------
Dim oScrSvc
Dim oArgs
Dim sFilePath, sFileName
Dim hFile, lSize
Dim chunk, div
Dim crc
Dim buf, lRet
Dim ptr, plRet
Dim SZ
Dim u
Dim hRes

&#039;---------------------------------------------------------------------------------
Set oScrSvc = CreateObject(&quot;ScriptService.Service&quot;)

Set oArgs = WScript.Arguments
If oArgs.Length = 0 Then WScript.Quit()

sFilePath = CStr(oArgs.Item(0))
sFileName = Right(sFilePath,Len(sFilePath)-InStrRev(sFilePath,&quot;\&quot;))
&#039;/sFolderPath = Left(sFilePath,InStrRev(sFilePath,&quot;\&quot;))


&#039;/Открыть файл только для чтения/
&#039;---------------------------------------------------------------------------------
With oScrSvc
	.set_strarg 0, sFilePath, False
	.set_vararg 1, FILE_READ_DATA + FILE_READ_ATTRIBUTES
	.set_vararg 2, 0	&#039;share mode
	.set_vararg 3, 0	&#039;security attributes
	.set_vararg 4, OPEN_EXISTING
	.set_vararg 5, FILE_ATTRIBUTE_READONLY
	.set_vararg 6, 0
	hFile = .api_call (&quot;KERNEL32.DLL&quot;,&quot;CreateFileA&quot;,7)

	.set_vararg 0, hFile
	.set_vararg 1, 0
	lSize = .api_call (&quot;KERNEL32.DLL&quot;,&quot;GetFileSize&quot;,2)
End With

&#039;/Подсчет CRC32/
&#039;---------------------------------------------------------------------------------
chunk = lSize Mod BUF_SIZE
div = (lSize - chunk)/BUF_SIZE
crc = 0
SZ = BUF_SIZE

buf = String(SZ/2,Chr(32))
ptr = oScrSvc.struct_setval(buf)

lRet = String(2,Chr(32))
plRet = oScrSvc.struct_setval(lRet)


For u=0 To div
	If u=div Then SZ=chunk
	With oScrSvc
		.set_vararg 0, hFile
		.set_vararg 1, ptr
		.set_vararg 2, SZ
		.set_vararg 3, plRet
		.set_vararg 4, 0
		hRes = .api_call (&quot;KERNEL32.DLL&quot;,&quot;ReadFile&quot;,5, 1)

		.set_vararg 0, crc
		.set_vararg 1, ptr
		.set_vararg 2, SZ
		crc = .api_call (&quot;NTDLL.DLL&quot;,&quot;RtlComputeCrc32&quot;,3, 2)
	End With
Next

&#039;---------------------------------------------------------------------------------
oScrSvc.set_vararg 0, hFile
hRes = oScrSvc.api_call (&quot;KERNEL32.DLL&quot;,&quot;CloseHandle&quot;,1)

&#039;---------------------------------------------------------------------------------
MsgBox &quot;Файл: &quot; &amp; sFileName &amp; vbCRLF &amp; &quot;Размер(bytes): &quot; &amp; lSize &amp; vbCRLF &amp; &quot;CRC32: &quot; &amp; Hex(crc),vbSystemModal + vbInformation	
WScript.Quit()
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Poltergeyst)]]></author>
			<pubDate>Sat, 06 Nov 2021 20:25:51 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=150515#p150515</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA: вычисление CRC32 строки или файла]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=34364#p34364</link>
			<description><![CDATA[<p>Последняя версия находится <a href="https://bitbucket.org/html-applications/crc32-calculator/src">тут</a></p>]]></description>
			<author><![CDATA[null@example.com (mozers)]]></author>
			<pubDate>Sat, 03 Apr 2010 12:39:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=34364#p34364</guid>
		</item>
		<item>
			<title><![CDATA[HTA: вычисление CRC32 строки или файла]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=29965#p29965</link>
			<description><![CDATA[<div class="codebox"><pre><code>&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=content-type content=&quot;text-html; charset=windows-1251&quot;&gt;
&lt;meta http-equiv=MSThemeCompatible content=yes&gt;
&lt;hta:application
    id=HTAApp
    applicationName=CRC32_Calculator
    icon=keymgr.dll
    maximizeButton=no
    innerBorder=no
    scroll=no
    selection=no
    contextMenu=no
    singleinstance=yes
    version=1.0
    author=mozers™
    email=mozers@mail.ru
    icq=256106175
&gt;
&lt;style type=&quot;text/css&quot;&gt;
    body, table {background-color:threedface; overflow:hidden; margin:2px;}
    body, input, table, legend {font-family:MS Sans Serif; font-size:6pt;}
    legend, label {color:highlight;}
    legend {font-weight:bold;}
&lt;/style&gt;
&lt;script language=&quot;VBScript&quot;&gt;
    Function vbASCII(s)
        vbASCII = Asc(s)
    End Function
    Function vbHex(i)
        vbHex = Hex(i)
    End Function
&lt;/script&gt;
&lt;script language=&quot;JavaScript&quot; type=&quot;text/javascript&quot;&gt;
    window.resizeTo(400, 128);
    document.title = HTAApp.applicationName.replace(/_/g,&#039; &#039;) + &#039; v.&#039; + HTAApp.version;

    var crcTable = [];
    function crcTableCalc() {
        for(var i=0; i&lt;256; i++){
            var c = i;
            for(var j=0; j&lt;8; j++) c=(c&amp;1) ? 0xEDB88320^(c&gt;&gt;&gt;1) : c&gt;&gt;&gt;1;
            crcTable[i] = c;
        }
    }

    function crc32 (str) {
        var c = 0xFFFFFFFF;
        for(var i=0; i&lt;str.length; i++) c=crcTable[(c^vbASCII(str.charAt(i)))&amp;0xFF]^(c&gt;&gt;&gt;8);
        return c^0xFFFFFFFF;
    }

    function ReadBinaryFile(filename) {
        var Stream = new ActiveXObject(&quot;ADODB.Stream&quot;);
        with (Stream) {
            type=2;
            charset=&#039;ISO-8859-1&#039;;
            open();
            loadFromFile(filename);
            var content=readText();
            close();
        }
        return content;
    }

    function GetCRCfile(){
        var fname = iFile.value;
        var bin_str=ReadBinaryFile(fname);
        var result = crc32(bin_str);
        iDec.value = result;
        iHex.value = vbHex(result);
    }

    function GetCRCtext(){
        var str=iText.value;
        var result = crc32(str);
        iDec.value = result;
        iHex.value = vbHex(result);
    }

    crcTableCalc();
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;table style=&quot;width:100%;&quot; cellpadding=&quot;0&quot; cellspacing=&quot;2&quot;&gt;
    &lt;tr&gt;&lt;td&gt;Text:
        &lt;td style=&quot;width:100%;&quot;&gt;&lt;input id=&quot;iText&quot; style=&quot;width:100%;&quot; type=&quot;text&quot;&gt;
        &lt;td&gt;&lt;input type=button onClick=&quot;GetCRCtext()&quot; value=&quot;Calculate&quot; hidefocus&gt;
    &lt;tr&gt;&lt;td&gt;File:
        &lt;td style=&quot;width:100%;&quot;&gt;&lt;input id=&quot;iFile&quot; style=&quot;width:100%;&quot; type=&quot;file&quot;&gt;
        &lt;td&gt;&lt;input type=button onClick=&quot;GetCRCfile()&quot; value=&quot;Calculate&quot; hidefocus&gt;
    &lt;tr&gt;
        &lt;td colspan=&quot;3&quot;&gt;
        &lt;fieldset&gt;&lt;legend&gt;&amp;nbsp;CRC32&amp;nbsp;&lt;/legend&gt;
            DEC:&amp;nbsp;&lt;input id=&quot;iDec&quot; style=&quot;width:150px;&quot; type=&quot;text&quot;&gt;
            &amp;nbsp;&amp;nbsp;&amp;nbsp;
            HEX:&amp;nbsp;&lt;input id=&quot;iHex&quot; style=&quot;width:150px;&quot; type=&quot;text&quot;&gt;
        &lt;/fieldset&gt;
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre></div><p>Автор идеи — <strong>mozers</strong>.</p><p><em>Основано на: <a href="http://koders.com/javascript/fidF77068FD57D54F4EB6ABF0387572446FE06F96F5.aspx?s=CRC32">Koders Code Search: crc32.js - JavaScript</a></em></p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Sat, 31 Oct 2009 15:25:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=29965#p29965</guid>
		</item>
	</channel>
</rss>
