Dans mon appli, j'ai inséré une synthèse vocale. Le problème est que tant
que le programme annonce le message, aucun autre traitement ne peut se
faire.
Exemple : lors de l'ouverture d'une fiche client, le programme annonce le
nom du client et une fois qu'il a fini de parler, la fiche s'affiche
Pour faire en sorte que la fiche s'ouvre pendant que le programme parle,
j'ai décidé d'utiliser les threads.
Je fais donc :
ThreadExécute("ThreadMessage",threadNormal,"MsgVocal",CLIENTS.NomClient)
Le première fois où l'on ouvre une fiche, ça marche nickel, mais dès qu'on
ferme et qu'on veut ouvrir une autre fiche, le programme plante avec comme
message d'erreur : "L'objet automation 'sapi.SPVOICE' n'est pas installé sur
votre système."
Pour info, voici ma procédure "MsgVocal"
----------------------------------------------------
PROCEDURE MsgVocal(sMessage)
Voice est un objet OLE dynamique
Voice = allouer un objet OLE("sapi.SPVOICE")
Voice>>Speak(sMessage)
-----------------------------------------------------
J'ai essayé de mettre un "ThreadArrete" à la fin de la procédure, mais ça ne
change rien.
Si quelqu'un a une idée, ça m'arrangerait bien.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
patrice
"Darwin" a écrit dans le message de news:450ee676$0$25944$
Pour info, voici ma procédure "MsgVocal" ---------------------------------------------------- PROCEDURE MsgVocal(sMessage) Voice est un objet OLE dynamique Voice = allouer un objet OLE("sapi.SPVOICE") Voice>>Speak(sMessage) -----------------------------------------------------
J'ai essayé de mettre un "ThreadArrete" à la fin de la procédure, mais ça
ne
change rien. Si quelqu'un a une idée, ça m'arrangerait bien.
Merci d'avance.
et en ajoutant un "libérer" à la fin ?
"Darwin" <philippehusson@wanadoo.fr> a écrit dans le message de
news:450ee676$0$25944$ba4acef3@news.orange.fr...
Pour info, voici ma procédure "MsgVocal"
----------------------------------------------------
PROCEDURE MsgVocal(sMessage)
Voice est un objet OLE dynamique
Voice = allouer un objet OLE("sapi.SPVOICE")
Voice>>Speak(sMessage)
-----------------------------------------------------
J'ai essayé de mettre un "ThreadArrete" à la fin de la procédure, mais ça
ne
change rien.
Si quelqu'un a une idée, ça m'arrangerait bien.
"Darwin" a écrit dans le message de news:450ee676$0$25944$
Pour info, voici ma procédure "MsgVocal" ---------------------------------------------------- PROCEDURE MsgVocal(sMessage) Voice est un objet OLE dynamique Voice = allouer un objet OLE("sapi.SPVOICE") Voice>>Speak(sMessage) -----------------------------------------------------
J'ai essayé de mettre un "ThreadArrete" à la fin de la procédure, mais ça
ne
change rien. Si quelqu'un a une idée, ça m'arrangerait bien.
Merci d'avance.
et en ajoutant un "libérer" à la fin ?
Darwin
Salut, merci pour ta réponse. Je viens de tester "Libérer Voice", mais rien de mieux. Merci quand même pour ta suggestion, et si tu as d'autres idées, ne te gêne surtout pas.
"Darwin" a écrit dans le message de news: 450ee676$0$25944$
Bonjour,
Dans mon appli, j'ai inséré une synthèse vocale. Le problème est que tant que le programme annonce le message, aucun autre traitement ne peut se faire. Exemple : lors de l'ouverture d'une fiche client, le programme annonce le nom du client et une fois qu'il a fini de parler, la fiche s'affiche Pour faire en sorte que la fiche s'ouvre pendant que le programme parle, j'ai décidé d'utiliser les threads. Je fais donc : ThreadExécute("ThreadMessage",threadNormal,"MsgVocal",CLIENTS.NomClient)
Le première fois où l'on ouvre une fiche, ça marche nickel, mais dès qu'on ferme et qu'on veut ouvrir une autre fiche, le programme plante avec comme message d'erreur : "L'objet automation 'sapi.SPVOICE' n'est pas installé sur votre système."
Pour info, voici ma procédure "MsgVocal" ---------------------------------------------------- PROCEDURE MsgVocal(sMessage) Voice est un objet OLE dynamique Voice = allouer un objet OLE("sapi.SPVOICE") Voice>>Speak(sMessage) -----------------------------------------------------
J'ai essayé de mettre un "ThreadArrete" à la fin de la procédure, mais ça ne change rien. Si quelqu'un a une idée, ça m'arrangerait bien.
Merci d'avance.
Salut, merci pour ta réponse.
Je viens de tester "Libérer Voice", mais rien de mieux.
Merci quand même pour ta suggestion, et si tu as d'autres idées, ne te gêne
surtout pas.
"Darwin" <philippehusson@wanadoo.fr> a écrit dans le message de news:
450ee676$0$25944$ba4acef3@news.orange.fr...
Bonjour,
Dans mon appli, j'ai inséré une synthèse vocale. Le problème est que tant
que le programme annonce le message, aucun autre traitement ne peut se
faire.
Exemple : lors de l'ouverture d'une fiche client, le programme annonce le
nom du client et une fois qu'il a fini de parler, la fiche s'affiche
Pour faire en sorte que la fiche s'ouvre pendant que le programme parle,
j'ai décidé d'utiliser les threads.
Je fais donc :
ThreadExécute("ThreadMessage",threadNormal,"MsgVocal",CLIENTS.NomClient)
Le première fois où l'on ouvre une fiche, ça marche nickel, mais dès qu'on
ferme et qu'on veut ouvrir une autre fiche, le programme plante avec comme
message d'erreur : "L'objet automation 'sapi.SPVOICE' n'est pas installé
sur votre système."
Pour info, voici ma procédure "MsgVocal"
----------------------------------------------------
PROCEDURE MsgVocal(sMessage)
Voice est un objet OLE dynamique
Voice = allouer un objet OLE("sapi.SPVOICE")
Voice>>Speak(sMessage)
-----------------------------------------------------
J'ai essayé de mettre un "ThreadArrete" à la fin de la procédure, mais ça
ne change rien.
Si quelqu'un a une idée, ça m'arrangerait bien.
Salut, merci pour ta réponse. Je viens de tester "Libérer Voice", mais rien de mieux. Merci quand même pour ta suggestion, et si tu as d'autres idées, ne te gêne surtout pas.
"Darwin" a écrit dans le message de news: 450ee676$0$25944$
Bonjour,
Dans mon appli, j'ai inséré une synthèse vocale. Le problème est que tant que le programme annonce le message, aucun autre traitement ne peut se faire. Exemple : lors de l'ouverture d'une fiche client, le programme annonce le nom du client et une fois qu'il a fini de parler, la fiche s'affiche Pour faire en sorte que la fiche s'ouvre pendant que le programme parle, j'ai décidé d'utiliser les threads. Je fais donc : ThreadExécute("ThreadMessage",threadNormal,"MsgVocal",CLIENTS.NomClient)
Le première fois où l'on ouvre une fiche, ça marche nickel, mais dès qu'on ferme et qu'on veut ouvrir une autre fiche, le programme plante avec comme message d'erreur : "L'objet automation 'sapi.SPVOICE' n'est pas installé sur votre système."
Pour info, voici ma procédure "MsgVocal" ---------------------------------------------------- PROCEDURE MsgVocal(sMessage) Voice est un objet OLE dynamique Voice = allouer un objet OLE("sapi.SPVOICE") Voice>>Speak(sMessage) -----------------------------------------------------
J'ai essayé de mettre un "ThreadArrete" à la fin de la procédure, mais ça ne change rien. Si quelqu'un a une idée, ça m'arrangerait bien.
Merci d'avance.
patrice
"Darwin" a écrit dans le message de news:45102ade$0$27366$
Salut, merci pour ta réponse. Je viens de tester "Libérer Voice", mais rien de mieux. Merci quand même pour ta suggestion, et si tu as d'autres idées, ne te
gêne
surtout pas.
essaie peut être d'avoir un seul thread (jamais fermé) pour gérer ton objet voice (et ainsi de l'allouer une sule fois)
pseudo code:
thread: allouer voice boucle sans fin lecture_bloquante_prochain_message(msg) jouer msg finboucle
"Darwin" <philippehusson@wanadoo.fr> a écrit dans le message de
news:45102ade$0$27366$ba4acef3@news.orange.fr...
Salut, merci pour ta réponse.
Je viens de tester "Libérer Voice", mais rien de mieux.
Merci quand même pour ta suggestion, et si tu as d'autres idées, ne te
gêne
surtout pas.
essaie peut être d'avoir un seul thread (jamais fermé) pour gérer ton objet
voice (et ainsi de l'allouer une sule fois)
pseudo code:
thread:
allouer voice
boucle sans fin
lecture_bloquante_prochain_message(msg)
jouer msg
finboucle
"Darwin" a écrit dans le message de news:45102ade$0$27366$
Salut, merci pour ta réponse. Je viens de tester "Libérer Voice", mais rien de mieux. Merci quand même pour ta suggestion, et si tu as d'autres idées, ne te
gêne
surtout pas.
essaie peut être d'avoir un seul thread (jamais fermé) pour gérer ton objet voice (et ainsi de l'allouer une sule fois)
pseudo code:
thread: allouer voice boucle sans fin lecture_bloquante_prochain_message(msg) jouer msg finboucle