Aha, děkuji, to mne nenapadlo ale jak to tak popisujete dává to smysl, asi to není úplně optimalizované, ale zkopíroval jsem z FindCaptureDevice funkce, vše co se zdálo podstatné pro to abych měl source k dispozici, můj kód nyní vypadá na tlačítku nějak takto
Dim hr As Integer = 0
Dim classEnum As IEnumMoniker = Nothing
Dim moniker As IMoniker() = New IMoniker(0) {}
Dim source As Object = Nothing
Dim devEnum As ICreateDevEnum = CType(New CreateDevEnum, ICreateDevEnum)
hr = devEnum.CreateClassEnumerator(FilterCategory.VideoInputDevice, classEnum, 0)
Debug.WriteLine("Create an enumerator for the video capture devices : " & DsError.GetErrorText(hr))
DsError.ThrowExceptionForHR(hr)
Marshal.ReleaseComObject(devEnum)
If classEnum Is Nothing Then
Throw New ApplicationException("No video capture device was detected.\r\n\r\n" & _
"This sample requires a video capture device, such as a USB WebCam,\r\n" & _
"to be installed and working properly. The sample will now close.")
End If
If classEnum.Next(moniker.Length, moniker, IntPtr.Zero) = 0 Then
Dim iid As Guid = GetType(IBaseFilter).GUID
moniker(0).BindToObject(Nothing, Nothing, iid, source)
Else
Throw New ApplicationException("Unable to access video capture device!")
End If
Marshal.ReleaseComObject(moniker(0))
Marshal.ReleaseComObject(classEnum)
'POKUS
Dim iamcc As IAMCameraControl = source
MsgBox(iamcc.Get(CameraControlProperty.Exposure, 60, CameraControlFlags.Auto))
Dim camExposure = InputBox("Zadejte expozici:", "Expozice", "")
iamcc.Set(CameraControlProperty.Exposure, 60, CameraControlFlags.Auto)
'--------------
už mne trápí jen jediná věc a to, že -2147023728, což to vypisuje asi nebude signalizace správného kódu, jednak se to číslo nepodobá ničemu v čem by se dala zadat expozice a jednak při pokusu ji přepsat pomocé toho inputboxu mne to opět vyhodí po znovuzmíčknutí tlačítka stejnou zápornou hodnotu, napadá mne, zda není nějaký problém způsobený deklarací všeho co jsem pojmul z toho FindCaptureDevice ale na druhou stranu, jsem si relativně jist, že si zařízení svá nastavení pamatuje a deklarace by neměla nic resetovat ale pokud se pletu tak mne opravte. Omlouvám se, že stále otravuji, v této oblasti jsem relativně nováčkem ale pokouším se učit :) Pokud vás napadá, čím by mohlo být způsobeno toto, byl bych vám vděčný.
|