Xpでようこそ画面中のカメラキャプチャー – プログラミング – Home

Xpでようこそ画面中のカメラキャプチャ...
 
通知
すべてクリア

[解決済] Xpでようこそ画面中のカメラキャプチャー


O-33Q
 O-33Q
(@O-33Q)
ゲスト
結合: 18年前
投稿: 5
Topic starter  

初めまして。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
);

//以下解放処理
//ファイルにセーブする
--------------------------------------------------------------
「ようこそ画面」の時は、セーブした画像が真っ黒になります。
何か対策、または出来ない理由を教えて頂けると幸いです。
長々と済みません。


引用未解決
トピックタグ
よすむら
 よすむら
(@よすむら)
ゲスト
結合: 19年前
投稿: 22
 

参考にならなければごめんなさい。
サービスで実装というのはどうでしょうか(API使用可否は別として)。
http://idsoft.skr.jp/software/otorinasai.html


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

> HWND hWndCap = capCreateCaptureWindow(・・・);

この関数が返すハンドルは何のウィンドウのハンドルですか?
また、ようこそ画面が出ているとき、この戻り値はどうなっていますか?


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

失礼、vfw の関数でしたか。自作関数かと思ってた。
ようこそ画面時の戻り値がどうなっているか調べてみてください。


返信引用
O-33Q
 O-33Q
(@O-33Q)
ゲスト
結合: 18年前
投稿: 5
Topic starter  

>よすむらさん
ありがとうございます。
自作のソフトにはソケットのルーチンも入れてありまして、ネットから呼ばれたCGI
(Perl製)との間で通信をしています。
(キャプチャーしたBMPデータをCGIでJPGに変換してWEBに返している)
この機能も個人的に重要なのでフリーソフトの使用は遠慮したいと思います。
ただ「ようこそ画面」のキャプチャーを行うことが出来る事実を知って、
不可能ではないことが分かりました。

>シャノンさん
ありがとうございます。
capCreateCaptureWindow の戻り値を利用して GetDC を行ってます。
この GetDC で作られたハンドルは「ようこそ画面」でも有効ですので、
capCreateCaptureWindow の戻り値も NULL ではないと思います。
GetDeviceCaps や GetClientRect も正常に動作しています。
(ファイルセーブされたBMPデータのヘッダーはきちんと値が入っている)
個人的には BitBlt が怪しいと睨んでいるのですが、ネットで探し切れていません。


返信引用
よすむら
 よすむら
(@よすむら)
ゲスト
結合: 19年前
投稿: 22
 

>この機能も個人的に重要なのでフリーソフトの使用は遠慮したいと思います。

私の言葉足らずでお伝えできなかったようですみません。
キャプチャPGそのものをWindowsのServiceとして実装したらいかがでしょうかと申し上
げたつもりでした。


返信引用
O-33Q
 O-33Q
(@O-33Q)
ゲスト
結合: 18年前
投稿: 5
Topic starter  

> よすむらさん
いえいえ、こちらこそ読解力がなくて済みません。
力量不足で、「サービスで実行する」が分からなかったものですから。
教えて頂きありがとうございます。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

>この機能も個人的に重要なのでフリーソフトの使用は遠慮したいと思います。
失際に使用しなくても仮に使ってみる価値はあると思いますが.......
実際に動いてるソフトを見ることによって自作のソフトの構想がまとまることもありま
す。


返信引用
O-33Q
 O-33Q
(@O-33Q)
ゲスト
結合: 18年前
投稿: 5
Topic starter  

> ITOさん
返事が遅くなりました。ありがとうございます。
私の求める内容は、表面上の動きを見て理解できるものとは思えません。
構想ではなくて、具体的な方法、または理由が知りたかったのです。
自作のプログラムを諦めて他のソフトで代用するのは、まだ諦めるに早い気持ちです。
とりあえず時間を掛けて答えを求めてみます。

このレスにお返事頂いた方、ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました