FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
KGF.dll: Nouvelle fonction SelectWindowsPrinter Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
KGF.dll: Nouvelle fonction SelectWindowsPrinter Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
KGF.dll: Nouvelle fonction SelectWindowsPrinter Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
KGF.dll: Nouvelle fonction SelectWindowsPrinter Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
KGF.dll: Nouvelle fonction SelectWindowsPrinter Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
KGF.dll: Nouvelle fonction SelectWindowsPrinter Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
KGF.dll: Nouvelle fonction SelectWindowsPrinter Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
KGF.dll: Nouvelle fonction SelectWindowsPrinter Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
KGF.dll: Nouvelle fonction SelectWindowsPrinter Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
KGF.dll: Nouvelle fonction SelectWindowsPrinter Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
KGF.dll: Nouvelle fonction SelectWindowsPrinter Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
KGF.dll: Nouvelle fonction SelectWindowsPrinter Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
KGF.dll: Nouvelle fonction SelectWindowsPrinter Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
KGF.dll: Nouvelle fonction SelectWindowsPrinter Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
KGF.dll: Nouvelle fonction SelectWindowsPrinter Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le deal à ne pas rater :
Code promo Nike : -25% dès 50€ d’achats sur tout le site Nike
Voir le deal

 

 KGF.dll: Nouvelle fonction SelectWindowsPrinter

Aller en bas 
4 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyLun 26 Avr 2010 - 0:16

Après une longue pause due au crash de mon disque, me voilà de retour avec une nouveauté dans ma dll. J'ai commencé à utiliser la fonction adr(a$) que Jack a fait marcher (Merci Jack !), pour ajouter une routine qui permet de sélectionner l'imprimante par défaut de Windows, et qui retourne son nom sous forme de string !

Mode d'emploi:
Citation :

dim nom_imprimante$, longueur%, retour%

rem --- il faut allouer un buffeur pour le retour du nom de l'imprimante
nom_imprimante$ = string$(255," ")
rem --- on appelle la routine dans KGF.dll:
retour% = DLL_call2("SelectWindowsPrinter",adr(nom_imprimante$),len(nom_imprimante$)
rem --- tester si on a fait un choix ou non
if retour%>0
begin
rem --- ici, on a fait un choix
message "le nom de l'imprimante est "+nom_imprimante$
end
else
begin
rem --- ici, on a frappé "Annuler"
message "aucune imprimante choisie"
end
end_if
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyLun 26 Avr 2010 - 1:16

Je n'ai pas trop approfondi mais quand je lance le petit programme ci-dessus, j'obtiens "expression arithmétique incorrecte ligne 6" ?

Aux lignes 9 et 14, ça correspond à quoi 'begin' ? et la syntaxe est un peu curieuse, avec les end au milieu du if else, pourquoi pas après le end_if ?.

ah oui, je vois que la dll aurait dû être préalablement chargée en mémoire, puis déchargée ensuite...
Par contre, si je le rajoute "Dll_On "... KGF.17.dll" il semble qu'on n'en revienne pas, ça boucle quelque part.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyLun 26 Avr 2010 - 10:33

Salut, JL35,

Voici un programme de démo qui montre comment se servir de la DLL et de la fonction de choix d'imprimante:
Code:

rem Demo SelectWindowsPrinter dans KGF.dll
rem
rem commencer par renommer KGF.17.dll en KGF.dll
rem (le .17 est rajouté par mon générateur de site web...

rem Installer KGF.dll dans le répertoire de Panoramic Editor
rem Lancer ce programme par l'éditeur
rem cliquer sur DLL_on
rem cliquer sur "Nombre d'imprimantes" --> on voit le nombre d'imprimantes Windows
rem cliquer sur "Imprimante" --> le dialogue de sélection d'imprimantes s'ouvre
rem    et si l'on valide, le nom de l'imprimante choisie est affiché !

dim ret%, nom$

label click_1, click_2, click_4, err_dll

button 1
top 1,10
left 1,10
caption 1,"DLL_on"
on_click 1,click_1

button 2
top 2,40
left 2,10
caption 2,"Imprimante"
on_click 2,click_2

edit 3
top 3,40
left 3,120
width 3,200

button 4
top 4,70
left 4,10
width 4,120
caption 4,"Nombre d'imprimantes"
on_click 4,click_4

edit 5
top 5,70
left 5,150
width 5,30

end

click_1:
on_error_goto err_dll
dll_on "KGF.dll"
err_dll:
return

click_2:
nom$ = string$(255," ")
ret% = dll_call2("SelectWindowsPrinter",adr(nom$),len(nom$))
text 3,nom$
return

click_4:
text 5,dll_call0("GetPrinterCount")
return

Suis les commentaires en début du programme: cela devrait marcher avec la version instantanée du 24/4/2010. En effet, cette version est indispensable car elle contient la correction de la fonction adr(a$) !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyLun 26 Avr 2010 - 16:06

Bonjour Klaus,
Je n'avais pas compris que ton petit bout de code là-haut n'était pas à lancer tel quel ...
Bon, dans ton bout d'essai je fais tout comme tu dis, la fenêtre s'affiche avec ses boutons, je clique sur DLL_On, il ne se passe rien de visible (normal), mais si je clique ensuite sur un des autres boutons le programme part dans les décors et ne rend pas la main.
Seule différence, ta dll n'est pas dans le répertoire éditeur, mais avec mes sources, mais dans dll_on je donne le chemin complet, donc ça devrait marcher. J'ai essayé avec la dll dans l'éditeur, c'est pareil.

En fait, tout se passe comme si on ne revenait pas du DLL_ON...
C'est ça, j'ai mis un print juste avant et un autre juste après, le 1er se fait, pas le second.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyLun 26 Avr 2010 - 16:19

Es-tu sûr d'avoir la bonne version de l'éditeur, celle du 24 Avril 2010 ? Ca sinon, cela ne PEUT pas marcher !

Chez moi, j'utilise cette DLL dans plusieurs programmes que j'ai faits pour la mettre au point. Le programme de mon post précédent en est un extrait fonctionnel: il marche chez moi sans problème.

Sache qu'à cause du problème avec DLL_off (voir mon post dans les bugs de Panoramic), il faut complètement arrêter l'éditeur et le relancer, puis recharger le programme application, pour chaque test. J'espère que cette restriction sera bientôt levée. Le symptôme de ce bug est justement qu'en apparence, il ne se passe rien, comme si on ne revenait pas de la DLL...

Donc, essaie de faire comme moi: place le fichier KGF.dll dans le répertoire de l'éditeur, puis lance-le, charge le programme fourni dans mon post précédent et exécute-le. D'abord un click sur le bouton DLL_on (rien de visible à l'écran, mais ça marche), puis un click sur le bouton "Imprimante" et tu dois avoir le dialogue de sélection d'une imprimante windows. Les deux boutons autres que DLL_on peuvent être clickés dans n'importe quel ordre, et aussi souvent que l'on veut. Mais dès qu'on arrête le programme (par la croix ou le "stop" de l'éditeur), il faut quitter l'éditeur et le relancer pour recommencer - voir le bug ci-dessus, car même si l'on ajoute un bouton "DLL_off" pour décharger la DLL, cela ne marche pas pour le moment. C'est le bug dont je parle. Donc, pour le moment, j'en ai fait l'économie...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyLun 26 Avr 2010 - 16:52

Désolé, je suis au courant pour le dll_off, mais c'est le dll_on qui ne marche pas chez moi, je clique sur le bouton et je n'ai plus la main.
J'ai bien vérifié, version de l'éditeur 0.9.18 du 24/4, KGF.dll dans le répertoire éditeur.
J'ai mis ça pour vérifier:
Code:
click_1:
print: print: print: print: print: print: print
print "DLL_ON lancé"
on_error_goto err_dll
dll_on "KGF.dll"
PRINT "DLL chargée": RETURN
err_dll:
print "erreur DLL_On !"
return
Le premier print se fait et pas le deuxième.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyLun 26 Avr 2010 - 17:12

Et tu as bien mis KGF.dll dans le répertoire de l'éditeur ? ou dans le répertoire du exe si tu as généré un exe à partir de mon source ?

As-tu bien renommé KGF.17.dll en KGF.dll ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyLun 26 Avr 2010 - 18:00

Oui j'ai fait tout ça: KGF.dll renommé, mis dans le répertoire de l'éditeur, et exécution en interprété dans l'éditeur.
De toute façon, si je mets un nom quelconque pour la dll (Toto.dll) il part bien en erreur. Donc il trouve bien KGF.dll, mais ensuite...?
Tiens c'est bizarre, dans le doute j'ai rechargé (et renommé) KGF.dll, et maintenant j'ai cette erreur sur le dll_on:
KGF.dll: Nouvelle fonction SelectWindowsPrinter Image
.
Autant pour moi Klaus, je viens de le recharger une nouvelle fois, et là tout marche bien ! je ne comprends pas ce qui s'est passé", j'avais peut-être l'ancienne version de KGF, je ne sais pas.
En tout cas excuse-moi de t'avoir dérangé pour rien, et merci, ça marche bien.


J'ajoute que je viens de rajouter pour voir un bouton dll_off qui semble marcher, les deux boutons imprimante deviennent inactifs, et redeviennent actifs si on reclique dll_on.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyLun 26 Avr 2010 - 18:33

Heureux que cela marche.

Je vais retester le problème de DLL_off chez moi. Merci pour les indications.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jack
Admin
Jack


Nombre de messages : 2395
Date d'inscription : 28/05/2007

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyLun 26 Avr 2010 - 21:09

Citation :
Je vais retester le problème de DLL_off
Je ne comprends pas ce problème de DLL_OFF.
J'ai fait un source avec plusieurs séquences DLL_ON / utilisation de fonctions / DLL_OFF sans aucun problème.

Lorsque j'examine ce que fait DLL_OFF, je ne vois pas d'erreur, toutes les ressources sont libérées...
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyMar 27 Avr 2010 - 10:46

Voici le texte de mon post de cette nuit dans la rubrique "bugs dans Panoramic ?". Je n'ai pas encore compris comment insérer un lien vers un autre post dans mon texte, donc je le copie en entier:
Citation :

En utilisant les fonctions DLL_xxx pour tester ma DLL, je suis tombé sur un problème qui ressemble fort à un bug. Cela concerne l'instruction DLL_off.

En effet, cette instruction empêche bien tout accès suivant à la DLL, mais apparemment, elle ne décharge pas la DLL de la mémoire, car il est impossible de la recharger avec DLL_on,"KGF.dll": auune erreur, mais tout reste inactif. Cela concerne l'éditeur de Panoramic, et je place la DLL dans le même répertoire que l'éditeur. Il faut en fait quitter l'éditeur et le relancer pour pouvoir à nouveau travailler avec la DLL.

Il serait vraiment utile que DLL_off fasse place nette comme si rien n'avait été chargé, de sorte qu'un DLL_on suivant puisse recharger une DLL et que tout soit actif. Ceci est d'ailleurs la condition sine qua non pour pouvoir travailler avec plusieures DLL...

Un petit détail: tant qu'aucune DLL n'est chargée par DLL_on, on n'a évidemment pas accès aux routines, mais un appel à une telle routine génère une erreur 29 (trappable). Du coup, il faut proteger chaque DLL_call par un on_error_goto, ce qui est très gênant pour la gestion globale des erreurs car on n'a pas de off_error ou on_error_goto 0. Serait-ce beaucoup demander que de souhaiter un on_error_goto 0 pour désactiver le on_error_goto en vigueur ?

*********** EDIT *************

Après des tests supplémentaires, voici un nouvel éclairage sur le problème. DLL_off a l'air de marcher normalement avec la version instantanée du 24/4/2010, tant qu'un RESTE dans le programme application.

On peut en effet faire plusieurs fois DLL_on suivi de DLL_off suivi de DLL_on suivi de DLL_off etc, et cela marche en apparence. Tant que DLL_on est en vigueur, les fonctions de la DLL sont accessibles, après un DLL_off elles sont inactives, et on DLL_on en restaure l'accès.

Le problème se pose dès que l'on sort du programme, que ce soit par l'instruction terminate, le click sur la croix rouge ou la fonction "stop" de l'éditeur. Le programme s'arrête et on retourne dans l'éditeur. Mais si l'on le relance, alors la commande DLL_on est apparemment sans effet, et il n'y a plus aucun accès à la DLL. Seul moyen de retrouver les fonctions: sortir de l'éditeur, relancer l'éditeur, recharger le programme puis relancer le programme. Là, tout remarche normalement.

Ceci me conforte dans mon idée que DLL_off ne purge pas tout; cette instruction a l'air de simplement inhiber l'accès à la DLL. Mais quelque chose doit rester en mémoire tant que l'éditeur est actif et c'est ce qui empêche un nouveau DLL_on de marcher (je répète: après un arrêt du programme interprêté et son redémarrage direct par l'éditeur).

Effectivement, plusieurs séquences DLL_on ... DLL_off siccessives marchent bien; le problème se pose lorqu'on arrête le programme pour modifier le source dans l'éditeur: pas moyen de le relancer car il n'y a plus d'accès à la DLL. Il faut sauvegarder le programme modifié, sortir de l'éditeur, relancer l'éditeur et ainsi de suite, pour chaque essai.

C'est bien sûr faisable, et je travaille ainsi depuis le début, mais j'imagine que cela ne doit pas être le fonctionnement normal que tu as prévu, d'où ma supposition que quelque chose reste en mémore dans l'éditeur, malgré le DLL_off.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyMar 27 Avr 2010 - 11:40

Citation :
?". Je n'ai pas encore compris comment insérer un lien vers un autre post dans mon texte,

En partant de l'index (Un bug dans panoramic....) tu positionnes la souris sur le sujet qui t'intéresses, tu fais un clic droit et tu sélectionnes "copier le raccourci"

A+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyMar 27 Avr 2010 - 11:59

Merci pour l'info. Dans ce cas précis, j'aurais pu le faire puisque le sujet ne contient qu'un seul post. Mais comment faire pour établir un lien vers un post au milieu d'une série de posts dans un sujet ? J' n'y arrive pas.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyMar 27 Avr 2010 - 12:32

Là, je suis comme toi, je ne sais pas. Je ne suis pas certain que ce soit possible.
A+
Revenir en haut Aller en bas
Jack
Admin
Jack


Nombre de messages : 2395
Date d'inscription : 28/05/2007

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyMar 27 Avr 2010 - 13:32

Citation :
Le problème se pose dès que l'on sort du programme, que ce soit par l'instruction terminate, le click sur la croix rouge ou la fonction "stop" de l'éditeur. Le programme s'arrête et on retourne dans l'éditeur. Mais si l'on le relance, alors la commande DLL_on est apparemment sans effet, et il n'y a plus aucun accès à la DLL.
Je crois avoir compris ce qui se passe.
En effet, si après un DLL_ON, le programme est arrêté (pour mise au point) sans que DLL_OFF ne soit exécuté, il peut y avoir des problèmes à la prochaine exécution de DLL_ON.

Pour le moment, la seule parade que je vois c'est:
Code:
label xxx
- - -
on_error_goto xxx
- - -
xxx:
dll_off
stop
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyMar 27 Avr 2010 - 21:06

Je crois que c'est plus grave que ça. Bien sûr, on peut protéger DLL_on par un on_error_goto, mais la DLL n'est tout simplement pas réactivé au deuxième lancement du programme dans la même session de l'éditeur, même si l'on est passé par DLL_off avant de quitter le programme application. A l'intérieur du premier lancement du programme application, on peut enchaîner à volonté les DLL_on suivi de DLL_off et tout marche comme souhaité. Le problème, c'est de quitter le programme, faire une modif dans le source et le relancer - DLL_on ne donne plus la main sur la DLL.

Pour s'en convaincre, voici mon programme avec lequel je teste la DLL. Mode opératoire: cliquer sur "Load DLL", puis par exemple sur "Nombre d'imprimantes", et le champ à droite du bouton reçoit le nombre d'imprimantes installées dans Windows. Cliquer maintenant sur "Unload DLL", puis effacer le fameux champ, puis recliquer sur le bouton "Nombre d'imprimantes". Rien n'est affiché dans ce champs. C'est d'ailleurs bizarre car on devrait y trouver "0". C'est comme s'il ne "revenait" jamais de l'appel de la DLL... . En fait, il y a bien une erreur, mais le on_error_goto qui protège DLL_on frappe et dévie le traitement. Rien de plus normal, car il n'y a pas de "on_error_goto 0" ou de off_error. Recliquer sur "Load DLL", puis sur "Nombre d'imprimantes", le bon chiffre réapparaît. Tout semble en ordre.

Et maintenant, on va provoquer le problème dont je parle. Cliquer sur le bouton "Unload DLL", puis la croix pour fermer le programme. Le relancer aussitôt dans l'éditeur, cliquer sur "Load DLL", puis sur "Nombre d'imprimantes", et rien apparaît - la DLL n'est plus accessible. Il faut arrêter l'éditeur et le relancer pour y accéder à nouveau.

Voici le code:
Code:
    label err_dll, err_1
    label click_4, click_5, click_19, click_23, click_31, click_41, click_44
    label click_50, change_51, click_52, click_57, click_58
   
    dim i%, n%,s$
   
    s$ = "Test Send Message"
   
    width 0,800
    caption 0,"Test_KGF"

    rem --------- gestion de la DLL
    button 4
    top 4,10
    left 4,10
    caption 4,"Load DLL"
    on_click 4,click_4
    button 5
    top 5,10
    left 5,300
    caption 5,"unload DLL"
    on_click 5,click_5
   
    rem --------- test fonctions binaires
    alpha 11
    top 11,50
    left 11,10
    caption 11,"Valeur"
    edit 12
    top 12,50
    left 12,50
    width 12,50
    alpha 13
    top 13,50
    left 13,120
    caption 13,"Nombre de bits"
    edit 14
    top 14,50
    left 14,200
    width 14,30
    alpha 15
    top 15,50
    left 15,250
    caption 15,"Fonction"
    combo 16
    top 16,50
    left 16,300
    item_add 16,"bin_ROL"
    item_add 16,"bin_ROR"
    item_add 16,"bin_SHL"
    item_add 16,"bin_SHR"
    item_add 16,"bin_WROL"
    item_add 16,"bin_WROR"
    item_add 16,"bin_WSHL"
    item_add 16,"bin_WSHR"
    item_add 16,"bin_BROL"
    item_add 16,"bin_BROR"
    item_add 16,"bin_BSHL"
    item_add 16,"bin_BSHR"
    alpha 17
    top 17,50
    left 17,460
    caption 17,"Résultat"
    edit 18
    top 18,50
    left 18,510
    width 18,50
    button 19
    top 19,50
    left 19,570
    width 19,30
    caption 19,"Go"
    on_click 19,click_19
   
    rem ------------ test ClipboardCopy
    alpha 21
    top 21,90
    left 21,10
    caption 21,"Mémo origine"
    memo 22
    top 22,110
    left 22,10
    button 23
    top 23,130
    left 23,210
    width 23,30
    caption 23,"Go"
    on_click 23,click_23
    alpha 24
    top 24,90
    left 24,250
    caption 24,"Mémo destination"
    memo 25
    top 25,110
    left 25,250

    rem ------------- test adr() (choic d'une imprimante)
    button 31
    top 31,220
    left 31,10
    caption 31,"Test ADR"
    on_click 31,click_31
    edit 32
    top 32,220
    left 32,100
    text 32,s$
    edit 33
    top 33,220
    left 33,230
    text 33,adr(s$)

    rem ------------- selectionner une imprimante windows
    button 41
    top 41,250
    left 41,10
    width 41,120
    caption 41,"Choix d'imprimante"
    on_click 41,click_41
    edit 42
    top 42,250
    left 42,140
   
    rem -------- test GetPrinterCount
    edit 43
    top 43,250
    left 43,450
    width 43,30
    button 44
    top 44,250
    left 44,300
    width 44,130
    caption 44,"Nombre d'imprimantes"
    on_click 44,click_44

    rem ------------- Inter Process Communication
    edit 51
    top 51,-1234
    left 51,-1234
    width 51,400
    on_change 51,change_51
    alpha 55
    top 55,280
    left 55,10
    caption 55,"Destinataire"
    edit 56
    top 56,280
    left 56,80
    text 56,caption$(0)
    button 52
    top 52,280
    left 52,210
    width 52,100
    caption 52,"Get IPC Handle"
    on_click 52,click_52
    edit 53
    top 53,280
    left 53,320
    edit 54
    top 54,280
    left 54,450
    text 54,handle(51)
    edit 59
    top 59,310
    left 59,10
    width 59,200
    button 50
    top 50,310
    left 50,230
    caption 50,"Envoyer"
    on_click 50,click_50
    button 57
    top 57,340
    left 57,10
    width 57,130
    caption 57,"Montrer message reçu"
    on_click 57,click_57
    button 58
    top 58,340
    left 58,160
    width 58,130
    caption 58,"Cacher message reçu"
    on_click 58,click_58
   

    end
   
click_4:
    on_error_goto err_dll
    dll_on "KGF.dll"
err_dll:
    return
   
click_5:
    dll_off
    return

click_19:
    i% = val(text$(12))
    n% = val(text$(14))
    text 18,dll_call2(item_index$(16),i%,n%)
    return
   
click_23:
    i% = dll_call1("ClipboardCopy",handle(22))
    return

click_31:
    s$ = string$(255," ")
    i% = dll_call2("testADR",adr(s$),len(s$))
    text 32,s$
    text 33,i%
    return
   
click_41:
    s$ = string$(255," ")
    i% = dll_call2("SelectWindowsPrinter",adr(s$),len(s$))
    text 42,s$
    return

click_44:
    text 43,dll_call0("GetPrinterCount")
    return
   
click_50:
    s$ = text$(59)
    i% = val(text$(53))
    i% = dll_call3("IPCSendMessage",adr(s$),len(s$),i%)
    return
   
change_51:
    message "Message reçu: " + text$(51)
    return

click_52:
    s$ = text$(56)
    on_error_goto err_1
    i% = -1234
    i% = dll_call3("IPCGetHandle",adr(s$),len(s$),i%)
    text 53,str$(i%)
    return
err_1:
    message "Erreur ligne "+str$(error_line)+" numéro "+str$(error_number)+" type "+error_type$
    return

click_57:
    top 51,340
    left 51,320
    return

click_58:
    top 51,-1234
    left 51,-1234
    return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jack
Admin
Jack


Nombre de messages : 2395
Date d'inscription : 28/05/2007

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyMar 27 Avr 2010 - 21:54

Voici une nouvelle version qui devrait résoudre ton problème.

http://dl.free.fr/cQHWx2ZR8/PANORAMIC_EDITOR.zip

Cette version contient en outre 4 nouvelles commandes en cours de test:
OFF_ERROR_GOTO : annule l'effet de ON_ERROR_GOTO
OFF_CHANGE N : annule l'effet de ON_CHANGE N
OFF_KEY_UP N : annule l'effet de ON_KEY_UP N
OFF_KEY_DOWN N : annule l'effet de ON_KEY_DOWN N
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Jack
Admin
Jack


Nombre de messages : 2395
Date d'inscription : 28/05/2007

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyMar 27 Avr 2010 - 22:15

Citation :
Et maintenant, on va provoquer le problème dont je parle. Cliquer sur le bouton "Unload DLL", puis la croix pour fermer le programme. Le relancer aussitôt dans l'éditeur, cliquer sur "Load DLL", puis sur "Nombre d'imprimantes", et rien apparaît - la DLL n'est plus accessible. Il faut arrêter l'éditeur et le relancer pour y accéder à nouveau.

J'ai suivi ton mode opératoire
- avec la version V 0.9.19i2 du 24/04/2010
- avec la nouvelle version V 0.9.19i3 du 27/04/2010 (qui est censée résoudre ce problème).

Dans les 2 cas, le problème que tu décris n'apparait pas.
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyMar 27 Avr 2010 - 23:02

J'ai réessayé, en faisant vraiment attention.

1. lancer l'éditeur Panoramic Releases 9.19i, April 24, 2010
2. ouvrir test_KGF_dll.bas
3. cliquer surn"Run (F9)" --> la form0 s'affiche
4. cliquer sur "Load DLL"
5. cliquer sur "Nombre d'imprimantes" --> le nombre apparaît dans le champ
6. cliquer sur "Unload DLL"
7. cliquer sur la croix rouge --> on revient dans l'éditeur
8. cliquer sur "Run (F9)" --> la form0 s'affiche
9. cliquer sur "Load DLL"
10. cliquer sur "Nombre d'imprimantes" --> rien ne se passe

Alors, je sors en cliquant sur la croix rouge, et je me trouve dans l'éditeur. Je mets un "rem" devant la ligne 188 rem on_error_goto err_dll, et je relance en cliquant sur "Run (F9)". Un click sur "Load DLL" produit alors l'erreur suivante: "(136) Impossible to load DLL. Line: 189". On arrête l'éditeur et un relance, et tout rentre dans l'ordre.

Je n'ai pas vu où trouver la version V 0.9.19i3 du 27/04/2010: je n'ai que celle indiquée ci-dessus.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyMer 28 Avr 2010 - 8:22

Salut Klaus.
Le nouvelle éditeur se trouve à la réponse de Jack plus haut.
Je viens de la télécharger, et les nouvelles fonctions sont intéressantes.

Merci Jack
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter EmptyMer 28 Avr 2010 - 10:26

OK, j'ai trouvé, et je vais tester. Merci !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty
MessageSujet: Re: KGF.dll: Nouvelle fonction SelectWindowsPrinter   KGF.dll: Nouvelle fonction SelectWindowsPrinter Empty

Revenir en haut Aller en bas
 
KGF.dll: Nouvelle fonction SelectWindowsPrinter
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Nouvelle DLL SetWindowButtons
» transformer .frm en .bas
» Nouvelle DLL Pilote.dll
» Nouvelle DLL IsRunning.dll
» Lancement officiel de GPP

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: