初めまして。O-33Qと申します。
Xp(SP2)で自宅サーバーを設けてカメラで定期的にキャプチャーしているのですが、
管理者ユーザーでログオンしている最中はキャプチャー出来るのですが、
「ようこそ画面」になっているときにキャプチャー画像がでません。
(裏ではキャプチャープログラムは稼働しています。)
定時刻にキャプチャー画像をファイリングしたり、ネットで外部から閲覧したりしてい
ます。
以前Win2000をサーバーにしていた時は問題なかったのですが。
キャプチャープログラムはVC6での自作で、主なところは下記の通りです。
--------------------------------------------------------------
HWND hWndCap = capCreateCaptureWindow(・・・);
↓
HDC hDCCap = ::GetDC(hWndCap);
HDC hDCMem = ::CreateCompatibleDC(hDCCap);
↓
int nPalCount = ::GetDeviceCaps(hDCCap, SIZEPALETTE);
↓
BITMAPFILEHEADER bmpFileHeader;
BITMAPINFO* pBmpInfo = (BITMAPINFO*)::GlobalAlloc(GMEM_FIXED, sizeof
(BITMAPINFOHEADER) + sizeof(RGBQUAD) * nPalCount);
//各変数はきちんと定義している
↓
HBITMAP hBMP = ::CreateDIBitmap(hDCCap, &pBmpInfo->bmiHeader, CBM_INIT, NULL,
pBmpInfo, DIB_RGB_COLORS);
HBITMAP hBMPOld = (HBITMAP)::SelectObject(hDCMem, hBMP);
HPALETTE hPal = ::CreatePalette(pPal);
HPALETTE hPalOld = (HPALETTE)::SelectPalette(hDCMem, hPal, FALSE);
::RealizePalette(hDCMem);
//cx, cyはクライアントサイズ
::BitBlt(hDCMem, 0, 0, cx, cy, hDCCap, 0, 0, SRCCOPY);
::SelectObject(hDCMem, hBMPOld);
::GetDIBits(
hDCMem,
hBMP,
0,
cy,
pBits,
pBmpInfo,
DIB_RGB_COLORS
);
//以下解放処理
//ファイルにセーブする
--------------------------------------------------------------
「ようこそ画面」の時は、セーブした画像が真っ黒になります。
何か対策、または出来ない理由を教えて頂けると幸いです。
長々と済みません。
参考にならなければごめんなさい。
サービスで実装というのはどうでしょうか(API使用可否は別として)。
http://idsoft.skr.jp/software/otorinasai.html
> HWND hWndCap = capCreateCaptureWindow(・・・);
この関数が返すハンドルは何のウィンドウのハンドルですか?
また、ようこそ画面が出ているとき、この戻り値はどうなっていますか?
失礼、vfw の関数でしたか。自作関数かと思ってた。
ようこそ画面時の戻り値がどうなっているか調べてみてください。
>よすむらさん
ありがとうございます。
自作のソフトにはソケットのルーチンも入れてありまして、ネットから呼ばれたCGI
(Perl製)との間で通信をしています。
(キャプチャーしたBMPデータをCGIでJPGに変換してWEBに返している)
この機能も個人的に重要なのでフリーソフトの使用は遠慮したいと思います。
ただ「ようこそ画面」のキャプチャーを行うことが出来る事実を知って、
不可能ではないことが分かりました。
>シャノンさん
ありがとうございます。
capCreateCaptureWindow の戻り値を利用して GetDC を行ってます。
この GetDC で作られたハンドルは「ようこそ画面」でも有効ですので、
capCreateCaptureWindow の戻り値も NULL ではないと思います。
GetDeviceCaps や GetClientRect も正常に動作しています。
(ファイルセーブされたBMPデータのヘッダーはきちんと値が入っている)
個人的には BitBlt が怪しいと睨んでいるのですが、ネットで探し切れていません。
>この機能も個人的に重要なのでフリーソフトの使用は遠慮したいと思います。
私の言葉足らずでお伝えできなかったようですみません。
キャプチャPGそのものをWindowsのServiceとして実装したらいかがでしょうかと申し上
げたつもりでした。
> よすむらさん
いえいえ、こちらこそ読解力がなくて済みません。
力量不足で、「サービスで実行する」が分からなかったものですから。
教えて頂きありがとうございます。
>この機能も個人的に重要なのでフリーソフトの使用は遠慮したいと思います。
失際に使用しなくても仮に使ってみる価値はあると思いますが.......
実際に動いてるソフトを見ることによって自作のソフトの構想がまとまることもありま
す。
> ITOさん
返事が遅くなりました。ありがとうございます。
私の求める内容は、表面上の動きを見て理解できるものとは思えません。
構想ではなくて、具体的な方法、または理由が知りたかったのです。
自作のプログラムを諦めて他のソフトで代用するのは、まだ諦めるに早い気持ちです。
とりあえず時間を掛けて答えを求めてみます。
このレスにお返事頂いた方、ありがとうございました。