Ver Mensaje Individual
  #2  
Antiguo 02-03-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Es una pregunta interesante, supongo que estamos hablando de una cámara web que se conecta por un usb, ya que desconectar en caliente una PCI seria una burrada .

No tengo ninguna Webcam Usb para probar, pero se me ocurre lo siguiente, listar la cámaras disponibles:
Código Delphi [-]
function capGetDriverDescription(Index: WORD; Name: PChar; cbName: Integer;
  Ver: PChar; cbVer: Integer): BOOL;  stdcall;
 external 'AVICAP32.DLL' name 'capGetDriverDescriptionA';

var
  i: integer;
  Name, Ver: array[0..1024] of Char;
begin
  for i:= 0 to 9 do
    if capGetDriverDescription(i,@Name,Sizeof(Name)-1,@Ver,Sizeof(Ver)-1) then
    begin
       // En name tenemos la descripcion (nombre) de la camara, podemos comararlo
       // con un valor conocido, o guardarlo en una lista. Tu veras ...
    end;
end.

Ahora podemos detectar que se a quitado la webcam de dos maneras, si conocemos su nombre podemos comprobar si su nombre esta en la lista, si no esta es que la han quitado. Si no conocemos su nombre creamos una lista con los nombres, si la lista cambia entre una vez y otra es que han quitado o insertado una cámara. En ambos casos, tendríamos que realizar la comprobación a intervalos regulares (100 ms por ejemplo) para detectar en momento exacto en que se desconecta la cámara.

Puede que no sea la mejor solución, pero por ahora te puede servir
Responder Con Cita