|
typedef UINT (CALLBACK* LPFUNC)(
const HWND _hwnd,
LPCSTR _szCmdLine,
LPSTR _szOutput,
const DWORD _dwSize
);
//************************************************************
// UNLHA32.DLL の呼び出し
//************************************************************
STDMETHODIMP CLoadlib::Unlha(BSTR CmdLine, BSTR *pVal)
{
HINSTANCE lib;
LPFUNC Lha;
lib = LoadLibrary( "UNLHA32.DLL" );
if ( lib == NULL ) {
*pVal = A2BSTR("error unlha32.dll LoadLibrary");
return S_OK;
}
Lha = (LPFUNC)GetProcAddress( lib, "Unlha" );
if ( Lha == NULL ) {
FreeLibrary( lib );
*pVal = A2BSTR("error unlha32.dll GetProcAddress");
return S_OK;
}
USES_CONVERSION;
LPCSTR szCmdLine = OLE2T(CmdLine);
char *ret = new char[4096];
Lha(NULL, szCmdLine, ret, 4096 );
FreeLibrary( lib );
*pVal = A2BSTR( ret );
delete [] ret;
return S_OK;
}
| |