예제 #1
0
        public bool Connect()
        {
            // If we're already connected, then simply return
            if (fIsConnected)
                return fIsConnected;

            fIsConnected = capDriverConnect();
            if (!fIsConnected)
                throw new Exception("VfwCaptureDevice - Connection to device failed");

            // Get the driver capabilities
            fDriverCapabilities = new CAPDRIVERCAPS();
            bool gotDriverCaps = capDriverGetCaps(ref fDriverCapabilities);

            // Finally allow a subclasser to do something special
            // upon connection.
            OnConnected();

            capGetStatus(ref fCaptureStatus);
            StringBuilder sb = new StringBuilder(100);
            StringBuilder sbVersion = new StringBuilder(100);

            capDriverGetName(sb, 100);
            capDriverGetVersion(sbVersion, 100);
            fDeviceDriver = new VfwDeviceDriver(sb.ToString(), sbVersion.ToString());

            return fIsConnected;
        }
예제 #2
0
        public void Refresh()
        {
            string name = "".PadRight(100), version = "".PadRight(100);

            for (short i = 0; i < gmaxDevices; i++)
            {
                if (AviCap32.capGetDriverDescription(i, ref name, 100, ref version, 100))
                {
                    VfwDeviceDriver d = new VfwDeviceDriver(name, version);
                    d.Name = name.Trim();
                    d.Version = version.Trim();
                    devices.Add(d);
                }
            }
        }