プロが教える店舗&オフィスのセキュリティ対策術

お世話になります、fujicafeです。
CE6.0で動かしている組み込みマシンのマニュアルを作成するためにスクリーンキャプチャをしたいと思っているのですが、通常のPCのようなPrintScreenが出来ず、インターネットでもいろいろとフリーソフトを検索したのですが、どうもソフトが古いらしくOSのヴァージョンに対応していないためか、うまく動作出来ません。
CE6.0でスクリーンキャプチャする方法や、それができるソフトをご存じの方がいらっしゃいましたら、教えて頂きたいです。
よろしくお願いいたします。

A 回答 (1件)

 こんばんは。



・CE6.0でスクリーンキャプチャする方法
 以下を参照にwin32apiの種類をwindows CEの範囲内に留めていますが、此れで出来ませんか。
 http://msdn.microsoft.com/en-us/library/aa132474 …

#include<windows.h>
#include<stdio.h>

//DIBのセーブ
static bool Save(LPCTSTR pszFileName, HBITMAP hDIB)
{
//ファイルを開く
FILE* pf = ::fopen(pszFileName, TEXT("wb"));
if(pf == NULL)
return false;

//DIBから情報を取る
DIBSECTION dib = {0};
::GetObject(hDIB, sizeof(dib), &dib);

//ファイルヘッダ部の設定
BITMAPFILEHEADER bmfh = {0};
bmfh.bfType = 'B' | ('M' << 8);
bmfh.bfOffBits = sizeof(bmfh) + sizeof(dib.dsBmih);
bmfh.bfSize = bmfh.bfOffBits + dib.dsBmih.biSizeImage;

//ファイルヘッダ部を書き出す
::fwrite(&bmfh, sizeof(bmfh), 1, pf);

//DIB情報を書き出す
::fwrite(&dib.dsBmih, sizeof(dib.dsBmih), 1, pf);

//ビットイメージを書き出す
::fwrite(dib.dsBm.bmBits, dib.dsBmih.biSizeImage, 1, pf);

//ファイルを閉じる
::fclose(pf);

return true;
}

//24BIT DIBの作成
static HBITMAP CreateDIB(HDC hDC, DWORD dwWidth, DWORD dwHeight)
{
BITMAPINFOHEADER bmih = {sizeof(bmih)};
bmih.biPlanes = 1;
bmih.biBitCount = 24;
bmih.biCompression = BI_RGB;
bmih.biWidth = dwWidth;
bmih.biHeight= dwHeight;

LPVOID pvBits = NULL;
return ::CreateDIBSection(hDC, (LPBITMAPINFO)&bmih, DIB_RGB_COLORS, &pvBits, NULL, 0);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
//デスクトップのデバイスコンテキストを取る
HDC hDCScreen = ::GetDC(NULL);
const DWORD dwWidth = ::GetDeviceCaps(hDCScreen, HORZRES);
const DWORD dwHeight= ::GetDeviceCaps(hDCScreen, VERTRES);
const DWORD dwBPP = ::GetDeviceCaps(hDCScreen, BITSPIXEL);

//デスクトップの大きさを元にDIBを作成する
HBITMAP hDIB = ::CreateDIB(hDCScreen, dwWidth, dwHeight);
HDC hDCDIB = ::CreateCompatibleDC(hDCScreen);
::SelectObject(hDCDIB, hDIB);

//DIBにデスクトップを複写する
::BitBlt(hDCDIB, 0, 0, dwWidth, dwHeight, hDCScreen, 0, 0, SRCCOPY);
::ReleaseDC(NULL, hDCScreen);
::DeleteDC(hDCDIB);

//DIBをファイルにする
if(!::Save(TEXT("screenshot.bmp"), hDIB))
{
//失敗
}

//DIBの解放
::DeleteObject(hDIB);
return 0;
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!