|
// DCSavetoJPEG用
typedef WORD (__stdcall *LPFUNC_2)
(
HDC hDc,
long nWidth,
long nHeight,
LPCTSTR jpgf,
BYTE Value,
short Prgrs
);
STDMETHODIMP CMyAPI::SaveDesktoptoJPEG(
BSTR jpgf,
short Value,
BOOL Prgrs,
short *pVal
)
{
HINSTANCE lib;
// *******************************************
// DLL ロード
// *******************************************
lib = LoadLibrary( TARGET_DLL );
if ( lib == NULL ) {
*pVal = -1;
return S_OK;
}
LPFUNC_2 DCSavetoJPEG;
// *******************************************
// 関数アドレスのロード
// *******************************************
DCSavetoJPEG = (LPFUNC_2)GetProcAddress( lib, "DCSavetoJPEG" );
if ( DCSavetoJPEG == NULL ) {
FreeLibrary( lib );
*pVal = -2;
return S_OK;
}
// *******************************************
// 実行
// *******************************************
WORD wRet;
_bstr_t Jpeg(jpgf);
BYTE nRate;
nRate = (BYTE)Value;
HWND hWnd;
hWnd = GetDesktopWindow(); // デスクトップのウインドウハンドル
RECT rt;
GetWindowRect( hWnd, &rt ); // デスクトップのサイズ
HDC hDc;
hDc = GetDC( hWnd ); // デスクトップのデバイスコンテキスト
wRet = DCSavetoJPEG(
hDc,
rt.right,
rt.bottom,
(LPTSTR)Jpeg,
nRate,
Prgrs
);
ReleaseDC( hWnd, hDc );
// *******************************************
// DLL 解放
// *******************************************
FreeLibrary( lib );
*pVal = (short)wRet;
return S_OK;
}
| |