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 'returns HWND
Const ws_visible = &H10000000
Const ws_child = &H40000000
Const WM_USER = 1024
Const WM_CAP_EDIT_COPY = WM_USER + 30
Const wm_cap_driver_connect = WM_USER + 10
Const wm_cap_set_preview = WM_USER + 50
Const wm_cap_set_overlay = WM_USER + 51
Const WM_CAP_SET_PREVIEWRATE = WM_USER + 52
Const WM_CAP_SEQUENCE = WM_USER + 62
Const WM_CAP_SINGLE_FRAME_OPEN = WM_USER + 70
Const WM_CAP_SINGLE_FRAME_CLOSE = WM_USER + 71
Const WM_CAP_SINGLE_FRAME = WM_USER + 72
Const DRV_USER = &H4000
Const DVM_DIALOG = DRV_USER + 100
Const PREVIEWRATE = 30
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim hwndc As Long
Dim temp As String
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
On Error GoTo handler:
hwndc = capCreateCaptureWindow("CaptureWindow", ws_child Or ws_visible, 0, 0, 250, 250, Me.hWnd, 0)
If (hwndc <> 0) Then
temp = SendMessage(hwndc, wm_cap_driver_connect, 0, 0)
temp = SendMessage(hwndc, wm_cap_set_preview, 1, 0)
temp = SendMessage(hwndc, WM_CAP_SET_PREVIEWRATE, PREVIEWRATE, 0)
temp = SendMessage(Me.hWnd, WM_CAP_EDIT_COPY, 1, 0)
Else
MsgBox "Unable to capture video.", vbCritical
End If
Exit Sub
handler:
End
End Sub
Yukarıdaki VB kodu ile tv kartımdan aldığım görüntüyü boş bir form üzerinde görebiliyorum. İş capCreateCaptureWindow apisinde bitiyor. Ancak burdan aldığın görüntüyü formda istediğin alana yerleştirmek (Yukarıdaki kod 0,0 sol üstten 250 genişlik ve yükseklikte bir pencere açıyor) veya görüntü kaynağını düzgün seçmek (Aynı anda hem TV kartı hem de webcam bağlı olan bir PC'de hangi kaynaktan görüntü alacağını seçtirmek) önemli. Bunun haricinde kanal değiştirme işlemi için heralde biraz uğraşman gerekecek.
|