简体   繁体   English

从ASP.NET服务器端代码访问网络摄像头api错误

[英]Webcam api error when accessed from ASP.NET Server-side code

I'm tring to use webcam api with asp.net and C#. 我正在尝试将Webcam api与asp.net和C#结合使用。 I included all the library and references I needed for that. 我包括了为此所需的所有库和参考。

the original code I'm use was for windows application and I'm trying to convert it to asp.net web application. 我使用的原始代码用于Windows应用程序,并且我试图将其转换为asp.net Web应用程序。

I have start capturing button when I click it, it should start capturing but it gives me an error. 单击它时,我有开始捕获按钮,它应该开始捕获,但是它给我一个错误。

the error at this line: 此行的错误:

  hHwnd = capCreateCaptureWindowA(iDevice.ToString(), (WS_VISIBLE | WS_CHILD), 0, 0, 640, 480, picCapture.Handle.ToInt32(), 0);  

and the error message is: 错误消息是:

Error 1 'System.Web.UI.WebControls.Image' does not contain a definition for 'Handle' and no extension method 'Handle' accepting a first argument of type 'System.Web.UI.WebControls.Image' could be found (are you missing a using directive or an assembly reference?) C:\\Users\\Ali\\Documents\\Visual Studio 2008\\Projects\\Conference\\Conference\\Conference1.aspx.cs 63 117 Conference 错误1'System.Web.UI.WebControls.Image'不包含'Handle'的定义,并且找不到扩展方法'Handle'接受类型为'System.Web.UI.WebControls.Image'的第一个参数(您是否缺少using指令或程序集引用?)C:\\ Users \\ Ali \\ Documents \\ Visual Studio 2008 \\ Projects \\ Conference \\ Conference \\ Conference1.aspx.cs 63117会议

Please advice!! 请指教!!

................................................
here is the complete code
...........................................

using System;
using System.Collections;
using System.Drawing;
using System.ComponentModel;
using System.Windows.Forms;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Runtime.InteropServices;
using System.Drawing.Imaging;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;

namespace Conference
{
    public partial class Conference1 : System.Web.UI.Page
    {


        #region WebCam API
        const short WM_CAP = 1024;
        const int WM_CAP_DRIVER_CONNECT = WM_CAP + 10;
        const int WM_CAP_DRIVER_DISCONNECT = WM_CAP + 11;
        const int WM_CAP_EDIT_COPY = WM_CAP + 30;
        const int WM_CAP_SET_PREVIEW = WM_CAP + 50;
        const int WM_CAP_SET_PREVIEWRATE = WM_CAP + 52;
        const int WM_CAP_SET_SCALE = WM_CAP + 53;
        const int WS_CHILD = 1073741824;
        const int WS_VISIBLE = 268435456;
        const short SWP_NOMOVE = 2;
        const short SWP_NOSIZE = 1;
        const short SWP_NOZORDER = 4;
        const short HWND_BOTTOM = 1;
        int iDevice = 0;
        int hHwnd;
        [System.Runtime.InteropServices.DllImport("user32", EntryPoint = "SendMessageA")]
        static extern int SendMessage(int hwnd, int wMsg, int wParam, [MarshalAs(UnmanagedType.AsAny)] 
            object lParam);
        [System.Runtime.InteropServices.DllImport("user32", EntryPoint = "SetWindowPos")]
        static extern int SetWindowPos(int hwnd, int hWndInsertAfter, int x, int y, int cx, int cy, int wFlags);
        [System.Runtime.InteropServices.DllImport("user32")]
        static extern bool DestroyWindow(int hndw);
        [System.Runtime.InteropServices.DllImport("avicap32.dll")]
        static extern int capCreateCaptureWindowA(string lpszWindowName, int dwStyle, int x, int y, int nWidth, short nHeight, int hWndParent, int nID);
        [System.Runtime.InteropServices.DllImport("avicap32.dll")]
        static extern bool capGetDriverDescriptionA(short wDriver, string lpszName, int cbName, string lpszVer, int cbVer);
        private void OpenPreviewWindow()
        {
            int iHeight = 320;
            int iWidth = 200;
            // 
            //  Open Preview window in picturebox
            // 
            hHwnd = capCreateCaptureWindowA(iDevice.ToString(), (WS_VISIBLE | WS_CHILD), 0, 0, 640, 480, picCapture.Handle.ToInt32(), 0);
            // 
            //  Connect to device
            // 
            if (SendMessage(hHwnd, WM_CAP_DRIVER_CONNECT, iDevice, 0) == 1)
            {
                // 
                // Set the preview scale
                // 
                SendMessage(hHwnd, WM_CAP_SET_SCALE, 1, 0);
                // 
                // Set the preview rate in milliseconds
                // 
                SendMessage(hHwnd, WM_CAP_SET_PREVIEWRATE, 66, 0);
                // 
                // Start previewing the image from the camera
                // 
                SendMessage(hHwnd, WM_CAP_SET_PREVIEW, 1, 0);
                // 
                //  Resize window to fit in picturebox
                // 
                SetWindowPos(hHwnd, HWND_BOTTOM, 0, 0, iWidth, iHeight, (SWP_NOMOVE | SWP_NOZORDER));
            }
            else
            {
                // 
                //  Error connecting to device close window
                //  
                DestroyWindow(hHwnd);
            }
        }
        private void ClosePreviewWindow()
        {
            // 
            //  Disconnect from device
            // 
            SendMessage(hHwnd, WM_CAP_DRIVER_DISCONNECT, iDevice, 0);
            // 
            //  close window
            // 
            DestroyWindow(hHwnd);
        }
        #endregion
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnStart_Click(object sender, EventArgs e)
        {
           int  iDevice = int.Parse(device_number_textBox.Text);
            OpenPreviewWindow();
        }
    }
}

You code cannot possibly work. 您的代码可能无法正常工作。

The native API is tightly tied to standard Windows controls. 本机API与标准Windows控件紧密相关。
It cannot be used in ASP.Net. 它不能在ASP.Net中使用。

只有使用Flash或Silverlight 4才能获得最终用户的网络摄像头。

Among other problems, the image control in ASP.NET corresponds to the <img/> tag in HTML. 除其他问题外,ASP.NET中的图像控件与HTML中的<img/>标记相对应。 There is nothing like a window handle associated with an HTML tag. 没有什么像与HTML标记关联的窗口句柄一样。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 客户端(jquery)和服务器端(asp.net)应用程序都可以访问的服务 - Service that can be accessed by both client-side (jquery) and server-side (asp.net) applications Instagram API服务器端身份验证ASP.NET MVC - Instagram api server-side authentication asp.net mvc 服务器端变量的ASP.NET(UserControl)语法错误 - ASP.NET (UserControl) Syntax Error for server-side variable 从ASP.NET服务器端代码触发Jquery事件? - Trigger Jquery event from ASP.NET server-side code? 我可以通过ASP.NET将客户端javascript中的对象发送到服务器端代码吗? - Can I send an object from client-side javascript to server-side code via ASP.NET? 用于客户端和服务器端验证的 ASP.NET Core 重用代码 - ASP.NET Core Reuse Code for Client-Side and Server-Side Validation 如何从客户端调用服务器端ASP.NET事件 - how to call a server-side ASP.NET event from the client-side 如何在ASP.NET中从客户端调用服务器端函数? - How to call server-side function from client-side in ASP.NET? ASP.NET 4.0-从客户端方法调用服务器端方法-PageMethods - ASP.NET 4.0 - Calling a server-side method from a client side method - PageMethods 从服务器端asp.net注册客户端json的有效方法? - Efficient way to register client-side json from server-side asp.net?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM