ESCOLHER POR QUAL WEBCAM FOTOGRAFAR

SINKERTEC 04/10/2010 08:58:13
#354345


Olá senhores

Acho que meu tópico anterior n ficou mto claro..então acho que agora ficará mais objetivo

Gostaria de saber...se alguém sabe uma forma deu poder escolher via uma tela do próprio Windows, qual dispositivo de webcam eu quero usar em determinado momento.

Sei que qdo possuímos duas webcams instaladas, e tipo, vamos configurar o vídeo no msn por exemplo, aparece um combobox com o nome das web e que vc esconlhendo, ela se torna a padrão do msn.

N precisa ser necessariamente em VB6, se for em .NET eu dou um jeito tb..

Grato a todos
MARCELO.TREZE 04/10/2010 10:30:58
#354353
tenta este código

no modulo:

Public Declare Function capGetDriverDescriptionA Lib [Ô]avicap32.dll[Ô] (ByVal wDriver As Long, _
ByVal lpszName As String, ByVal cbName As Long, ByVal lpszVer As String, _
ByVal cbVer As Long) As Boolean


[ô] no form:
Private Declare Function capCreateCaptureWindow Lib [Ô]avicap32.dll[Ô] Alias [Ô]capCreateCaptureWindowA[Ô] (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long) As Long
Private Declare Function SendMessage Lib [Ô]USER32[Ô] Alias [Ô]SendMessageA[Ô] (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function ReleaseCapture Lib [Ô]USER32[Ô] () As Long
Private Const WM_CAP_DRIVER_CONNECT As Long = 1034
Private Const WM_CAP_DRIVER_DISCONNECT As Long = 1035
Private Const WM_CAP_GRAB_FRAME As Long = 1084
Private Const WM_CAP_EDIT_COPY As Long = 1054
Private Const WM_CAP_DLG_VIDEOFORMAT As Long = 1065
Private Const WM_CAP_DLG_VIDEOSOURCE As Long = 1066
Private Const WM_CLOSE = &H10
Private mCapHwnd As Long
Private Type POINTAPI
X As Long
Y As Long
End Type


Dim Pt(0 To 2) As POINTAPI


Private Declare Function PlgBlt Lib [Ô]gdi32[Ô] ( _
ByVal hdcDest As Long, _
lpPoint As POINTAPI, _
ByVal hdcSrc As Long, _
ByVal nXSrc As Long, _
ByVal nYSrc As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal hbmMask As Long, _
ByVal xMask As Long, _
ByVal yMask As Long _
) As Long


Private Sub LoadCamlista()
Dim strName As String
Dim strVer As String
Dim iReturn As Boolean
Dim X As Long

X = 0
strName = Space(100)
strVer = Space(100)
[ô]
[ô] Pegar o nome dos dispositivos instalados
[ô]

Do
[ô]
[ô] Pegar os nomes dos drivers e versoes
[ô]
iReturn = capGetDriverDescriptionA(X, strName, 100, strVer, 100)

[ô]
[ô] inserir os nomes na lista
[ô]
If iReturn Then List1.AddItem Trim$(strName)

X = X + 1
Loop Until iReturn = False
End Sub



Private Sub Command1_Click()
[ô]desconectar se estiver conectada
SendMessage mCapHwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0
[ô] iniciar a camera selecionada
mCapHwnd = capCreateCaptureWindow(Trim$(List1.Text), 0, 0, 0, 640, 480, Me.hwnd, 0)
SendMessage mCapHwnd, WM_CAP_DRIVER_CONNECT, 0, 0

Clipboard.Clear
SendMessage mCapHwnd, WM_CAP_GRAB_FRAME, 0, 0
SendMessage mCapHwnd, WM_CAP_EDIT_COPY, 0, 0
Picture1.Picture = Clipboard.GetData
End Sub


Private Sub Form_Load()
LoadCamlista
End Sub



eu não testei este código mas gravei ele de uma outra vez de um outro forum, bom teste e diga se funcionou
SINKERTEC 04/10/2010 10:44:13
#354355


MArcelão

com ctz...vou testar hj ainda..e ja te posto algo

abraços
SINKERTEC 05/10/2010 09:24:49
#354408


Bom dia a todos


Marcelo, n consegui ainda enteder por mas...qdo eu rodo, só aparece o nome de uma webcam..

Tem idéia do que posso mudar para aparecer o nome da outra?

AS duas estão funiconando perfeitamente
MARCELO.TREZE 05/10/2010 11:00:12
#354421
bom colega não tenho duas cam para fazer o teste, mas veja esta outra opção

anexei uma ocx que parece fazer isto, use o exmplo dentro da pasta para ver se funiciona

ou use este exemplo

coloque a ocx que segue em anexo (ezvidcap.ocx) no seu projeto
inclua dois command button
e cole este código


Private Declare Function SendMessage Lib [Ô]user32[Ô] Alias [Ô]SendMessageA[Ô] (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long 
Const WM_CAP_START = &H400
Const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10
Dim myVideoWindowHWND As Long
Public Function UseVideoSource(ByVal hwnd As Long, ByVal myDeviceNumber As Integer) As Boolean
UseVideoSource = SendMessage(hwnd, WM_CAP_DRIVER_CONNECT, myDeviceNumber, 0)
End Function


Private Sub Command1_Click() 
UseVideoSource myVideoWindowHWND, 0 [ô]camera 1
ezVidCap1.Preview = True
End Sub


Private Sub Command2_Click() 
UseVideoSource myVideoWindowHWND, 1 [ô] camera 2
ezVidCap1.Preview = True
End Sub


Private Sub Form_Load() 
Command1.Caption = [Ô]Camera 1[Ô]
Command2.Caption = [Ô]Camera 2[Ô]
myVideoWindowHWND = ezVidCap1.hwnd
End Sub



bom espero que este exemplo funcione, boa sorte

SINKERTEC 05/10/2010 11:13:19
#354424


Valeu

Eu consegui fazer em C# e ficou show.... agora vou testar esse aí pro VB 6 mesmo

Tópico encerrado , respostas não são mais permitidas