|
|
コマンド書式は次のようなものとなります。
[<command>] [[-<switch>[+|-|0|1|2]]...] <archive_file_name>[.LZH]
[[<base_directory_name>\] [<path_name>|<wild_name>]...]]...
| |
|
|
|
|
typedef UINT (CALLBACK* LPFUNC)(const HWND _hwnd, LPCSTR _szCmdLine,LPSTR _szOutput, const DWORD _dwSize);
// ******************************************************************
// UNLHA32.DLL の呼び出し
// ******************************************************************
void
Unlha( HWND hWnd, char *CmdLine )
{
HINSTANCE lib;
LPFUNC Lha;
lib = LoadLibrary( "UNLHA32.DLL" );
if ( lib == NULL ) {
MessageBox( hWnd, "UNLHA32.DLLのロードに失敗しました", "MyMEMO", MB_OK );
return;
}
Lha = (LPFUNC)GetProcAddress( lib, "Unlha" );
if ( Lha == NULL ) {
FreeLibrary( lib );
MessageBox( hWnd, "Unlha のアドレスの取得に失敗しました", "MyMEMO", MB_OK );
return;
}
char *ret = new char[4096];
Lha(NULL, CmdLine, ret, 4096 );
FreeLibrary( lib );
delete [] ret;
}
| |
|
|
|
|
void Unlha( HWND hWnd, char *CmdLine );
| |
|
|
|
|
case IDM_FREEZE:
if ( buffer[0] == 0x00 ) {
MessageBox(hWnd,"ファイル名が指定されていません","MyMEMO", MB_OK );
return 0;
}
break;
| |
|
|
|
|
実装
case IDM_FREEZE:
if ( buffer[0] == 0x00 ) {
MessageBox(hWnd,"ファイル名が指定されていません","MyMEMO", MB_OK );
return 0;
}
bi.hwndOwner = hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = DisplayName;
bi.lpszTitle = "カレントファイルの圧縮先";
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
lpi = SHBrowseForFolder( &bi );
break;
| |
|
|
|
|
case IDM_FREEZE:
if ( buffer[0] == 0x00 ) {
MessageBox(hWnd,"ファイル名が指定されていません","MyMEMO", MB_OK );
return 0;
}
bi.hwndOwner = hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = DisplayName;
bi.lpszTitle = "カレントファイルの圧縮先";
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
lpi = SHBrowseForFolder( &bi );
if ( lpi != NULL ) {
SHGetPathFromIDList( lpi, DisplayName );
char *ptr;
ptr = strrchr( buffer, '\\' );
lstrcpy( work, ptr+1 );
ptr = strrchr( work, '.' );
*ptr = 0x00;
sprintf( CmdBuffer, "u %s \"%s\\\" \"%s\"", work, DisplayName, buffer );
Unlha( hWnd, CmdBuffer );
}
break;
| |
|
|
|