FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» COMPILATEUR V 0.9 beta 7 du 10 aout 2017
par Yannick Aujourd'hui à 1:58

» Pb 17 (en analyse): ITEM_SELECT ne fonctionne pas
par Jack Hier à 19:26

» Compilateur FBPano
par Mike Hier à 13:52

» un nouveau editeur panobasic
par Jean Claude Hier à 10:18

» Le compilateur.
par Pedro Alvarez Hier à 8:36

» Pb 16 (en analyse): ON_CLOSE plante à l'exécution
par Jack Mer 16 Aoû 2017 - 20:00

» Pb 15 (en analyse): TIMER_ON plante à l'exécution
par Jack Mer 16 Aoû 2017 - 19:58

» KGF_dll - nouvelles versions
par Yannick Dim 13 Aoû 2017 - 17:35

» probleme d'outil
par Yannick Dim 13 Aoû 2017 - 17:32

» Carte de France des régions
par Yannick Sam 12 Aoû 2017 - 21:33

» Pb 14 (en analyse): PRINT_LOCATE plante à l'exécution
par Jack Ven 11 Aoû 2017 - 22:37

» Petit avertissement [Mots réservés]
par papydall Ven 11 Aoû 2017 - 13:45

» Distances sur plan
par JL35 Jeu 10 Aoû 2017 - 21:29

» Tracé : Triangle, Carrée, Dents de scie, Sinusoïde redressée
par papydall Jeu 10 Aoû 2017 - 14:52

» Troncature dans une image
par JL35 Mer 9 Aoû 2017 - 13:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Août 2017
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
CalendrierCalendrier

Partagez | 
 

 Éviter le double lancement d'un programme.

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Invité
Invité



MessageSujet: Éviter le double lancement d'un programme.   Mer 3 Fév 2016 - 22:28

J'ai mis en inutilitaire, car j'espère que ce problème de voir un programme se relancer une fois fini, est provisoire.
Code:
repeat
   pause 200
until scancode = 19 :' appuyer sur la touche pause
terminate
end

Constamment j'avais ce problème de double démarrage, et je ne pouvais pas voir le contenu des memos et edits, sans être obligé de recommencer le remplissage. Là ça marche. La boucle repeat/until agit comme un end, et la pause de 200 fait que le procésseur ne travail guère plus que si le programme est fermé.

Ah oui, il est évident que le END est inutile à la fin. Il y est, il y reste.
Revenir en haut Aller en bas
Klaus

avatar

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

MessageSujet: Re: Éviter le double lancement d'un programme.   Jeu 4 Fév 2016 - 1:29

Astuce intéressante, Cosmos70. A garder dans la librairie des astuces.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
silverman

avatar

Nombre de messages : 464
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Éviter le double lancement d'un programme.   Ven 12 Fév 2016 - 15:56

@cosmos70
J'imagine que tu utilises cette astuce quand tu es dans le cas de débogage, sans erreur dans le source, mais dans le cas d'un arrêt inopiné, ton astuce ne fonctionne plus.

Voici la mienne:
Pour que ça marche, il faut "planter" le 1er démarrage, pour cela il faut par exemple créer un... ACCESS VIOLATION !!!
Pour une fois, il va nous servir celui-là Twisted Evil

Dans le lanceur, j'ajoute une ligne avant la commande 'execute', comme ceci:
lanceur:
Code:

if file_exists("check_if_running.txt")=1 then file_delete "check_if_running.txt"
execute "PANORAMIC.EXE " + source$

et dans le source, au tout début, à la ligne 1:
source:
Code:

if file_exists("check_if_running.txt")=0
   file_open_write 1,"check_if_running.txt" : file_close 1
   poke 1,0
   terminate
end_if
Au 1er démarrage, le message "ACCESS VIOLATION" apparait, mais le second se passe normalement. Ce n'est pas très élégant, mais ça marche bien. Le 'terminate' ne sert à rien, car dès que le plantage a lieu, PANORAMIC.EXE relance immédiatement le source, mais je le laisse par sécurité.

