ローカル PHP でバイナリファイル分割 + α( DynamicWrapper )

これでけでは役に立ちませんが、少し改造してサーバー側に置いて
ファイルの部分を返すようにすれば、ローカルでは VBS のみで
http 経由のファイルのダウンロードができるようになります

関連ページ(http な小さなファイル)
<?

	$size = filesize($argv[1]) + 0;
	$part = array();

	for( $i = 0; $i < ($argv[2]+0)-1; $i++ ) {
		$part[] = floor($size / ($argv[2]+0));
	}

	$part[] = $size - ($part[0] * ($argv[2]-1));

	$fp = fopen( $argv[1], 'rb' );

	for( $i = 0; $i < ($argv[2]+0); $i++ ) {
		$buff = fread( $fp, $part[$i] );
		$filename = sprintf( "%s.%03d", $argv[1], $i+1 );
		$fp2 = fopen( $filename, 'wb' );
		fwrite( $fp2, $buff );
		fclose( $fp2 );
	}

	fclose( $fp );

?>
で、この内容はすぐ終わり、コマンドプロンプトな PHP という方向性で (2010/04/24:リンク切れ) で
ずっと遊んでたのですが、一応簡単な API は問題無く動き、unlha32.dll も解凍でき、
喜んだのは一瞬だけで、どうしてもメッセージが戻って来ないんですよねぇ・・・

( ※そこだけで2時間はやってたと思う )


そもそも、PHP の w32apiffi に変わって結局今の php で使え無いというところまで確認して
DynamicWrapper にたどり着いて、結局まあ収穫ではありましたが大手を振って PHP から 
Windows API では無いわけです。

でも、最後の手段的な道具としては使えると言えば使えます。
ただ、Framework で API 動的Call して COM で公開して COM で使えば確実なので、
その手間が惜しい時のみです。
Set Fso = CreateObject( "Scripting.FileSystemObject" )

strCurPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strCurPath )
Set obj = obj.ParentFolder
strCurPath = obj.Path

target = strCurPath & "\test.lzh"

Set UserWrap = CreateObject("DynamicWrapper")

UserWrap.Register "Unlha32.dll", "Unlha", "i=hsrl", "f=s", "r=l"
ret = String(128, chr(0))
UserWrap.UnlhaA Null, "x -p2 " & target & " " & strCurPath & "\melt\", ret, 127 

Set UserWrap = Nothing