如何使用C#检测USB网络摄像头中的物理快照按钮?

时间:2013-09-17 20:13:31

标签: c# button webcam dllimport snapshot

每当用户按下网络摄像头中的物理快照按钮时,我想在我的C#代码中进行检测。

我发现网络摄像头自己的软件应用程序有一个包含各种功能的dll(emDLL.dll),我使用Dependency Walker知道它是否包含了我想要的导出功能。是的,它有一个,其未命名的名称是int IsButtonPressed(void)

回顾一下这个问题的各种回答,我自己编写了下面的C#代码来测试非托管DLL的功能:

using System;
using System.Runtime.InteropServices;

class PlatformInvokeTest3
{
    // EntryPoint is assigned with the mangled name of the exported unmangled function int CEM2800Prop::IsButtonPressed(void)
    [DllImport(@"emDLL.dll", EntryPoint = "?IsButtonPressed@CEM2800Prop@@QAEHXZ")]

    [return: MarshalAs(UnmanagedType.I4)]
    public static extern int IsButtonPressed();

    public static void Main()
    {
       int Aux;
       Aux = IsButtonPressed();

    }
}

问题是当代码到达调用函数时的点时,会出现异常并出现以下错误:

Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

我需要知道我的代码中有什么问题,以及是否有某种方法可以在我的C#代码中调用emDLL.dll函数。

感谢所有人。

0 个答案:

没有答案