为什么这个网络摄像头代码不起作用?

时间:2013-05-24 19:06:19

标签: c# .net webcam

场合

不久前,我找到了网络摄像头捕获的代码片段,并根据我真正需要的内容进行了最小化 - 捕获图像,这就是全部。没有设备选择,没有异步定时器,我只需要捕获图像。

以下是代码。它没有任何检查,我知道代码看起来不是很好,但我不会在这里发布大量的代码片段。

它曾经运作良好,但是,最近我尝试再次运行它并没有工作,虽然我的网络摄像头确实可以与任何其他程序一起使用。

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
使用的网络摄像头:Logitech C910 (驱动程序已正确安装)

问题:此代码有什么问题,为什么不起作用?

0 个答案:

没有答案