C++で7-zip32.dllを使用して圧縮処理を行っています。
SevenZipSetOwnerWindowEx64を実行してコールバック関数を設定後、SevenZipの更新モードで圧縮をしています。
圧縮先にアーカイブが存在しない場合、OPEN->BEGIN->INPROCESS->ENDという流れで関数が呼ばれるため、経過表示も可能ですし途中のキャンセルもできる事までは確認できています。
ですが、圧縮元と圧縮先のファイルが同じ場合圧縮が実行されないためかOPEN->ENDのみ通知され、ファイルサイズが大きいとOPENが来てから数十秒後にENDが来るため途中でキャンセルすることもできません。
恐らく更新が必要なファイルを探すことに時間を要しているのだと思うのですが、こういったケースでもキャンセルすることが可能な使用方法があるのでしょうか。
更新日時のみで判断している割にファイルサイズによってOPEN->ENDまでの時間が左右する点も気になっております。
宜しくお願い致します。
7-zip32.dllバージョン:9.22.0.2
指定しているオプション:u -up1q0r2x1y2z1w2 -hide -tzip
あなたの回答
tips
プレビュー