21 10月

gui4reces Ver.0.0.1.6公開

ウインドウにドラッグ&ドロップするだけで、
様々な書庫の「再圧縮」「圧縮」「解凍」「内容一覧表示」「検査」「内容削除」を行うgui4reces Ver.0.0.1.6を公開しました。

○Ver.0.0.1.6 – 2015/10/21
・reces Ver.0.00r30に対応。
・「その他」タブ「文字コード」の「自動選択」を「指定しない」に変更。
・「再圧縮/圧縮」タブ「書庫作成」に「拡張子を保持」を追加。
・マルチスレッド(/MT)でビルドするように。

x64版では、今回より対応した「7z.dll対応版7-zip32.dll/7-zip64.dll」のインストールをお勧めします。
また、/MTでビルドしたため、Visual Studio 2015 の Visual C++ 再頒布可能パッケージのインストールが不要となりました。

gui4reces0016ss

21 10月

reces Ver.0.00r30公開

コマンドプロンプト上で「再圧縮」「圧縮」「解凍」「内容一覧表示」「書庫検査」「書庫内ファイル削除」を行うreces Ver.0.00r30を公開しました。

○Ver.0.00r30 – 2015/10/21
・一部環境でフリーズする不具合を修正。(Special Thanks!:kiyohiro様)
・圧縮時拡張子を保持する「/ooke」を実装。
・ライブラリの優先順位について、「7-zip32.dll」を「UnIso32.dll」より優先するように。
・7-zip32.dll/7-zip64.dll文字化け対策版 Ver.15.09.00.01 betaに更新。
・7z.dll対応版7-zip32.dll/7-zip64.dllに対応。
・マルチスレッド(/MT)でビルドするように。

一部環境では、_tsetlocale(LC_ALL,_tsetlocale(LC_CTYPE,_T(“”)))でフリーズしてしまうようです。
現在のrecesでは不要な処理のため、コメントアウトしました。
又、7z.dll対応版7-zip32.dll/7-zip64.dllに対応しました!
これで対応書庫が増えたね!!
又々、/MTでビルドしたため、Visual Studio 2015 の Visual C++ 再頒布可能パッケージのインストールが不要となりました。

reces000r30ss

21 10月

7-zip32.dll/7-zip64.dll/7z.dll文字化け対策版 Ver.15.09.00.01 beta公開

7-zip32.dll/7-zip64.dll/7z.dll文字化け対策版 Ver.15.09.00.01 betaを公開しました。

○Ver.15.09.00.01 beta – 2015/10/21
・7-Zip 15.09 betaをベースにビルド。
・SevenZipSetCP(),SevenZipGetCP()を追加し、SevenZipSetUnicodeMode()でのコードページ指定を廃止。
・7z.dll対応版「7-zip32.dll」「7-zip64.dll」について、SevenZipExists7zdll()を追加し、通常版と7z.dll対応版の判別、及び7z.dllの存在を確認出来るように。

SevenZipSetUnicodeMode()で行っていたコードページの指定は廃止し、かわりにSevenZipSetCP()での指定となりました。
また、7z.dll対応版のみSevenZipExists7zdll()を追加しました。

15 10月

7-zip32.dll/7-zip64.dll/7z.dll文字化け対策版 Ver.15.08.00.02 beta公開

7-zip32.dll/7-zip64.dll/7z.dll文字化け対策版 Ver.15.08.00.02 betaを公開しました。

○Ver.15.08.00.02 beta – 2015/10/15
・余計なSFXモジュールを誤って内蔵していたのを修正。
・7z.dll対応版「7-zip32.dll」「7-zip64.dll」追加。
・32bit版ライブラリについてはコンパイラをMicrosoft Visual C++ 2010に変更。

オリジナルの「7-zip32.dll」は「7za.exe」をベースとしているため、対応書庫は7zやZip等々に限定されています。
7-zip32.dllでCabやRar、Nsisなんかも解凍出来たらなぁ…

とそんな訳で「7z.exe」ベースの「7-zip32.dll」を作ってみました。(と言っても特にコードの変更はしていません^q^)
もちろん「7z.dll」依存ですので、公式インストーラでインストールを忘れずに!
#インストーラを使用しない場合は7-zip32.dllと同じ階層に7z.dllと愉快な仲間たちを配置してください。

