[R] Problème avec un UDF de webcam (DLL)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

[R] Problème avec un UDF de webcam (DLL)

#1

Message par matwachich »

Bonjour!
Par pitié! quelqu'un peut-il me dire ce qui ne va pas avec cet UDF (Tiré de je ne sais plus ou sur les forums anglais)
► Afficher le texte
Je m'explique:
Tout marche pour le mieu (_WebcamInit(), _Webcam(), _WebcamSnapShot()) SAUF!!! _WebcamStop() !!!
A chaque fois que j'appelle cette dernière, "Autoit3 a rencontré un problème et dois fermer ..." et la console me fait: !>01:00:10 AutoIT3.exe ended.rc:-1073741819 (Je pense que c'est du charabia mais bon...)
Je ne comprend pas!

Je peut très bien quitter le script directement sans stopper la cam, mais je veut qu'elle s'arrête sans sortir du script!

HELP PLIIIIIIIIIIIIIIIIIIIIIIZ
Modifié en dernier par matwachich le mer. 23 déc. 2009 02:39, modifié 1 fois.
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Problème avec un UDF de webcam (DLL)

#2

Message par Tlem »

Sans doute un problème sur l'appel des DLL.

Vous devriez poser votre question à la suite de ce sujet : http://www.autoitscript.com/forum/index ... t&p=505896
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Problème avec un UDF de webcam (DLL)

#3

Message par matwachich »

Quand dans _WebcamStop() j'enleve la ligne:
DllClose($avi) (qui ferme la dll avicap32.dll)
je n'ai plus l'erreur!

Mais je reste avec cette dll ouverte, j'ai cherché sur MSDN une fonction qui a peut pres ferme/arrete la "capture window" ouverte avec: (dans _Webcam($gui,...))

Code : Tout sélectionner

$cap = DllCall($avi, "int", "capCreateCaptureWindow", "str", "capture", "int", BitOR($WS_CHILD,$WS_VISIBLE), "int", $l, "int", $t, "int", $w, "int", $h, "hwnd", $gui, "int", 1)
Sans succes!

Je poste en ce moment sur le forum anglais!
Modifié en dernier par matwachich le mer. 23 déc. 2009 15:02, modifié 1 fois.
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Problème avec un UDF de webcam (DLL)

#4

Message par Tlem »

Peut être qu'il y à une erreur dans la ligne :

Code : Tout sélectionner

DllCall($user, "int", "SendMessage", "hWnd", $cap2, "int", $WM_CAP_END, "int", 0, "int", 0)
DllCall($user, "int", "SendMessage", "hWnd", $cap2, "int", $WM_CAP_DRIVER_DISCONNECT, "int", 0, "int", 0)
de la fonction _WebcamStop($cap2), car personnellement je verrais bien :

Code : Tout sélectionner

DllCall($avi, "int", "SendMessage", "hWnd", $cap2, "int", $WM_CAP_END, "int", 0, "int", 0)DllCall($avi, "int", "SendMessage", "hWnd", $cap2, "int", $WM_CAP_DRIVER_DISCONNECT, "int", 0, "int", 0)
Mais bon, je peux me tromper. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Problème avec un UDF de webcam (DLL)

#5

Message par matwachich »

Eh... merci, mais non! c'est pire: ca freez completement et jdoi fermer manuellement!

MAIS: c'est bon, j'ai trouvé:
Il faut avant d'appeler _WebcamStop() faire un GUIDelete() sur la fenetre contenant l'apercu webcam: c'est a dir, ici c'est: $gui

Je vais ajouter cette instruction dans la fonction _WebcamStop() pour ne plus avoir de problemes!!!

Merci....... [R]
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Problème avec un UDF de webcam (DLL)

#6

Message par sylvanie »

Bonsoir,
juste une petite précision sur le pourquoi du comment, même si c'est un peu tard ...

c'est le concept un peu e concept de :
1 - je prend une boîte
2 - je mets un objet dedans
3 - je détruit la boîte avec l'objet dedans
4 - je veux manipuler l'objet ??? ha bah non il n'existe plus ...

Pour revenir à l'udf, _WebcamOpen prends en argument l'handle renvoyé par Guicreate

avec Guidelete, on libère cet handle qui est déréférencé.
Or _WebcamClose lui prens en argument l'handle retourné par _WebcamOpen qui lui même dépendait du handle de la fenêtre qui vient d'être détruite.
Du coups on tente une libération sur une zone déréférencée => Crash
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [R] Problème avec un UDF de webcam (DLL)

#7

Message par matwachich »

Oui, exacte. Je saisie ta logique et je l'accepte!

Mais la apparement (sauf si j'ai mal compris) cette logique est complètement chamboulé!

Si je fait:

Code : Tout sélectionner

_webcaminit()
$gui = guicreat...
$cam = _webcam($gui...)
...
...
_webcamstop($cam)
CRASH!!!!!!!!!!!!

Alors que:

Code : Tout sélectionner

_webcaminit()
$gui = ...
$cam = _webcaminit($gui...)
...
...
guidelete($gui)
_webcamstop($cam)
Alors ca marche comme sur des roulettes!!! (testé)
Donc, on peut sans crainte dire que nos PC ne sont pas très logiques comme gars!!! :lol:

PS: désolé si j'ai pas mis le code dans les balises car je pense que c'est juste pour être claire, donc pas besoin de balises!
Modifié en dernier par matwachich le mer. 23 déc. 2009 15:01, modifié 1 fois.
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Problème avec un UDF de webcam (DLL)

#8

Message par Tlem »

Je préfère que vous les rajoutiez.
Ainsi que dans ce message : http://www.autoitscript.fr/forum/viewto ... 379#p26379

Merci
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [R] Problème avec un UDF de webcam (DLL)

#9

Message par matwachich »

Voila chef!!! :D
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [R] Problème avec un UDF de webcam (DLL)

#10

Message par sylvanie »

intéressant ... je ne suis pas parit sur la même udf, mais un ancêtre ou une parallèle très proche.
Je n'ai pas ce genre de pb avec elle, car elle préfère garder les instances des Dll actives tout au long du script au lieu de gérer une fonction init/close des dll avicap32.dll et user32.dll.
Donc en effet pas de pb.
Je reproduit le pb vec celle de ce post ; et ce comportement est plus qu'étrange ...
en attendant je mets celle que j'utilise, car elle dispose de fonctions d'enregistrement de video (mais attention à la taille du fichier avi ...) qui peuvent peut être intéresser
► Afficher le texte
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Répondre