Fonctions de Avicap32.dll
Bonjour,
Existe-t'il une fonction de AviCap32.dll du type GetCam... qui reconnaisse la ou les caméras activées ou desactivées gerées par Windows sur le PC ?
Toutes autres fonctions approchantes ne me déplairaient pas non plus...
Bonne journée à tous
la fonction capGetDrieverDescription ne convient pas
Ok pour le déplacement
Mais je viens de tester la fonction elle ne semble pas convenir.
Voici le code que j'ai testé :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| function TMainForm.WebCamExists: boolean;
var
strName,strVer: array[0..99] of char;
x: integer;
Ok: boolean;
List: TStrings;
begin
List:= TStringList.Create;
try
Ok:= True;
List.Clear;
x:=0;
while Ok do
begin
Ok:= capGetDriverDescriptionA(x, strName, 100, strVer, 100);
inc(x);
if Ok then List.Add(StrPas(StrName));
end;
result:= List.Count>0;
finally
List.Free;
end;
end; |
Problèmes :
1 ) Sur un PC équipé d'une WebCam intégrée, même en ayant pris soin de la désactiver la webcam la fonction trouve un driver et retourne true.
2 ) Sur ce même PC mais avec la webCam intégrée activée et une WebCam supplémentaire active sur un port USB il ne trouve bien sur pas 2 drivers mais toujours un
Vu ce que fait la fonction qui semble uniquement vérifier la présenece d'un driver de capture d'image La réponse aux tests 1 et 2 est logique.
Mon problème est tout autre car les lignes de code suivantes me posent problème :
Code:
1 2 3 4 5 6
| procedure TMainForm.AffichageTimer(Sender: TObject);
begin
sendmessage(hcam,1084,0,0);
sendmessage(hcam,1054,0,0);
image1.Picture.LoadFromClipboardFormat(cf_bitmap,clipboard.GetAsHandle(cf_bitmap),0);
end; |
Si aucune WebCam n'est active la troisième ligne de la procédéure retourne une erreur (Format de clipBoard non supporté), et comme elle est conduite par un timer le programme tombe dans une boucle sans fin.
Il me semble que si je pouvais détecter préalablement à l'appel de cette procédure (ou plus simplement avant d'activer le timer) si une webcam est active sur le PC le problème serait résolu. Il semble bien que la fonction capGetDrieverDescription ne soit pas la bonne solution. Exite-t'il dans AviCap32.dll une fonction qui pourrait solutionner mon problème ?