EDIT:
EUREKA! Ca marche nickel, plus besoin de créer un 'access violation'!!!
C'est beaucoup mieux ainsi:
Code:

if file_exists("check_if_running.txt")=0
  file_open_write 1,"check_if_running.txt" : file_close 1
  dll_on "user32" : dim n%
  n%=dll_call1("DestroyWindow",handle(0))
  dll_off
  panel 1 : delete 1
  end
end_if
Pouvez vous me dire si ça fonctionne chez vous également?

EDIT2:
ajout de 'dll_off' dans le code
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Éviter le double lancement d'un programme.   Ven 12 Fév 2016 - 20:21

Bonjour Silverman.

Je viens de terminer un problème. J'ai ramoné ma cheminée ce matin avec des cannes, et mon hérisson est resté dedans. J'ai réussi à l'enlever depuis le toit, et j'ai encore du mal à rentrer dans les problèmes de code.

Je regarde tes sources, mais j'ai du mal de comprendre. Apparemment tu essayes de faire autre chose. Pour ma part, le but du programme était d'éviter que le source se relance une fois qu'il est déjà exécuté, et se ferme. C'est une chose qui se produit presque à chaque fois.

Ce programme fonctionne, mais avec l'éditeur de Klaus, il y a un problème. Si je lance Synedit Editor, et que panoramic.exe est encore actif même si il a disparu de la barre de tâche, Synedit plante. Pourquoi ça plante? Car j'ai tendance à fermé le programme avec la croix par habitude, alors qu'il y a une boucle repeat/until dont la sortie est la touche pause. Ce qui fait que dans ce cas précis, Panoramic.exe n'a pas complètement disparu. Il a fermé, mais reste dans le gestionnaire de tâches. Pour résoudre ce problème, j'ai mis border_hide, et je marque la fenêtre en rouge à la fin, pour me rappeler que je dois cliquer sur pause pour sortir. A partir de là ça marche.

Si j'ai bien compris, ton problème est de fermer panoramic.exe après un acces violation, ce qui est un autre problème. J'ai essayé tes codes mais je ne sais pas quelles sont les lignes qu'il y a avant. Ca doit fermer quoi sur une erreur, mais là ...

J'essaye plusieurs trucs, et remplacé ma méthode par la tienne. Il lance mon programme, et je vois 2 icônes de Panoramic dans la barre de tâche. apparemment ça na pas l'air de marché, j'ai encore 2 lancements du programme, et il en reste un une fois fini, même en cliquant sur le message "cannot open file... occupé par un autre programme". Surement que tu essayes autre chose.

Malheureusement je ne peux pas rester plus.
Revenir en haut Aller en bas
jjn4

avatar

Nombre de messages : 1594
Date d'inscription : 13/09/2009

MessageSujet: +++   Sam 13 Fév 2016 - 19:06

Je ne voudrais pas avoir l'air d'ergoter...
Mais si c'est une astuce utile,
alors ce n'est pas un inutilitaire,
qui (par définition) ne sert à rien !?
Rolling Eyes alien Laughing
Non ?
scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
papydall

avatar

Nombre de messages : 5501
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Éviter le double lancement d'un programme.   Sam 13 Fév 2016 - 20:40

C'est tout à fait le bon sens Martien! Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Invité
Invité



MessageSujet: Re: Éviter le double lancement d'un programme.   Sam 13 Fév 2016 - 20:48

Au départ je n'étais pas sûre qu'on voit les choses de la même façon que moi. Le double lancement, je l'ai constamment, mais il y a des périodes où le problème n’apparait pas. J'ai pris l'habitude avec Panoramic d'être prudent. Plus d'une fois un problème que je poste n'ai pas vu chez les autres.

