1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| #WM_CAP_START = #WM_USER #WM_CAP_DRIVER_CONNECT = #WM_CAP_START + 10 #WM_CAP_DRIVER_DISCONNECT = #WM_CAP_START + 11 #WM_CAP_DRIVER_GET_CAPS = #WM_CAP_START + 14 #WM_CAP_EDIT_COPY = #WM_CAP_START + 30 #WM_CAP_SET_PREVIEW = #WM_CAP_START + 50 #WM_CAP_SET_PREVIEWRATE = #WM_CAP_START + 52 #WM_CAP_STOP = #WM_CAP_START + 68 #WM_CAP_SET_SCALE = #WM_CAP_START + 53 #WM_CAP_DLG_VIDEODISPLAY = #WM_CAP_START + 43 #WM_CAP_DLG_VIDEOFORMAT = #WM_CAP_START + 41 #WM_CAP_DLG_VIDEOSOURCE = #WM_CAP_START + 42 #WM_CAP_FILE_SAVEDIBA = #WM_CAP_START + 25 #WM_CAP_PAL_SAVEA = #WM_CAP_START + 81 #WM_CAP_FILE_SAVEASA = #WM_CAP_START + 23;sapis #WM_CAP_ABORT = #WM_CAP_START + 69 #WM_CAP_DLG_VIDEOCOMPRESSION = #WM_CAP_START + 46 #WM_CAP_SEQUENCE = #WM_CAP_START + 62;sapis If OpenWindow(0, 0, 0, 800, 600, "Video Preview", #PB_Window_SystemMenu|#PB_Window_ScreenCentered) If CreateGadgetList(WindowID(0)) ButtonGadget(1, 700, 15, 120, 20, "foto") ButtonGadget(2, 700, 35, 120, 20, "Video") ButtonGadget(3, 700, 55, 120, 20, "Video Stop") EndIf If OpenLibrary(0, "avicap32.dll") *capAddress = GetFunction(0, "capCreateCaptureWindowA") hWndC.l = CallFunctionFast(*capAddress, "My Capture Window", #WS_CHILD | #WS_VISIBLE, 0, 0, 640, 480, WindowID(0),0) SendMessage_(hWndC, #WM_CAP_DRIVER_CONNECT, 0, 0) SendMessage_(hWndC, #WM_CAP_DLG_VIDEOSOURCE, 0, 0); тут можно регулировать настройки SendMessage_(hWndC, #WM_CAP_DLG_VIDEOFORMAT, 0, 0); тут разрешение картинки, но чаще всего получается зелёный экран... ;SendMessage_(hWndC, #WM_CAP_DLG_VIDEODISPLAY, 0, 0) SendMessage_(hWndC, #WM_CAP_SET_PREVIEW, #True, 0) SendMessage_(hWndC, #WM_CAP_SET_PREVIEWRATE, 25, 0) SendMessage_(HWndC, #WM_CAP_SET_SCALE, #True, 0) EndIf EndIf ;SendMessage_(hWndC, #WM_CAP_EDIT_COPY, 0, 0) ;img.l = GetClipboardImage(#PB_Any) ;reult.l=SaveImage(img.l,"c:\test.jpg",#PB_ImagePlugin_JPEG,10) Repeat Event = WaitWindowEvent() Select Event ; /////////////////// Case #PB_Event_Gadget EventGadget = EventGadget() EventType = EventType() If EventGadget = 1 SendMessage_(hWndC, #WM_CAP_FILE_SAVEDIBA, 0, "D:\test11.bmp") ElseIf EventGadget = 2 SendMessage_(hWndC,#WM_CAP_DLG_VIDEOCOMPRESSION,0,0) SendMessage_(hWndC,#WM_CAP_SEQUENCE,0,0) SendMessage_(hWndC,#WM_CAP_FILE_SAVEASA,0,"D:\test11.avi") ; ElseIf EventGadget = 3 SendMessage_(hWndC, #WM_CAP_ABORT , 0, 0) EndIf EndSelect Until Event = #PB_Event_CloseWindow SendMessage_(hWndC, #WM_CAP_STOP, 0, 0) SendMessage_(hWndC, #WM_CAP_DRIVER_DISCONNECT, 0, 0) DestroyWindow_(hWndC) CloseLibrary(0) End |