IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

Fonctions de Avicap32.dll


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut 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

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Non pas de fonction GetCam mais capGetDriverDescription.
    Avec le paramètre wDriverIndex pouvant aller de 0 à 9.

    voir MSDN: ici
    @+

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  4. #4
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Re

    As-tu regardé cette discussion où cincap donne un exemple de code utilisant cette dll ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut Ok et Merci
    J'ai trouvé comment ne pas lancer le timer si aucune webCam n'est active

    Voici comment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        hcam:=capCreateCaptureWindowA('',0, 0, 0, PICWIDTH, PICHEIGHT,handle,0);
        // Ok = Vérification de l'activité d'une WebCam
        Ok := SendMessage(hcam, WM_CAP_DRIVER_CONNECT, 0, 0) <> 0;
        if not Ok then // si aucune webcam n'est active
        begin
          Affichage.Enabled:= false;
          ShowMessage('Désolé, mais aucune WebCam n''a été détectée');
          Halt;
        end;
    Merci mille fois, je coche résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel de fonction d'une DLL en TANSAC SQL
    Par sylvain114d dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/01/2006, 10h21
  2. Réponses: 5
    Dernier message: 11/02/2005, 16h52
  3. [DLL] problème pour appeler une fonction d'une DLL
    Par bigboomshakala dans le forum MFC
    Réponses: 34
    Dernier message: 19/07/2004, 11h30
  4. [VStudio 6] pb avec fonctions dans une DLL
    Par MogDeChNord dans le forum MFC
    Réponses: 8
    Dernier message: 08/01/2004, 08h57
  5. [VB6] Ajouter un commentaire à une fonction d'une DLL
    Par Ace303 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 05/06/2003, 08h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo