0

こんにちは、メッセージ アプリケーションを作成していますが、アプリがウェブカメラから写真を取得するとすぐに、カメラを選択するためのウィンドウが表示され、カメラが 1 つしかインストールされていないことがわかります。

[DllImport("user32", EntryPoint = "SendMessage")]
static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);
[DllImport("avicap32.dll", EntryPoint = "capCreateCaptureWindowA")]
static extern int capCreateCaptureWindowA(string lpszWindowName, int dwStyle,
    int X, int Y, int nWidth, int nHeight, int hwndParent, int nID);
const int WM_CAP_CONNECT = 1034;
const int WM_CAP_DISCONNECT = 1035;
const int WM_CAP_COPY = 1054;
const int WM_CAP_GET_FRAME = 1084;

このAPIはサービスアプリケーションを使用してWindows XPで動作するため、アプリケーションとパイプ通信して画像をバイト単位で転送するサービスアプリを作成しましたが、Windows XPでのみ動作することに注意してください

このウィンドウなしでウェブカメラの画像をキャプチャするにはどうすればよいですか Windows Vista でいくつかの API を使用しています,7,8

ありがとう、B.

4

1 に答える 1

0

あなたが参照している API ( Video for Windows ) は、ウィンドウなしで動作することは想定されていません。ただし、ウィンドウを表示する必要はなく、作業領域の外に移動することもできます。実際にキャプチャしたビデオも描画する必要はありません。ウィンドウの目的は API との通信です。Windows 7 でも使用できますが、もちろん、これらのオペレーティング システム用の適切に動作するドライバーも必要です。

その他の API として、DirectShow と Media Foundation があります。DirectShow は、Windows API のすべてのバージョンで最もリッチで互換性が最も高く、この件名に記載されているタスク (表示せずにキャプチャ) を実行できます。C# からは、通常、DirectShow.NETライブラリ/バインディングを介して操作し、Web サイトで参照できる適切なサンプルがあります。

于 2012-10-08T18:47:55.333 に答える