VB.Net生成的摄像头图像捕捉程序到其他机器上不能运行。(错误信息:应用程序正常初始化(0xc0000135)失败。)
Imports System.Runtime.InteropServicesPublic Class Form1
Inherits System.Windows.Forms.Form#Region " Windows Form Designer generated code " Public Sub New()
MyBase.New()
InitializeComponent()
End Sub 'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub 'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer Friend WithEvents picCapture As System.Windows.Forms.PictureBox
Friend WithEvents lstDevices As System.Windows.Forms.ListBox
Friend WithEvents lblDevice As System.Windows.Forms.Label
Friend WithEvents btnStart As System.Windows.Forms.Button
Friend WithEvents btnSave As System.Windows.Forms.Button
Friend WithEvents btnStop As System.Windows.Forms.Button
Friend WithEvents sfdImage As System.Windows.Forms.SaveFileDialog
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.picCapture = New System.Windows.Forms.PictureBox
Me.lstDevices = New System.Windows.Forms.ListBox
Me.lblDevice = New System.Windows.Forms.Label
Me.btnStart = New System.Windows.Forms.Button
Me.btnSave = New System.Windows.Forms.Button
Me.btnStop = New System.Windows.Forms.Button
Me.sfdImage = New System.Windows.Forms.SaveFileDialog
Me.SuspendLayout()
'picCapture
Me.picCapture.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D
Me.picCapture.Location = New System.Drawing.Point(208, 24)
Me.picCapture.Name = "picCapture"
Me.picCapture.Size = New System.Drawing.Size(256, 272)
Me.picCapture.TabIndex = 0
Me.picCapture.TabStop = False
'lstDevices
Me.lstDevices.Location = New System.Drawing.Point(8, 55)
Me.lstDevices.Name = "lstDevices"
Me.lstDevices.Size = New System.Drawing.Size(184, 238)
Me.lstDevices.TabIndex = 1
'lblDevice
Me.lblDevice.Location = New System.Drawing.Point(8, 32)
Me.lblDevice.Name = "lblDevice"
Me.lblDevice.Size = New System.Drawing.Size(184, 16)
Me.lblDevice.TabIndex = 2
Me.lblDevice.Text = "Available Devices"
Me.lblDevice.TextAlign = System.Drawing.ContentAlignment.TopCenter
'btnStart
Me.btnStart.Location = New System.Drawing.Point(20, 320)
Me.btnStart.Name = "btnStart"
Me.btnStart.Size = New System.Drawing.Size(112, 32)
Me.btnStart.TabIndex = 3
Me.btnStart.Text = "Start Preview"
'btnSave
Me.btnSave.Anchor = (System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right)
Me.btnSave.Location = New System.Drawing.Point(348, 320)
Me.btnSave.Name = "btnSave"
Me.btnSave.Size = New System.Drawing.Size(112, 32)
Me.btnSave.TabIndex = 4
Me.btnSave.Text = "Save Image"
'btnStop
Me.btnStop.Location = New System.Drawing.Point(184, 320)
Me.btnStop.Name = "btnStop"
Me.btnStop.Size = New System.Drawing.Size(112, 32)
Me.btnStop.TabIndex = 5
Me.btnStop.Text = "Stop Preview"
'sfdImage
Me.sfdImage.FileName = "Webcam1"
Me.sfdImage.Filter = "Bitmap|*.bmp"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(480, 382)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.btnStop, Me.btnSave, Me.btnStart, Me.lblDevice, Me.lstDevices, Me.picCapture})
Me.Name = "Form1"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = "Video Capture"
Me.ResumeLayout(False)
End Sub
#End Region Const WM_CAP As Short = &H400S Const WM_CAP_DRIVER_CONNECT As Integer = WM_CAP + 10
Const WM_CAP_DRIVER_DISCONNECT As Integer = WM_CAP + 11
Const WM_CAP_EDIT_COPY As Integer = WM_CAP + 30 Const WM_CAP_SET_PREVIEW As Integer = WM_CAP + 50
Const WM_CAP_SET_PREVIEWRATE As Integer = WM_CAP + 52
Const WM_CAP_SET_SCALE As Integer = WM_CAP + 53
Const WS_CHILD As Integer = &H40000000
Const WS_VISIBLE As Integer = &H10000000
Const SWP_NOMOVE As Short = &H2S
Const SWP_NOSIZE As Short = 1
Const SWP_NOZORDER As Short = &H4S
Const HWND_BOTTOM As Short = 1 Dim iDevice As Integer = 0 ' Current device ID
Dim hHwnd As Integer ' Handle to preview window Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, _
<MarshalAs(UnmanagedType.AsAny)> ByVal lParam As Object) As Integer Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Integer, _
ByVal hWndInsertAfter As Integer, ByVal x As Integer, ByVal y As Integer, _
ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer Declare Function DestroyWindow Lib "user32" (ByVal hndw As Integer) As Boolean Declare Function capCreateCaptureWindowA Lib "avicap32.dll" _
(ByVal lpszWindowName As String, ByVal dwStyle As Integer, _
ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, _
ByVal nHeight As Short, ByVal hWndParent As Integer, _
ByVal nID As Integer) As Integer Declare Function capGetDriverDescriptionA Lib "avicap32.dll" (ByVal wDriver As Short, _
ByVal lpszName As String, ByVal cbName As Integer, ByVal lpszVer As String, _
ByVal cbVer As Integer) As Boolean
Imports System.Runtime.InteropServicesPublic Class Form1
Inherits System.Windows.Forms.Form#Region " Windows Form Designer generated code " Public Sub New()
MyBase.New()
InitializeComponent()
End Sub 'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub 'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer Friend WithEvents picCapture As System.Windows.Forms.PictureBox
Friend WithEvents lstDevices As System.Windows.Forms.ListBox
Friend WithEvents lblDevice As System.Windows.Forms.Label
Friend WithEvents btnStart As System.Windows.Forms.Button
Friend WithEvents btnSave As System.Windows.Forms.Button
Friend WithEvents btnStop As System.Windows.Forms.Button
Friend WithEvents sfdImage As System.Windows.Forms.SaveFileDialog
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.picCapture = New System.Windows.Forms.PictureBox
Me.lstDevices = New System.Windows.Forms.ListBox
Me.lblDevice = New System.Windows.Forms.Label
Me.btnStart = New System.Windows.Forms.Button
Me.btnSave = New System.Windows.Forms.Button
Me.btnStop = New System.Windows.Forms.Button
Me.sfdImage = New System.Windows.Forms.SaveFileDialog
Me.SuspendLayout()
'picCapture
Me.picCapture.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D
Me.picCapture.Location = New System.Drawing.Point(208, 24)
Me.picCapture.Name = "picCapture"
Me.picCapture.Size = New System.Drawing.Size(256, 272)
Me.picCapture.TabIndex = 0
Me.picCapture.TabStop = False
'lstDevices
Me.lstDevices.Location = New System.Drawing.Point(8, 55)
Me.lstDevices.Name = "lstDevices"
Me.lstDevices.Size = New System.Drawing.Size(184, 238)
Me.lstDevices.TabIndex = 1
'lblDevice
Me.lblDevice.Location = New System.Drawing.Point(8, 32)
Me.lblDevice.Name = "lblDevice"
Me.lblDevice.Size = New System.Drawing.Size(184, 16)
Me.lblDevice.TabIndex = 2
Me.lblDevice.Text = "Available Devices"
Me.lblDevice.TextAlign = System.Drawing.ContentAlignment.TopCenter
'btnStart
Me.btnStart.Location = New System.Drawing.Point(20, 320)
Me.btnStart.Name = "btnStart"
Me.btnStart.Size = New System.Drawing.Size(112, 32)
Me.btnStart.TabIndex = 3
Me.btnStart.Text = "Start Preview"
'btnSave
Me.btnSave.Anchor = (System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right)
Me.btnSave.Location = New System.Drawing.Point(348, 320)
Me.btnSave.Name = "btnSave"
Me.btnSave.Size = New System.Drawing.Size(112, 32)
Me.btnSave.TabIndex = 4
Me.btnSave.Text = "Save Image"
'btnStop
Me.btnStop.Location = New System.Drawing.Point(184, 320)
Me.btnStop.Name = "btnStop"
Me.btnStop.Size = New System.Drawing.Size(112, 32)
Me.btnStop.TabIndex = 5
Me.btnStop.Text = "Stop Preview"
'sfdImage
Me.sfdImage.FileName = "Webcam1"
Me.sfdImage.Filter = "Bitmap|*.bmp"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(480, 382)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.btnStop, Me.btnSave, Me.btnStart, Me.lblDevice, Me.lstDevices, Me.picCapture})
Me.Name = "Form1"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = "Video Capture"
Me.ResumeLayout(False)
End Sub
#End Region Const WM_CAP As Short = &H400S Const WM_CAP_DRIVER_CONNECT As Integer = WM_CAP + 10
Const WM_CAP_DRIVER_DISCONNECT As Integer = WM_CAP + 11
Const WM_CAP_EDIT_COPY As Integer = WM_CAP + 30 Const WM_CAP_SET_PREVIEW As Integer = WM_CAP + 50
Const WM_CAP_SET_PREVIEWRATE As Integer = WM_CAP + 52
Const WM_CAP_SET_SCALE As Integer = WM_CAP + 53
Const WS_CHILD As Integer = &H40000000
Const WS_VISIBLE As Integer = &H10000000
Const SWP_NOMOVE As Short = &H2S
Const SWP_NOSIZE As Short = 1
Const SWP_NOZORDER As Short = &H4S
Const HWND_BOTTOM As Short = 1 Dim iDevice As Integer = 0 ' Current device ID
Dim hHwnd As Integer ' Handle to preview window Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, _
<MarshalAs(UnmanagedType.AsAny)> ByVal lParam As Object) As Integer Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Integer, _
ByVal hWndInsertAfter As Integer, ByVal x As Integer, ByVal y As Integer, _
ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer Declare Function DestroyWindow Lib "user32" (ByVal hndw As Integer) As Boolean Declare Function capCreateCaptureWindowA Lib "avicap32.dll" _
(ByVal lpszWindowName As String, ByVal dwStyle As Integer, _
ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, _
ByVal nHeight As Short, ByVal hWndParent As Integer, _
ByVal nID As Integer) As Integer Declare Function capGetDriverDescriptionA Lib "avicap32.dll" (ByVal wDriver As Short, _
ByVal lpszName As String, ByVal cbName As Integer, ByVal lpszVer As String, _
ByVal cbVer As Integer) As Boolean
解决方案 »
- 再次求助Exception from HRESULT: 0x800A03EC的错误原因!!!
- Devexpress中xtraReport在什么事件中能获取报表总页数
- LinkButton进行页面跳转传参数时的绑定出错了????
- VS2005+Ajax2.0项目Framework升级3.5后出问题了怎么办?
- 怎么访问远程计算机,并提取信息
- 谁帮我搞定,我管他叫妈。
- DataGrid 列内容过多的问题
- 向数据库中插入一条新记录的问题?求助!!!
- 求教快递系统
- 当CommandType = CommandType.StoredProcedure时,CommandText方在何处?
- 100分求助!初学C# ASP.NET用什么教材比较好?
- 紧急寻求《asp.net unleashed》的源代码!
LoadDeviceList()
If lstDevices.Items.Count > 0 Then
btnStart.Enabled = True
lstDevices.SelectedIndex = 0
btnStart.Enabled = True
Else
lstDevices.Items.Add("No Capture Device")
btnStart.Enabled = False
End If btnStop.Enabled = False
btnSave.Enabled = False
picCapture.SizeMode = PictureBoxSizeMode.StretchImage
End Sub Private Sub LoadDeviceList()
Dim strName As String = Space(100)
Dim strVer As String = Space(100)
Dim bReturn As Boolean
Dim x As Integer = 0 '
' Load name of all avialable devices into the lstDevices
' Do
'
' Get Driver name and version
'
bReturn = capGetDriverDescriptionA(x, strName, 100, strVer, 100) '
' If there was a device add device name to the list
'
If bReturn Then lstDevices.Items.Add(strName.Trim)
x += 1
Loop Until bReturn = False
End Sub Private Sub OpenPreviewWindow()
Dim iHeight As Integer = picCapture.Height
Dim iWidth As Integer = picCapture.Width '
' Open Preview window in picturebox
'
hHwnd = capCreateCaptureWindowA(iDevice, WS_VISIBLE Or WS_CHILD, 0, 0, 640, _
480, picCapture.Handle.ToInt32, 0) '
' Connect to device
'
If SendMessage(hHwnd, WM_CAP_DRIVER_CONNECT, iDevice, 0) Then
'
'Set the preview scale
'
SendMessage(hHwnd, WM_CAP_SET_SCALE, True, 0) SendMessage(hHwnd, WM_CAP_SET_PREVIEWRATE, 66, 0) SendMessage(hHwnd, WM_CAP_SET_PREVIEW, True, 0) SetWindowPos(hHwnd, HWND_BOTTOM, 0, 0, picCapture.Width, picCapture.Height, _
SWP_NOMOVE Or SWP_NOZORDER) btnSave.Enabled = True
btnStop.Enabled = True
btnStart.Enabled = False
Else
DestroyWindow(hHwnd) btnSave.Enabled = False
End If
End Sub Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
iDevice = lstDevices.SelectedIndex
OpenPreviewWindow()
End Sub Private Sub ClosePreviewWindow() SendMessage(hHwnd, WM_CAP_DRIVER_DISCONNECT, iDevice, 0) DestroyWindow(hHwnd)
End Sub Private Sub btnStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStop.Click
ClosePreviewWindow()
btnSave.Enabled = False
btnStart.Enabled = True
btnStop.Enabled = False
End Sub Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
Dim data As IDataObject
Dim bmap As Image '
' Copy image to cliPBoard
'
SendMessage(hHwnd, WM_CAP_EDIT_COPY, 0, 0) data = Clipboard.GetDataObject()
If data.GetDataPresent(GetType(System.Drawing.Bitmap)) Then
bmap = CType(data.GetData(GetType(System.Drawing.Bitmap)), Image)
picCapture.Image = bmap
ClosePreviewWindow()
btnSave.Enabled = False
btnStop.Enabled = False
btnStart.Enabled = True If sfdImage.ShowDialog = DialogResult.OK Then
bmap.Save(sfdImage.FileName, Imaging.ImageFormat.Bmp)
End If End If
End Sub Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
If btnStop.Enabled Then
ClosePreviewWindow()
End If
End Sub
End Class
好想不是程序的问题,程序是windowsapplication
为什么VB。NET生成的程序不能到别的机子上运行,要不要该什么东东???
在客户机上 不需要.NetFramework
但是在服务器上 还是必须要的
以前VB60好没有这些东东啊!!!!