Ensuite j'espère bien que Jack a le soucis de chercher pourquoi cela se produit. On en a déjà parlé, mais maintenant plus personne ne s'en préoccupe. J'espère que le code que j'ai posté n'est que provisoire, donc une fois résolu, ce code devient inutile! elephant
Revenir en haut Aller en bas
silverman

avatar

Nombre de messages : 464
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Éviter le double lancement d'un programme.   Sam 13 Fév 2016 - 22:11

Le double lancement, mon lanceur "ne connais plus ça" avec le code que j'ai posté plus haut, sous le EDIT rouge. Il faut juste prendre la précaution d'utiliser un nom de fichier absolu pour "check_if_running.txt". Ce fichier est en permanence créé  ou effacé dans le dossier du lanceur, quelquesoit le source que j'éxécute.
Plus exactement, le premier lancement est tué dans l'oeuf; il apparait quelques millisecondes puis disparait pour laisser place au lancement final. C'est si rapide que c'est invisible.
Maintenant, on a tous des OS et des machines différentes, alors pour ce bug précis, ce qui fonctionne chez les uns ne fonctionne pas forcément chez les autres.
Il n'y a eu que peu de retour sur l'astuce de cosmos70 ou la mienne, donc on ne peut pas classer ça dans les utilitaires si on ne sait pas si ça marche vraiment.

NB: le double lancement n'affecte que les personnes qui utilise 'panoramic.exe' pour créer des IDE par exemple, afin d'éxécuter des codes sources. 'Panoramic_editor' n'est pas concerné.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Éviter le double lancement d'un programme.   Dim 14 Fév 2016 - 4:27

Je ne peux rien dire sur ton programme. Ca ne fonctionne pas chez moi, mais j'utilise Synedit_Editor, et je ne sais pas comment est fait le lancement.

J'ai essayé ton programme, et là il se lance une nouvelle fois à chaque fermeture. J'avais 5 icônes dans la barre de tâches, mais c'est peut-être particulier.

Par contre, j'ai essayé une amélioration de mon programme qui ne bloque plus Synedit par un clic irréfléchie sur la croix de fermeture de la fenêtre.
Donc j'ai retiré border_hide sur la fenêtre 0, et voici le code:

Code:

label fin

' tableur(): programme en cours
on_close 0,fin  
caption 0, "appuyer sur pause":beep : ' devient inutile
repeat        
   pause 500            
until scancode = 19 or clicked(0) = 1:' appuie sur la touche pause

fin:  
execute "C:\PANO\kill_pano.exe"  :' programme que l'un d'entre-vous a développé.
' terminate
' end


Le programme est lancé et est arrête par la repeat/until, et sert de END. Si on met des boutons, ou autres, les évènements fonctionnent. En fermant la fenêtre, le programme kill_pano développé je ne sais plus , par JL35 ou Papydall, nettoie le gestionnaire de tâches de Panoramic, et Synedit_Editor n'est plus perturbé.
Revenir en haut Aller en bas
papydall

avatar

Nombre de messages : 5501
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Éviter le double lancement d'un programme.   Dim 14 Fév 2016 - 4:53

cosmos70 a écrit:
En fermant la fenêtre, le programme kill_pano développé je ne sais plus , par JL35 ou Papydall, nettoie le gestionnaire de tâches de Panoramic, et Synedit_Editor n'est plus perturbé.

C’est bien moi l’auteur du code.
Je l’ai posté ici

A toute fin utile, je rappelle ce code

code:
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Contenu sponsorisé




MessageSujet: Re: Éviter le double lancement d'un programme.   

Revenir en haut Aller en bas
 
Éviter le double lancement d'un programme.
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Résolu] Menu démarrer win xp (programmes en double)
» Comment éviter la majorité des infections virales
» [Résolu] Nero 8
» Une bretelle double...
» [Obsolète] Une autre programme d'animation gratuit.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: Les inutilitaires-
Sauter vers: