明熊JPEG保存DLLを COM 化する


  デスクトップを JPEG ファイルに保存する



MyCom.idl
  
[id(5), helpstring("メソッド SaveDesktoptoJPEG")] HRESULT SaveDesktoptoJPEG(
	[in] BSTR jpgf,
	[in] short Value,
	[in] BOOL Prgrs,
	[out,retval] short *pVal
);
  

MyAPI.h
  
STDMETHOD(SaveDesktoptoJPEG)(
	BSTR jpgf,
	short Value,
	BOOL Prgrs,
	short *pVal
);
  

MyAPI.cpp
  
// 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;
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