これで本家7-Zipで対応している形式すべてを扱える…はずです。(以下公式日本語サイトより引用)

  • 圧縮/解凍(展開): 7z, XZ, BZIP2, GZIP, TAR, ZIP, WIM
  • 解凍(展開)のみ: AR, ARJ, CAB, CHM, CPIO, CramFS, DMG, EXT, FAT, GPT, HFS, IHEX, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, QCOW2, RAR, RPM, SquashFS, UDF, UEFI, VDI, VHD, VMDK, WIM, XAR, Z

以下は7z.dll対応版7-zip32.dllでRar書庫を閲覧中の図

ただし、7-zip32.dllを使用するソフトウェアが拡張子でライブラリを判定している場合、
オリジナルと同じく7zやzipしか処理できませんのでご注意くださいませ。

7 10月

TimeStamp Keeper Ver.1.01公開

ファイルのタイムスタンプを記憶し、変更後もワンクリックで元に戻すTimeStamp Keeper Ver.1.01を公開しました。

○Ver.1.01 – 2015/10/07
・起動済みプロセスがなくとも、Ctrlキー押下で最小化起動するように。
・ファイル名、更新日時の編集ができるように。
・エラーダイアログを表示しないように。

F2キーや「編集」ボタンから、ファイル名や更新日時を編集することができるようになりました。

DateTimePickerにミリ秒を直接表示するがフォーマットがないため、コールバックで文字列を制御する’XXX’を用い、WM_NOTIFY内でDTN_FORMATQUERY,DTN_FORMAT,DTN_WMKEYDOWNを処理しました。

				case DTN_FORMATQUERY:{
					HDC hDC=GetDC(handle());
					HFONT hFont=(HFONT)GetStockObject(DEFAULT_GUI_FONT);
					HFONT hOldFont=(HFONT)SelectObject(hDC,hFont);

					if(lstrcmp(_T("XXX"),((LPNMDATETIMEFORMATQUERY)lparam)->pszFormat)==0){
						GetTextExtentPoint32(hDC,
											 _T("999"),
											 3,
											 &((LPNMDATETIMEFORMATQUERY)lparam)->szMax);
					}
					SelectObject(hDC,hOldFont);
					ReleaseDC(handle(),hDC);
					break;
				}

				case DTN_FORMAT:{
					wsprintf(const_cast<LPTSTR>(((LPNMDATETIMEFORMAT)lparam)->pszDisplay),
							 _T("%03d"),
							 m_wMilliseconds);
					break;
				}

				case DTN_WMKEYDOWN:{
					if(((LPNMDATETIMEWMKEYDOWN)lparam)->nVirtKey==VK_DOWN){
						if(m_wMilliseconds==0){
							m_wMilliseconds=999;
						}else{
							m_wMilliseconds--;
						}
					}else if(((LPNMDATETIMEWMKEYDOWN)lparam)->nVirtKey==VK_UP){
						if(m_wMilliseconds>=999){
							m_wMilliseconds=0;
						}else{
							m_wMilliseconds++;
						}
					}else if(((LPNMDATETIMEWMKEYDOWN)lparam)->nVirtKey>='0'&&
							 ((LPNMDATETIMEWMKEYDOWN)lparam)->nVirtKey<='9'){
						TCHAR szMilliseconds[4]={};
						wsprintf(szMilliseconds,_T("%d"),m_wMilliseconds);

						//入力された数字
						TCHAR szNum[2]={((LPNMDATETIMEWMKEYDOWN)lparam)->nVirtKey};

						if(lstrlen(szMilliseconds)==3){
							//3桁なら文字列をクリアし新たに数字を追加
							m_wMilliseconds=_ttoi(szNum);
						}else{
							//3桁未満なら現在の文字列に数字を追加
							lstrcat(szMilliseconds,szNum);
							m_wMilliseconds=_ttoi(szMilliseconds);
						}
					}
					InvalidateRect(getDlgItem(IDC_DATETIMEPICKER_FILE),NULL,TRUE);
					break;
				}
				default:
					break;
			}
広告