状況
少し前に、ウェブカメラ キャプチャ用のコード スニペットを見つけて、本当に必要なもの、つまり画像のキャプチャのために最小化しました。デバイスの選択も非同期タイマーもありません。必要なのは画像をキャプチャすることだけでした。
以下はコードです。チェックがなく、コードがどのように見えるか正確ではないことはわかっていますが、とにかくここに巨大なコードスニペットを投稿しません.
以前はうまく機能していましたが、最近もう一度実行しようとしましたが、私のウェブカメラは他のプログラムでは問題なく動作していましたが、機能しませんでした。
public static class Webcam
{
private static IntPtr Handle;
public static void Start()
{
Handle = capCreateCaptureWindowA("WebCap", 0, 0, 0, 320, 240, 0, 0);
SendMessage(Handle, 1034, 0, 0);
SendMessage(Handle, 1074, 0, 0);
}
public static void Stop()
{
SendMessage(Handle, 1035, 0, 0);
}
public static Image CaptureFrame()
{
SendMessage(Handle, 1084, 0, 0);
SendMessage(Handle, 1054, 0, 0); // <--- returns 0
return (Image)Clipboard.GetDataObject().GetData(DataFormats.Bitmap);
}
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
[DllImport("avicap32.dll")]
private static extern IntPtr capCreateCaptureWindowA(string lpszWindowName, int dwStyle, int X, int Y, int nWidth, int nHeight, int hwndParent, int nID);
}
環境
オペレーティング システム: Windows 8 x64
使用する Web カメラ: Logitech C910 (ドライバーは正しくインストールされています)
質問:このコードの何が問題で、なぜ機能しないのですか?