Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Wrapper autour de KGF.dll par procédures | |
| | |
Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 5 Oct 2012 - 21:27 | |
| Heureux d'avoir fait avancer le schmilblick... Edit : je viens de passer les fonctions du player, tout fonctionne chez moi ! | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Wrapper autour de KGF.dll par procédures Ven 5 Oct 2012 - 21:55 | |
| Merci Klaus J’ai rechargé ,mais je n’ai pas trouvé sur ton WebDav le fichier KGF.HLP. J’en ai un provenant d’un telechargement anterieur. J’ai tout mis dans un même repertoire. Pour KGF.HLP, j’ai dû indiquer le chemin complet. J’ai lancé RUN et !!! MIRACLE TOUT MARCHE A MERVEILLE !!!. Même Mikey.bas était au rendez-vous. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Ven 5 Oct 2012 - 22:08 | |
| Super ! Merci, Papydall, pour ta persévérance !
J'étudie l'utilisation de fichiers *.CHM, en plus des *.HLP. C'est en cours. | |
| | | Invité Invité
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 0:23 | |
| J'essaye d' envoyer un message à un autre programme, mais je n'arrive pas à comprendre comment procéder avec les sub. Je veux au moyen d'un edit, donner les informations pour soit donner le nom d'un fichier, ou de prendre le contenu du presse papier ou autre à un loader, et là comme cela je ne comprend pas. C'est à dire à partir d'un programme Panoramic, envoyer le message à un autre Panoramic compilé. Je sais le faire de façon habituelle, mais si je rajoute l'include de sub, cela me paraissais plus intelligent de procéder ainsi. Ce qui veut dire le principe de celui qui l'envoi, et le principe de celui qui reçoit, sans qu'il y ait le besoin d'un accusé-réception ou d'aller-retour avec IPC. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 0:38 | |
| @Cosmos70: 1. dans le programme qui reçoit, tu déclares la boite à lettres (BAL) par un EDIT qui peut être caché et qui a un TOP et un LEFT négatif. C'est cette valeur qui sert d'identificatif (d'adresse postale). Exemple: - Code:
-
' récepteur.bas label reception : ' on va ici sur réception d'un message dans la BAL dim ID% : ID% = 0 - 1789 : ' c'est l'adresse de la BAL dim message_recu$ EDIT 100 : ' c'est la BAL (le numéro d'objet n'a aucune importance TOP 100,ID% : left 100,ID% : ' par contre, ceci est essentiel ! on_change 100,reception ... reception: message_recu$ = text$(100) ' traiter le message ici return
Dans le programme expéditeur, il faut, au début, récupérer le handle de la BAL du récepteur. C'est la fonction IPCGetHandle qui fait cela: - Code:
-
dim ID% : ID% = 0 - 1789 : ' c'est l'adresse de la BAL dim dest$ : dest$ = "Caption de la form 0 du destinataire" ... ' au début, il faut repérer la BAL du destinataire: IPCGetHandle(dest$,ID%) : ' récupérer le handle de la BAL ... ' pour envoyer un message: ' la fonction IPGGetHandle a défini la variable IPCGetHandle% ! IPCSendMessage("Mon message",IPCGetHandle%) ' et c'est tout! ...
| |
| | | Invité Invité
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 0:43 | |
| Merci Klaus, depuis j'ai à peu-près retrouvé les lignes. Je vais étudier cela de prêt. Cela va prendre un peu de temps, j'ai un module à faire aussi et ensuite essayer. |
| | | Invité Invité
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 12:17 | |
| Je n'y arrive pas. J'ai fais un programme provisoire de réception avec le minimum: (il me semble qu'il n'est pas nécessaire d'y ajouter la dll et les sub. Si je me souvient bien, l'expéditeur écrit directement dans l'edit) - Code:
-
rem lanceur pour pagiciel caption 0,"EXÉCUTION DU PROGRAMME" :height 0,50 ' il faut un edit placé en -1234 de réception dim message_recu$ label reception ' il me semble pas qu'il soit nécessaire de lancer la dll, mais je le fais. KGF_initialize("c:\PANO\DLL\DLLs\KGF.dll") EDIT 1:LEFT 1,-1234:TOP 1,-1234 ON_CHANGE 1,reception end ' insert kgf' #include |3| ' ==============================================================================' reception: message "le text a changé" message_recu$ = text$(1) ' traitement: message message_recu$ terminate return et pour les essais un programme d'envoi que je lance une fois le premier présent: - Code:
-
rem le programme de réception est déjà lancé manuellement avant dim dll$ :left 0,500:height 0,50 dll$ = "c:\PANO\DLL\DLLs\KGF.dll" KGF_initialize(dll$) envoi("ceci est un essai")
END sub envoi(mess$) dim_local i% , dest$ i% = 0 - 1234 dest$ = "EXÉCUTION DU PROGRAMME" :' caption du programme visé. IPCGetHandle(dest$,i%) : message ipcgethandle% wait 500 IPCSendMessage(mess$,IPCGetHandle%) end_sub ' charger KGF.dll #include |3| J'ai l'impression que le handle de l'edit n'est pas reconnu. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 12:26 | |
| @Cosmos70: Je vais regarder ton problème.
@Tous: Nouvelle fonction dans KGF.dll: SpeakVoices. Cette fonction retourne la liste des voix installlées, dans une chaîne de caractères. Du coup, KGF.dll change de version: 1.66 06/10/2012 ajout fonction SpeakVoices, correction d'un bug avec LoadProgramMinimized
KGF_SUB.bas et demo_KGF_SUB.bas sont adaptés (fonction 179). La procédure est SpeakVoices(). La doc est mise à jour aussi (rubrique du texte prononcé). | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 13:12 | |
| @Cosmos70: Ca marche parfaitement ! Seulement, comme tu lances le programme émetteur à partir de l'éditeur, la fenêtre de celui-ci te cache les fenêtres de message ouvertes par ton programme de réception, et tu as l'impression qu'on attend quelque chose, alors que ce n'est pas le cas. Réduis la fenêtre de l'éditeur IMMEDIATEMENT après avoir lancé ton programme émetteur, ou comiple-le en EXE, tu tu verras qu'il n'y a pas de problème. En passant, je te confirme que le programme purement récepteur n'a absolument pas besoin de KGF.dll ni du include de KGF_SUB.bas. Voici le code "épurée": - Code:
-
rem lanceur pour pagiciel caption 0,"EXÉCUTION DU PROGRAMME" :height 0,50 ' il faut un edit placé en -1234 de réception dim message_recu$ label reception EDIT 1:LEFT 1,-1234:TOP 1,-1234 ON_CHANGE 1,reception end ' ==============================================================================' reception: message "le text a changé" message_recu$ = text$(1) ' traitement: message message_recu$ terminate return
En tout cas, ton code est bon - tu as parfaitement compris le principe pour ces fonctions. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 15:48 | |
| Petite précision pour la nouvelle fonction SpeakVoices: Elle retourne une chaîne de caractères contenant la liste des voix installées. Chaque voix est sur une ligne terminée par CR LF. On peut donc faire ITEM_ADD de cette chaîne de caractères, directement dans un MEMO, et utiliser ensuite chaque ligne. Pour l'ajouter dans un COMBO, LIST ou DLIST, il faut séparer les lignes. Cela peut se faire comme dans l'exemple ci-dessous, par exemple. Il suffit de faire HIDE 10 pour n'avoir que la COMBO. Un exemple d'un sélecteur de voix: - Code:
-
KGF_initialize("KGF.dll")
dim i% memo 10 : top 10,10 : left 10,10 : width 10,500 combo 11 : top 11,10 : left 11,220 : width 10,200
SpeakVoices() : ' cette fonction crée automatiquement la variable SpeakVoices$ item_add 10,SpeakVoices$ : ' la combo contient la liste des voix for i%=1 to count(10) item_add 11,item_read$(10,i%) next i%
end
#INCLUDE "KGF_SUB.bas"
Voici une procédure qui crée et affiche un sélecteur de voix sous forme de combo: - Code:
-
KGF_initialize("KGF.dll")
dim i%
SelecteurDeVoix(11,12,10,20,200)
end
sub SelecteurDeVoix(n_combo%,n_temp%,haut%,gauche%,large%) combo n_combo% : top n_combo%,haut% : left n_combo%,gauche% : width n_combo%,large% memo n_temp% : width n_temp%,500 : hide n_temp% SpeakVoices() : ' cette fonction crée automatiquement la variable SpeakVoices$ item_add n_temp%,SpeakVoices$ : ' le memo contient la liste des voix for i%=1 to count(n_temp%) item_add n_combo%,item_read$(n_temp%,i%) next i% delete n_temp% end_sub
#INCLUDE "KGF_SUB.bas"
Et voici un programme qui prononce un texte saisi, avec le choix de la voix, de la vitesse et du volume: - Code:
-
' Demo_SelecteurDeVoix.bas
label prononcer
KGF_initialize("KGF.dll")
dim i%
alpha 10 : top 10,10 : left 10,10 : caption 10,"Voix installées:" ' *************** création su sélecteur ************************** SelecteurDeVoix(11,12,10,100,200) ' **************************************************************** alpha 20 : top 20,40 : left 20,10 : caption 20,"Volume:" scroll_bar 21 : top 21,40 : left 21,100 : width 21,200 min 21,0 : max 21,100 : position 21,50 alpha 30 : top 30,70 : left 30,10 : caption 30,"Vitesse:" scroll_bar 31 : top 31,70 : left 31,100 : width 31,200 min 31,0 : max 31,20 : position 31,10 alpha 40 : top 40,100 : left 40,10 : caption 40,"Texte:" memo 41 : top 41,100 : left 41,100 : width 41,400 button 50 : top 50,200 : left 50,100 : caption 50,"Prononcer" on_click 50,prononcer
end
prononcer: if item_index(11)=0 message "Il faut sélectionner une langue" return end_if ' *************** prononcer le texte ***************************** Speak(text$(41),position(21),position(31)-10,item_index(11)) ' **************************************************************** return
sub SelecteurDeVoix(n_combo%,n_temp%,haut%,gauche%,large%) combo n_combo% : top n_combo%,haut% : left n_combo%,gauche% : width n_combo%,large% memo n_temp% : width n_temp%,500 : hide n_temp% ' *************** charger la liste des voix installées *********** SpeakVoices() : ' cette fonction crée automatiquement la variable SpeakVoices$ ' **************************************************************** item_add n_temp%,SpeakVoices$ : ' le memi contient la liste des voix for i%=1 to count(n_temp%) item_add n_combo%,item_read$(n_temp%,i%) next i% delete n_temp% end_sub
#INCLUDE "KGF_SUB.bas"
Dernière édition par Klaus le Sam 6 Oct 2012 - 22:45, édité 10 fois | |
| | | Invité Invité
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 15:50 | |
| Le déplassement des fenêtres, et autres, je l'avais fait. J'ai regardé de nouveau, mais rien de rien. En enlevant tout ce que je peux de la fenêtre le message de vient pas. Est-ce normal, qu'en mettant: - Code:
-
message ipcgethandle% , le résultat soit "0" |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 16:02 | |
| Le résultat est 0 si le programme récepteur n'est pas lancé. Ton programme marche tel qu'il est. Ajoute un PAUSE 1000 juste après la ligne "KGF_initialize(dll$)". Lance le récepteur (en EXE), puis lance l'émetteur (par l'éditeur) et réduis l'éditeur dans la barre de tâches. Tu verras que ça marche. Ou, mieux encore, compile l'émetteur en EXE et lance d'abord le récepteur, puis l'émetteur à partir de l'EXE. Plus de problème. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 17:03 | |
| Juste pour info: sur la page précédente, j'ai édité mon post pour actualiser le sélecteur de voix et pour ajouter un programme qui prononce un texte à saisir, avec le choix de la voix, de la vitesse et du volume. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 6 Oct 2012 - 17:20 | |
| Petit souci avec Pierre Pierre a du prendre des hormones, il a la même voix que virginie... Edit : j'ai pensé que cela était peut être du au fait que la voix d' anna était sur deux lignes et que c'était donc un problème d'item dans le combo mais j'ai beau rallonger ce dernier, anna est toujours sur deux lignes. virginie - ok! anna - ok! véronique - ok! pierre = virginie Edit 2 : Si on sélectionne le bout de Anna qui est placé ( on ne sait pourquoi dans l'item suivant ) on a la voix de Pierre ce Pb d'affichage d'Anna provoque un décalage dans les items Chez moi : En visuel, Item 1 > Virginie Item 2 > LH Véronique Item 3 > Microsoft Anna....... Item 4 > ....(bout restant de Anna) Item 5 > LH Pierre sauf que pour avoir la voix de pierre il faut sélectionner le bout restant de Anna en Item 4 alors que visuellement il est en Item 5
Dernière édition par ygeronimi le Sam 6 Oct 2012 - 17:46, édité 1 fois | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 17:46 | |
| Chez moi, c'est: 1: Virginie 2: Véronique 3: Sam 4: Pierre Et tout est OK
Dans la fonction Speak, on passe le numéro de la langue en dernier paramètre. Si cette valeur est 0, on utilise la langue nstallée comme langue par défaut (Panneau de configuration/Voix). Chez moi, c'est Virginie. Eh oui, c'est la plus belle, il n'y a pas photo !
Sam est une voix américaine fournie par MicroSoft. C'est drôle cinq minutes: on dirait un américain sans aucune connaissance du français, qui lit un texte phonétiquement à l'américaine. Mais c'est bien sûr inexplotable. Si par contre tu veux faire prononcer un texte en anglais, c'est parfait.
Pierr est Pierre, chez moi, solide comme un rock... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 6 Oct 2012 - 17:49 | |
| cf edit du message précédent.
Aurais tu mis un format d' entrée style string$(255," ") qui coupe le titre de Anna ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 17:56 | |
| Dans KGF_SUB.bas, à la ligne 1230, il y a effectivement un string$(255," "). Peux-tu remplacer le 255 par une valeur plus grande, pour vérifier ? 2000, par exemple ?
EDIT
N'oublie pas de réenregistrer après la modif, avant d'exécuter ton programme... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 6 Oct 2012 - 18:12 | |
| J' avais retrouvé le truc mais même à 2000 l' item d'Anna est coupé et le bout restant est mis à la ligne soit visuellement en Item 4.
voilà l' Item de Anna :
3: Microsoft Anna - English (United States)
J' ai rallongé le combo - rien! J' ai string$(2000," ") - rien! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 18:31 | |
| Alors passe la largeur de la combo à 300 ou 400: 5ème paramètre à la ligne 11 de DemoSelecteurDeVoix.bas.
La ligne est coupée si le récipient n'est pas assez large. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 18:46 | |
| - Klaus a écrit:
- Chez moi, c'est:
1: Virginie 2: Véronique 3: Sam 4: Pierre Et tout est OK
Chez moi aussi, c’est exactement kifkif. J’ai leur fais lire un texte avec seulement des voyelles (exemple : aaa ooo iii eee uuu ma ma ma me me me mi mi mi mo mo mo) C’est très drôle ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 6 Oct 2012 - 18:59 | |
| J'ai mis 500 rien n' à faire, il reste coupé je me demande si c'est pas le combo lui même qui limité en taille de l' item | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 19:09 | |
| Non. Tu peux mettre des strings très longs dans un combo, il n'y a aucun renvoi à la ligne. Regarde ceci: - Code:
-
combo 1 : width 1,200 dim s$ : s$ = "123456789." dim i% for i%=1 to 10 s$ = s$ + s$ next i% message str$(len(s$)) item_add 1,s$ end
plus de 10000 caractères, et tout est dans la même ligne. As-tu bien pris demo_SelecteurDeVoix.bas ? | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 6 Oct 2012 - 19:28 | |
| Oui, je suis sur Demo_SelecteurDeVoix.bas - Code:
-
SelecteurDeVoix(11,12,10,100,500) KGF_Sub.bas - Code:
-
sub SpeakVoices() if variable("SpeakVoices$")=0 then dim SpeakVoices$ SpeakVoices$ = string$(2000," ") KGF_res% = DLL_call1("SpeakVoices",adr(SpeakVoices$)) SpeakVoices$ = trim$(SpeakVoices$) end_sub KGF.dll 1.66 PS j'arrive pas à faire une capture avec le combo déplié, grrrr...) | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Wrapper autour de KGF.dll par procédures Sam 6 Oct 2012 - 19:37 | |
| Alors, remplace le mot combo par memo...
Mais S'IL TE PLAIT: utilise demo_SelecteurDeVoix.bas !!!!!!!!!!!
Ce programme montre comment charger la combo à partir de la chaine retournée par SpeakVoices. Tu ne peux PAS le mettre directement dans un COMBO, seulement dans un MEMO ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 6 Oct 2012 - 19:56 | |
| @ Klaus, Mais j'utilise tes deux fichiers, j'ai juste mis les modifs pour pas faire de surcharge sur le forum. Autres choses, j'ai essayé de réduire l'item dans le combo à 20 caractères pour voir si l'affichage changeait. et là : 1: ScanSoft Virginie 2: LH Veronique 3: Microsoft Anna - States) 4: LH Pierre curieux non ?! sauf que les noms de voix passent en stockage avant d'attérir dans le combo et je pense que c'est dans ce stockage que le retour chariot ce fait et après la boucle renvoi la coupure - Code:
-
sub SelecteurDeVoix(n_combo%,n_temp%,haut%,gauche%,large%) dim_local S$ : ' Modif YG combo n_combo% : top n_combo%,haut% : left n_combo%,gauche% : width n_combo%,large% memo n_temp% ' *************** charger la liste des voix installées *********** SpeakVoices() : ' cette fonction crée automatiquement la variable SpeakVoices$ ' **************************************************************** item_add n_temp%,SpeakVoices$ : ' le memi contient la liste des voix for i%=1 to count(n_temp%) S$=item_read$(n_temp%,i%) : ' Modif YG if len(S$)>20 then S$=left$(S$,20): ' Modif YG item_add n_combo%,S$ next i% delete n_temp% end_sub | |
| | | Contenu sponsorisé
| Sujet: Re: Wrapper autour de KGF.dll par procédures | |
| |
| | | | Wrapper autour de KGF.dll par procédures | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |