vb.net 怎么调用摄像头或数码相机保存照片

vb.net 如何调用摄像头或数码相机保存照片
请高手帮忙,小弟有些问题一直不解,如何用摄像头和数码相机获取照片,不同牌子不同型号的摄像头或相机是否可以在一个程序下通用?我在网上找段代码但会出错,不知道是不是因为我的摄像头型号的问题?我用的代码是
VB.NET code
Public Class Cam

    Private Const WM_USER As Integer = &H400
    Private Const WS_CHILD As Integer = &H40000000
    Private Const WS_VISIBLE As Integer = &H10000000
    Private Const WM_CAP_START As Integer = WM_USER
    Private Const WM_CAP_STOP As Integer = WM_CAP_START + 68
    Private Const WM_CAP_DRIVER_CONNECT As Integer = WM_CAP_START + 10
    Private Const WM_CAP_DRIVER_DISCONNECT As Integer = WM_CAP_START + 11
    Private Const WM_CAP_SAVEDIB As Integer = WM_CAP_START + 25
    Private Const WM_CAP_GRAB_FRAME As Integer = WM_CAP_START + 60
    Private Const WM_CAP_SEQUENCE As Integer = WM_CAP_START + 62
    Private Const WM_CAP_FILE_SET_CAPTURE_FILEA As Integer = WM_CAP_START + 20

略...
提示错误代码"对 PInvoke 函数“tv!tv.Cam::SendMessage”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。"

------解决方案--------------------
沙发啊,多年没做了。
------解决方案--------------------
一般情况通用摄像头都是同的windows自带的驱动。如果这样,你写的程序是可以通用的。
也有很多摄像头自己有驱动,但好像也可以用那个系统的通用驱动,只是画质等有所影响,需要测试。
我以前做了一个,也是从网上搜了一段代码,貌似和你得差不多。
你自己在调一下,可能API的参数类型等有问题。
good luck !
------解决方案--------------------
学习
------解决方案--------------------
帮顶.
------解决方案--------------------
引用楼主 yjqmaster 的帖子:
原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。

------解决方案--------------------
引用楼主 yjqmaster 的帖子:
"对 PInvoke 函数“tv!tv.Cam::SendMessage”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。"

------解决方案--------------------
关注
------解决方案--------------------
学习