| Wrapper autour de KGF.dll par procédures | |
|
|
|
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Wrapper autour de KGF.dll par procédures Mer 3 Oct 2012 - 10:19 | |
| J'ai fait un "wrapper" autour de KGF.dll. Ceci est un module 100 % Panoramic qui permet d'utiliser KGF.dll sans JAMAIS avoir à utiliser les commandes DLL_ON, DLL_CALLx etc. On n'a pas à se préoccuper des ADR(). Chaque fonction de KGF.dll est accessible par une ou plusieurs procédures écrites en Panoramic qui "enveloppent" l'appel de la fonction. Si la fonction concernée retourne une valeur, celle-ci est disponible dans une variable du même nom que la fonction, éventuellement avec un % ou $ derrière. Juste un exemple: - Code:
-
s$ = "Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Août," s$ = s$ + "Septembre,Octobre,Novembre,Décembre"
ItemIndexInString(s$,",","Avril")
if ItemIndexInString%=0 message "Sous-chaîne non trouvée" else message "[Avril] est le "+str$(ItemIndexInString%)+"e mois dans ["+s$+"]" end_if Cela se présente sous forme d'un fichier KGF_SUB.bas qu'on ajoute à la fin du programme, de la manière suivante: - Code:
-
#INCLUDE "KGF_sub.bas" Il n'y a rien d'autre à faire. Avant toute utilisation des procédures, il faut faire une fois: - Code:
-
KGF_initialize("KGF.dll")
en adaptant éventuellement le chemin vers KGF.dll. Ensuite, toutes les fonctions sont accessibles. Il y a actuellement 177 procédures disponibles ! Il y a un programme demo_KGF_SUB.bas qui montre un exemple exécutable pour chacune de ces procédures. Une combo permet de sélectionner la procédure, puis un clique sur le bouton "Tester". Le source de ce programme peut servir de mode d'emploi. Tout est mis à disposition sur MyDrive, dossier DLLs, sous-dossier KGF_SUB. Des corrections de bugs mineurs ont été apportées à KGF.dll. Du coup, la version passe à 1.64 28/09/2012 diverses correctionsLa doc a été corrigée et actualisée également. Et une nouvelle fonction: SetSpeaker(mode%) qui permet d'éteindre ou d'allumer le haut-parleur ! 1.65 03/10/2012 ajout fonction SetSpeaker | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 3 Oct 2012 - 15:21 | |
| J' me disais aussi...çà fait un moment qu'on ne voit plus Klaus, il doit être entrain de nous faire un avion à réaction en panoramic... ben voilà ! c'est fait ! Bravo Klaus ! | |
|
| |
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 Mer 3 Oct 2012 - 17:31 | |
| Est-ce que tu as vu que tu peux maintenant très facilement faire des message d'erreur ou des annonces, par voix parlée ? Il suffit de s'assurer que le haut_parleur est allume, et d'envoyer le texte: - Code:
-
SetSpeaker(1) Speak("Bonjour. Je vous parle d'outre-tombe !",100,0,0) Sympa, non ? | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Wrapper autour de KGF.dll par procédures Mer 3 Oct 2012 - 17:32 | |
| Je teste ça ce soir. Encore une bonne idée Klaus | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: RE Mer 3 Oct 2012 - 19:39 | |
| J ai pas encore testé mais...çà peut être rigolo Reste à savoir si W7 va l'accepter ... | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 3 Oct 2012 - 20:00 | |
| Là je ne suis plus du tout... tu passes par ton KGF_sub.bas ? - Code:
-
dim res%
dll_on "KGF.dll" res% = DLL_call1("SetSpeaker",1) message str$(res%) dll_off res%=0 même avec le haut parleur actif edit :KGF_Sub.bas : très bien Nouvelle fonction setspeaker : ok mais ce serait bien que dans la doc de la fonction soit l'exemple de demo_KGF_Sub.bas dans le cadre d'une utilisation sans le fichier KGF_Sub.bas ( c'est à dire une utilisation normale ) la j'ai droit à un sub incorrect si je n'utilise pas KGF_Sub.bas et je ne retrouve pas le sub speak() dans le dit fichier. | |
|
| |
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 Mer 3 Oct 2012 - 22:15 | |
| Tu peux toujours utiliser KGF.dll tel que c'est décrit dans la doc: par des appels "dll_callx("fonction",p1%,...,px%). rien de changé à ce niveau. Il faut alors utiliser ADR() pour les chaînes de caractères, les paramètres en sortie, etc. KGF_SUB apporte une autre façon d'utiliser KGF.dll. Plus de dll_callx, plus de ADR(), simplement des appels à des procédures auxquelles on passe les paramètres simplement. C'est particulièrement intéressant pour les fonctions dont le paramétrage est complexe, comme ShowMessageModalEX par exemple, ou WriteTextOverPicture. Dans ce dernier cas, il n'y a plus la nécessité de recourir à ConfigureCurveWToP pour gérer la courbe selon laquelle le texte sera écrit. Mais surtout, cela crée une syntaxe beaucoup plus lisible et facile à écrire; et c'est en cela que c'est important. Cela ramène l'utilisation KGF.dll (presque) à des commandes de Panoramic. La seule contrainte, comme je l'ai indiqué dans mon premier post, c'est inclure la ligne - Code:
-
#INCLUDE "KGF_SUB.bas" comme dernière ligne de ton programme. C'est tout. Bien sûr, si tu ne le fais pas, cela ne marche pas. Prochainement, il y aura une documentation spécifique à cette technique. Pour le moment, demo_KGF_SUB.bas sert de "maquette" pour l'utilisation des procédures. | |
|
| |
Invité Invité
| Sujet: Re: Wrapper autour de KGF.dll par procédures Mer 3 Oct 2012 - 22:32 | |
| Ton Wapper, c'est une chose que je voulais te suggérer depuis quelques temps, mais je te savais occupé, et c'est justement ce que tu faisais. Le mot Wapper je ne connaissais pas. J'ai voulu faire l'essai de speak, mais j'ai un message d'erreur. erreur dans une fonction 2831. Je vais voir avec mon loader qui assemble les includes, la ligne correspondante: Et bien c'est : - Code:
-
KGF_res% = DLL_call1("SetSpeaker",mode%) |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 3 Oct 2012 - 23:23 | |
| @ Klaus, Le truc c'est que je ne retrouvais pas la fonction qui fait coser la machine alors que je m'attendais à la trouver avec SetSpeaker dans la doc ou du moins dans le même chapitre. Ceci dit j'ai décortiqué le bidule et reproduit, c'est super ! Bon , il faut que je trouve une voix plus française et surtout que je découvre comment on la change... | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Wrapper autour de KGF.dll par procédures Mer 3 Oct 2012 - 23:58 | |
| Sur W7, c'est galère ... en fait il met les voix dans le 32 bits, tu peux le paramétrer mais pour un utilisation seulement. J'espère qu'il vont améliorer le truc un jour. C'est un problème connu de W7.
| |
|
| |
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 Mer 3 Oct 2012 - 23:59 | |
| @Cosmos70: recharge KGF.dll. SetSpeaker est la toute dernière fonction, ajoutée aujourd'hui, portant KGF.dll à la version V1.65.
@YGeronimi: content de savoir que tu as réussi ! Tiens, pour le plaisir: essaie la fonction 109...
@Jicehel: as-tu vraiment plusieurs utilisateurs sur ton système ? Je sais que techniquement, c'est possible, et indispensable si plusieurs personnes se servent de la même machine. Personnellement, je n'ai pas ce dilemme... | |
|
| |
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 Jeu 4 Oct 2012 - 0:19 | |
| J'ai adapté KGF_SUB.bas à la toute nouvelle version instantanée V0.24i3. C'est quand-même beaucoup plus agréable de pouvoir utiliser directement un paramètre formel d'une procédure pour le passer à la DLL avec ADR(), au lieu de le recopier dans une variable globale créée pour l'occasion, puis aussitôt supprimée après !
Pour ceux qui n'ont pas encore franchi le pas: le répertoire KGF_SUB contient le fichier KGF_SUB V0_24i2.bas qui est l'ancien KGF_SUB.bas pour la version V0.24i2. Fonctionnellement identique, ce fichier fonctionne bien sûr également sous la version V0.24i3. | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| |
| |
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 Jeu 4 Oct 2012 - 1:18 | |
| Bonne trouvaille, Ygeronimi !
C'est ce que j'avais trouvé pour XP, et en son temps, j'avais publié cette asctuce pour XP. Bien sûr, les dialogues d'installation sont légèrement différents sous W7, mais le reader et l'autre programme sont les mêmes !
Mais la confirmation que cela marche sous W7 est importante, et j'espère que cela résoudra les problèmes des uns et des autres ! Merci à toi, Ygeronimi !
| |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 4 Oct 2012 - 1:21 | |
| Je suis tellement content de mon divorce avec Anna que je n'ai pas pu résister à fêter l'évènement avec vous tous. Mais....klaus...arrêtes de faire des trous dans mes fenêtres... | |
|
| |
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 Jeu 4 Oct 2012 - 1:42 | |
| Avec ces fonctions de gestion des régions, tu peux créer une fenêtre en forme de Mickey !
Utilise cette fonction 3 fois, pour ajouter 3 cercles à une région. Pour la première fois, tu donnes 0 conne handle de région, et pour les deux fois suivantes, tu donnes le handle de la région résultante. Pour ces 3 cercles, tu choisis un grand cercle au centre (la tête) et deux cercles un peu plus petits, décalés vers le haut, l'un à gauche, l'autre à droite (les oreilles. Tu obtiens une région complexe, encore invisible, et référencée par son handle. Tu utilise ensuite la fonction numéro 114 pour créer une fenêtre ayant la forme de la région que tu viens de créer. Tu peux aussi utiliser la fonction 111 pour percer un trou en forme de Mickey... Il y a de quoi s'amuser.
| |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 4 Oct 2012 - 1:55 | |
| J'essaierai pour le fun mais pas ce soir... mes ratiches me lachent un peu, je vais en profiter pour faire un Bonne nuit, A+ | |
|
| |
Invité Invité
| Sujet: Re: Wrapper autour de KGF.dll par procédures Jeu 4 Oct 2012 - 15:25 | |
| Oui avec la dernière version avec kgf, speack fonctionne. - Citation :
- voilà un lien où se trouve l'astuce mais suivez toutes les instructions !
http://www.zebulon.fr/astuces/200-synthese-vocale-windows-en-francais.html J'ai fait l'installation des voix françaises, et rajouter tout ce qu'ils disent, refais des démarrages. Mais rien n'y fait. Je n'ai que la voix anglaise. Par contre j'ai installé Balabolka, et là, ça marche (pour les voix, mais bien sûre, cela n'a rien à voir avec la dll). |
|
| |
bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Wrapper autour de KGF.dll par procédures Jeu 4 Oct 2012 - 21:30 | |
| Klaus, ton wrapper, c'est génial!!! | |
|
| |
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 Jeu 4 Oct 2012 - 21:37 | |
| Merci !
Pour ceux qui ont une difficulté avec le mot anglais "wrapper": cela signifie "enveloppe". C'est une couche écrite en Panoramic pur qui s'intercale entre le programme application et la DLL, cachant ainsi les appels à dll_callx de Panoramic et offrant une interface plus intuitive. | |
|
| |
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 Jeu 4 Oct 2012 - 22:26 | |
| Pour faire suite à ma suggestion d'une fenêtre "Mickey", voici un exemple d'une fenêtgre Panoramic simple avec un EDIT (pour la bouche) et deux boutons, mais en forme de Mickey jaune: - Code:
-
' mickey.bas
label close0, sortie, valider
dim region1%
on_close 0,close0 width 0,800 : height 0,600 color 0,255,255,0 dim dll$ : dll$ = "KGF.dll"
button 1 : top 1,30 : left 1,400 : caption 1,"Sortie" on_click 1,sortie edit 10 : top 10,450 : left 10,170 : width 10,200 button 11 : top 11,480 : left 11,230 : caption 11,"Valider" on_click 11,valider
KGF_initialize(dll$)
WindowAddEllipticRegion(0,50,150,450,450) : ' la tête region1% = WindowAddEllipticRegion% WindowAddEllipticRegion(region1%,0,0,250,250) : ' l'oreille gauche region1% = WindowAddEllipticRegion% WindowAddEllipticRegion(region1%,300,0,250,250) : ' l'oreille droite region1% = WindowAddEllipticRegion%
WindowRegionAsWindow(handle(0),region1%) : ' et Mickey apparaît ! SetSpeaker(1) : ' activer le haut-parleur end
close0: dll_off return sortie: terminate valider: ' message "Vous avez saisi: "+text$(10) speak("Vous avez saisi: "+text$(10),100,0,0) return
#include "KGF_SUB.bas"
C'est simple à réaliser, non ? Et c'est si drole... On peut déplacer cette fenêtre par la souris, en accrochant la partie bleue de la barre de titre restée visible dans une des oreilles.
Dernière édition par Klaus le Jeu 4 Oct 2012 - 23:14, édité 1 fois | |
|
| |
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 Jeu 4 Oct 2012 - 23:02 | |
| Salut Klaus J’ai essayé Demo_KGF_Sub.Bas : ça fonctionne sauf que pour SetSpeaker Tester Activer le son Appliquer Puis rien ne se passe : mon haut-parleur reste désespérément muet. et moi je suis Que devrais-je faire | |
|
| |
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 Jeu 4 Oct 2012 - 23:10 | |
| Essaie de télécharger KGF.dll à nouveau. SetSpeaker est la toute dernière fonction que j'ai ajoutée, et porte lma version de KGF.dll à V1.65 du 03/10/2012.
EDIT
J'ai modifié mon "Mickey" pour qu'il prononce la phrase saisie à haute voix. Saisissez quelque chose de sensée en français... | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 4 Oct 2012 - 23:20 | |
| | |
|
| |
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 - 0:06 | |
| Salut Klaus Je retélécharger KGF.DLL à nouveau J’exécute Mickey.bas ; j’entre le texte « Salut tout le monde » ; je clique sur Valider et ..... il ne se passe rien. | |
|
| |
Contenu sponsorisé
| Sujet: Re: Wrapper autour de KGF.dll par procédures | |
| |
|
| |
| Wrapper autour de KGF.dll par procédures | |
|