473,573 Members | 5,052 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

obtain handle of Image

hi all,

I'm trying to use the capCreateCaptur eWindow (see
http://msdn.microsoft.com/library/de...turewindow.asp)
in a Windows Application Project. I want to pass Image as one of the
parameter but I figure that an Image doesn't have a handle. Previously I
had it working in a Web Application Project using the handle of a
PictureBox.

Is there any workaround? Please help and thank you very much.
Nov 20 '05 #1
6 2938
Cor
Hi anonymous,

If you tell a little bit more, what you want to do, then maybe we can give
you an answer in a more .Net approach with managed code?

Cor
I'm trying to use the capCreateCaptur eWindow (see
http://msdn.microsoft.com/library/de...turewindow.asp) in a Windows Application Project. I want to pass Image as one of the
parameter but I figure that an Image doesn't have a handle. Previously I
had it working in a Web Application Project using the handle of a
PictureBox.

Is there any workaround? Please help and thank you very much.

Nov 20 '05 #2
Hi Cor,

Thanks for replying. I am trying to capture video from a webcam.

Merry Christmas!

"Cor" <no*@non.com> ¦b¶l¥ó news:%2******** ********@TK2MSF TNGP11.phx.gbl ¤¤¼¶
¼g...
Hi anonymous,

If you tell a little bit more, what you want to do, then maybe we can give
you an answer in a more .Net approach with managed code?

Cor
I'm trying to use the capCreateCaptur eWindow (see

http://msdn.microsoft.com/library/de...turewindow.asp)
in a Windows Application Project. I want to pass Image as one of the
parameter but I figure that an Image doesn't have a handle. Previously I had it working in a Web Application Project using the handle of a
PictureBox.

Is there any workaround? Please help and thank you very much.


Nov 20 '05 #3
Hi,

Here is a class I have been working on that creates a capture window
inside a picturebox. In the opencapturewind ow method pass in the handle of
the picturebox to place the window and the height and width of the window.
GetImage copies the image to the clipboard then returns the image as a
bitmap. Hope this helps.

Imports System.Runtime. InteropServices

Imports System.Windows. Forms

Imports System.Drawing

Public Class WebcamCaptureIm age

Const WM_CAP As Short = &H400S

Const WM_CAP_DRIVER_C ONNECT As Integer = WM_CAP + 10

Const WM_CAP_DRIVER_D ISCONNECT As Integer = WM_CAP + 11

Const WM_CAP_EDIT_COP Y As Integer = WM_CAP + 30

Const WM_CAP_SET_PREV IEW As Integer = WM_CAP + 50

Const WM_CAP_SET_PREV IEWRATE As Integer = WM_CAP + 52

Const WM_CAP_SET_SCAL E 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

Dim mDevice As Collection

Dim bPreviewing As Boolean = False

Declare Function SendMessage Lib "user32" Alias "SendMessag eA" _

(ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, _

ByVal lParam As Integer) As Integer

Declare Function SetWindowPos Lib "user32" Alias "SetWindowP os" (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 capCreateCaptur eWindowA Lib "avicap32.d ll" _

(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 capGetDriverDes criptionA Lib "avicap32.d ll" (ByVal wDriver
As Short, _

ByVal lpszName As String, ByVal cbName As Integer, ByVal lpszVer As String,
_

ByVal cbVer As Integer) As Boolean

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

'

mDevice = New Collection

Do

'

' Get Driver name and version

'

bReturn = capGetDriverDes criptionA(x, strName, 100, strVer, 100)

'

' If there was a device add device name to the list

'

If bReturn Then

Dim wci As New WebcamInfo

With wci

..Device = strName

..Version = strVer

End With

mDevice.Add(wci )

End If

x += 1

Loop Until bReturn = False

End Sub

Public Function OpenPreviewWind ow(ByVal hWndCapture As IntPtr, ByVal h As
Integer, ByVal w As Integer) As Boolean

'

' Open Preview window in picturebox

'

If bPreviewing Then ClosePreviewWin dow()

hHwnd = capCreateCaptur eWindowA(iDevic e, WS_VISIBLE Or WS_CHILD, 0, 0, 320,
_

240, hWndCapture.ToI nt32, 0)

'

' Connect to device

'

If SendMessage(hHw nd, WM_CAP_DRIVER_C ONNECT, iDevice, 0) Then

'

'Set the preview scale

'

SendMessage(hHw nd, WM_CAP_SET_SCAL E, True, 0)

'

'Set the preview rate in milliseconds

'

SendMessage(hHw nd, WM_CAP_SET_PREV IEWRATE, 66, 0)

'

'Start previewing the image from the camera

'

SendMessage(hHw nd, WM_CAP_SET_PREV IEW, True, 0)

'

' Resize window to fit in picturebox

'

SetWindowPos(hH wnd, HWND_BOTTOM, 0, 0, w, h, _

SWP_NOMOVE Or SWP_NOZORDER)

bPreviewing = True

Else

'

' Error connecting to device close window

'

DestroyWindow(h Hwnd)

bPreviewing = False

End If

Return bPreviewing

End Function

Public Sub ClosePreviewWin dow()

'

' Disconnect from device

'

SendMessage(hHw nd, WM_CAP_DRIVER_D ISCONNECT, iDevice, 0)

'

' close window

'

DestroyWindow(h Hwnd)

End Sub

Public Function GetImage() As Bitmap

Dim data As IDataObject

Dim bmap As Bitmap

If Not bPreviewing Then Return Nothing

'

' Copy image to clipboard

'

SendMessage(hHw nd, WM_CAP_EDIT_COP Y, 0, 0)

'

' Get image from clipboard and convert it to a bitmap

'

data = Clipboard.GetDa taObject()

If data.GetDataPre sent(GetType(Sy stem.Drawing.Bi tmap)) Then

bmap = CType(data.GetD ata(GetType(Sys tem.Drawing.Bit map)), Bitmap)

ClosePreviewWin dow()

Return bmap

End If

Return Nothing

End Function

Protected Overrides Sub Finalize()

If bPreviewing Then

ClosePreviewWin dow()

End If

MyBase.Finalize ()

End Sub

Public ReadOnly Property DeviceList() As Collection

Get

Return mDevice

End Get

End Property

Public Sub New()

LoadDeviceList( )

If mDevice.Count = 0 Then

Throw New Exception("No Video Capture Device Present.")

End If

End Sub

End Class

Public Class WebcamInfo

Private mstrDevice As String

Private mstrVersion As String

Public Property Device() As String

Get

Return mstrDevice

End Get

Set(ByVal Value As String)

mstrDevice = Value

End Set

End Property

Public Property Version() As String

Get

Return mstrVersion

End Get

Set(ByVal Value As String)

mstrVersion = Value

End Set

End Property

End Class

Ken

---------------------------

"anonymous" <so*****@somedo main.com> wrote in message
news:%2******** ********@tk2msf tngp13.phx.gbl. ..
hi all,

I'm trying to use the capCreateCaptur eWindow (see
http://msdn.microsoft.com/library/de...turewindow.asp)
in a Windows Application Project. I want to pass Image as one of the
parameter but I figure that an Image doesn't have a handle. Previously I
had it working in a Web Application Project using the handle of a
PictureBox.

Is there any workaround? Please help and thank you very much.

Nov 20 '05 #4
* "anonymous" <so*****@somedo main.com> scripsit:
I'm trying to use the capCreateCaptur eWindow (see
http://msdn.microsoft.com/library/de...turewindow.asp)
in a Windows Application Project. I want to pass Image as one of the
parameter but I figure that an Image doesn't have a handle. Previously I
had it working in a Web Application Project using the handle of a
PictureBox.


The function expects a window handle, so passing the form's handle or a
picturebox's handle('Handle' property) should work.

--
Herfried K. Wagner [MVP]
<http://www.mvps.org/dotnet>
Nov 20 '05 #5
Cor
Anonymous,
Sorry not my stuf, I thought it where pictures, but maybe the others can
help you better now with this message
Merry Christmas

Cor

Thanks for replying. I am trying to capture video from a webcam.

Nov 20 '05 #6
Hi,

Here is a link to more video capture info.
http://www.shrinkwrapvb.com/videocap.htm

Ken
---------------------
"Ken Tucker [MVP]" <vb***@bellsout h.net> wrote in message
news:uq******** ******@TK2MSFTN GP10.phx.gbl...
Hi,

Here is a class I have been working on that creates a capture
window inside a picturebox. In the opencapturewind ow method pass in the
handle of the picturebox to place the window and the height and width of
the window. GetImage copies the image to the clipboard then returns the
image as a bitmap. Hope this helps.

Imports System.Runtime. InteropServices

Imports System.Windows. Forms

Imports System.Drawing

Public Class WebcamCaptureIm age

Const WM_CAP As Short = &H400S

Const WM_CAP_DRIVER_C ONNECT As Integer = WM_CAP + 10

Const WM_CAP_DRIVER_D ISCONNECT As Integer = WM_CAP + 11

Const WM_CAP_EDIT_COP Y As Integer = WM_CAP + 30

Const WM_CAP_SET_PREV IEW As Integer = WM_CAP + 50

Const WM_CAP_SET_PREV IEWRATE As Integer = WM_CAP + 52

Const WM_CAP_SET_SCAL E 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

Dim mDevice As Collection

Dim bPreviewing As Boolean = False

Declare Function SendMessage Lib "user32" Alias "SendMessag eA" _

(ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, _

ByVal lParam As Integer) As Integer

Declare Function SetWindowPos Lib "user32" Alias "SetWindowP os" (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 capCreateCaptur eWindowA Lib "avicap32.d ll" _

(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 capGetDriverDes criptionA Lib "avicap32.d ll" (ByVal
wDriver As Short, _

ByVal lpszName As String, ByVal cbName As Integer, ByVal lpszVer As
String, _

ByVal cbVer As Integer) As Boolean

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

'

mDevice = New Collection

Do

'

' Get Driver name and version

'

bReturn = capGetDriverDes criptionA(x, strName, 100, strVer, 100)

'

' If there was a device add device name to the list

'

If bReturn Then

Dim wci As New WebcamInfo

With wci

.Device = strName

.Version = strVer

End With

mDevice.Add(wci )

End If

x += 1

Loop Until bReturn = False

End Sub

Public Function OpenPreviewWind ow(ByVal hWndCapture As IntPtr, ByVal h As
Integer, ByVal w As Integer) As Boolean

'

' Open Preview window in picturebox

'

If bPreviewing Then ClosePreviewWin dow()

hHwnd = capCreateCaptur eWindowA(iDevic e, WS_VISIBLE Or WS_CHILD, 0, 0,
320, _

240, hWndCapture.ToI nt32, 0)

'

' Connect to device

'

If SendMessage(hHw nd, WM_CAP_DRIVER_C ONNECT, iDevice, 0) Then

'

'Set the preview scale

'

SendMessage(hHw nd, WM_CAP_SET_SCAL E, True, 0)

'

'Set the preview rate in milliseconds

'

SendMessage(hHw nd, WM_CAP_SET_PREV IEWRATE, 66, 0)

'

'Start previewing the image from the camera

'

SendMessage(hHw nd, WM_CAP_SET_PREV IEW, True, 0)

'

' Resize window to fit in picturebox

'

SetWindowPos(hH wnd, HWND_BOTTOM, 0, 0, w, h, _

SWP_NOMOVE Or SWP_NOZORDER)

bPreviewing = True

Else

'

' Error connecting to device close window

'

DestroyWindow(h Hwnd)

bPreviewing = False

End If

Return bPreviewing

End Function

Public Sub ClosePreviewWin dow()

'

' Disconnect from device

'

SendMessage(hHw nd, WM_CAP_DRIVER_D ISCONNECT, iDevice, 0)

'

' close window

'

DestroyWindow(h Hwnd)

End Sub

Public Function GetImage() As Bitmap

Dim data As IDataObject

Dim bmap As Bitmap

If Not bPreviewing Then Return Nothing

'

' Copy image to clipboard

'

SendMessage(hHw nd, WM_CAP_EDIT_COP Y, 0, 0)

'

' Get image from clipboard and convert it to a bitmap

'

data = Clipboard.GetDa taObject()

If data.GetDataPre sent(GetType(Sy stem.Drawing.Bi tmap)) Then

bmap = CType(data.GetD ata(GetType(Sys tem.Drawing.Bit map)), Bitmap)

ClosePreviewWin dow()

Return bmap

End If

Return Nothing

End Function

Protected Overrides Sub Finalize()

If bPreviewing Then

ClosePreviewWin dow()

End If

MyBase.Finalize ()

End Sub

Public ReadOnly Property DeviceList() As Collection

Get

Return mDevice

End Get

End Property

Public Sub New()

LoadDeviceList( )

If mDevice.Count = 0 Then

Throw New Exception("No Video Capture Device Present.")

End If

End Sub

End Class

Public Class WebcamInfo

Private mstrDevice As String

Private mstrVersion As String

Public Property Device() As String

Get

Return mstrDevice

End Get

Set(ByVal Value As String)

mstrDevice = Value

End Set

End Property

Public Property Version() As String

Get

Return mstrVersion

End Get

Set(ByVal Value As String)

mstrVersion = Value

End Set

End Property

End Class

Ken

---------------------------

"anonymous" <so*****@somedo main.com> wrote in message
news:%2******** ********@tk2msf tngp13.phx.gbl. ..
hi all,

I'm trying to use the capCreateCaptur eWindow (see
http://msdn.microsoft.com/library/de...turewindow.asp)
in a Windows Application Project. I want to pass Image as one of the
parameter but I figure that an Image doesn't have a handle. Previously I
had it working in a Web Application Project using the handle of a
PictureBox.

Is there any workaround? Please help and thank you very much.


Nov 20 '05 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
10280
by: midwesthills | last post by:
Is there a way to obtain the relative path of an image through javascript? I'm using document.imageName.src right now, and all I get is the absolute path. Thanks in advance for the help!
0
2112
by: TC | last post by:
Hello, Here is what I'm trying to do: -- Make sure both MS Excel and MS Word are running -- Create an Excel chart -- Save the Excel file -- Copy the Excel chart onto the clipboard using Ctrl + C -- Go to Word and look under Edit > Paste Special -- Note there is a source reference and an option to paste the chart as a
5
4037
by: TC | last post by:
Hello, Here is what I'm trying to do: -- Make sure both MS Excel and MS Word are running -- Create an Excel chart -- Save the Excel file -- Copy the Excel chart onto the clipboard using Ctrl + C -- Go to Word and look under Edit > Paste Special -- Note there is a source reference and an option to paste the chart as a
4
3724
by: Terry | last post by:
There are a number of things about using unmanaged resources in Windows Forms programming that is unclear to me. In C++, if you loaded an icon resource using "ExtractIcon()", the resource was valid until you called "DestroyIcon()". If you didn't, you had a leak. In C#, I need to load icons from unmanaged programs (.exe, dll) at run time...
5
1711
by: MuZZy | last post by:
Hello, How do i get Windows Desktop picture to further put it into pictureBox component? Thank you, Andrey
2
4003
by: kim d | last post by:
Hi, I know already this is a really stupid question but how do you obtain a handle to an application or a window in C#. Formerly I used Application.Handle in Delphi so I'm looking for the equivalent in C# TIA kim
2
14526
by: | last post by:
Hi, we are planning to rewrite an extisting C++ image processing application/library in C#. Now several question arouse where I hope you can help me: So far we allocated a block of memory as image buffer, handed this to a driver dll and got raw image data back in this buffer. We then handed this buffer by reference to another C++ dll to...
1
2197
by: Etienne Desautels | last post by:
Hi, I'm working on project where I need to grab video from an Axis IP camera. This camera send a stream of a multipart message on HTTP. I write this code (at the bottom of the message) to read and uncompress each jpeg images. I call nextFrame() 24 times per seconds (or every 0,0416 sec.) to read the next image that arrived. Everything...
14
16313
by: Steve K. | last post by:
I have a method that I use to get a System.Drawing.Image from a file without keeping a handle on the file open (so I can delete the file). Here is the code: <code> public static Image ImageFromFileReleaseHandle(string filename) { FileStream fs = null; try {
0
7789
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main...
0
8215
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that...
0
8086
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...
1
5605
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes...
0
5296
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert...
0
3737
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in...
0
3743
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
2227
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
0
1048
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.