场合
不久前,我找到了网络摄像头捕获的代码片段,并根据我真正需要的内容进行了最小化 - 捕获图像,这就是全部。没有设备选择,没有异步定时器,我只需要捕获图像。
以下是代码。它没有任何检查,我知道代码看起来不是很好,但我不会在这里发布大量的代码片段。
它曾经运作良好,但是,最近我尝试再次运行它并没有工作,虽然我的网络摄像头确实可以与任何其他程序一起使用。
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 (驱动程序已正确安装)
问题:此代码有什么问题,为什么不起作用?