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
» Demande urgente en maths.
par JL35 Aujourd'hui à 22:26

» Compilateur FBPano
par jean_debord Aujourd'hui à 11:24

» Problème de math
par braveen Aujourd'hui à 10:53

» A propos des attributs de fichier
par papydall Hier à 14:33

» Problème de math
par Marc37 Sam 21 Oct 2017 - 23:04

» I Love You
par papydall Sam 21 Oct 2017 - 19:22

» Un petit "coucou" à tous les Panoramiciens !
par mindstorm Sam 21 Oct 2017 - 17:06

» MARK_ON déclenche un événement ON_CLICK à la place de ...
par Jean Claude Mer 18 Oct 2017 - 18:08

» mise a jour calculatrice
par joeeee2017 Mer 18 Oct 2017 - 15:57

» [solved] 3D_LINE How to ?
par Jicehel Mer 18 Oct 2017 - 11:01

» Convertisseur de base 10 de 2 à 36
par gigi75 Mar 17 Oct 2017 - 18:49

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» Calculatrice
par Jean Claude Sam 14 Oct 2017 - 12:30

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
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 : 10075
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 : 466
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 : 1601
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 : 5551
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 : 466
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 : 5551
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 :: Les inutilitaires-
Sauter vers: