Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
989 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  lancer une seule fois une application

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

lancer une seule fois une application

n°303028
hippo_ma
Posté le 06-02-2003 à 11:12:05  profilanswer
 

Bonjour,
j'ai un programme sous delphi pour gerer la base de registre
et j'aimerai que l'on puisse le lancer une seule fois. Comment faire ?
 
Merci d'avance

mood
Publicité
Posté le 06-02-2003 à 11:12:05  profilanswer
 

n°303031
[SDF]Poire
Vive Grumly
Posté le 06-02-2003 à 11:20:55  profilanswer
 

ds le OnLoad
 
If GlobalFindAtom('THIS_IS_SOME_OBSCUREE_TEXT';) = 0 Then
        atom = GlobalAddAtom('THIS_IS_SOME_OBSCUREE_TEXT';)
   Else
   Begin
        ShowMessage('Application déjà lancée !!!';);
        Close;
   End;
 
ds le OnClose
If GlobalFindAtom('THIS_IS_SOME_OBSCUREE_TEXT';) <> 0 Then
        GlobalDeleteAtom (atom);


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°303041
UTF-8
Posté le 06-02-2003 à 11:40:54  profilanswer
 

je connais pas du tout Delphi, mais y'a pas moyen de passer par des mutex pour ça ?


---------------
Vice présidente du CDCQVTL
n°303044
[SDF]Poire
Vive Grumly
Posté le 06-02-2003 à 11:44:25  profilanswer
 

UTF-8 a écrit :

je connais pas du tout Delphi, mais y'a pas moyen de passer par des mutex pour ça ?


 :??:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°303046
antp
Super Administrateur
Champion des excuses bidons
Posté le 06-02-2003 à 11:48:27  profilanswer
 

UTF-8 a écrit :

mais y'a pas moyen de passer par des mutex pour ça ?


 
si

n°303048
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-02-2003 à 11:50:30  profilanswer
 

Pour Poire : je vais tacher de combiner mes lointains souvenirs en Pascal et la VCL que j'utilise tous les jours via C++ Builder :
 

Code :
  1. var
  2.   MH: THandle;
  3. begin
  4.   MH := CreateMutex(nil, false, 'TOTO');
  5.   if (MH <> NULL) and (GetLastError <> ERROR_ALREADY_EXISTS) then
  6.   begin
  7.     Application.Initialize;
  8.     Application.CreateForm(TForm1, Form1);
  9.     Application.Run;
  10.   end
  11.   else
  12.     CloseHandle(MH);
  13. end.


ça marcherait pas ça :??:


---------------
J'ai un string dans l'array (Paris Hilton)
n°303049
[SDF]Poire
Vive Grumly
Posté le 06-02-2003 à 11:51:34  profilanswer
 

ça revient au même que moi mais en + compliqué  :D


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°303054
taureau
Posté le 06-02-2003 à 12:00:21  profilanswer
 

le seul problème avec ce genre de chose c'est que si le programme plante, ben tu ne peux plus le relancer  :D

n°303079
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-02-2003 à 12:20:49  profilanswer
 

Taureau a écrit :

le seul problème avec ce genre de chose c'est que si le programme plante, ben tu ne peux plus le relancer  :D  

ben il suffit de virer le processus correspondant et tout rentre dans l'ordre [:sinclaire]


---------------
J'ai un string dans l'array (Paris Hilton)
n°303098
[SDF]Poire
Vive Grumly
Posté le 06-02-2003 à 13:11:30  profilanswer
 

Taureau a écrit :

le seul problème avec ce genre de chose c'est que si le programme plante, ben tu ne peux plus le relancer  :D  


fo
reboot powa :)
 
ou ptit prog qui vire la protection


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
mood
Publicité
Posté le 06-02-2003 à 13:11:30  profilanswer
 

n°303105
taureau
Posté le 06-02-2003 à 13:22:28  profilanswer
 

Harkonnen a écrit :

ben il suffit de virer le processus correspondant et tout rentre dans l'ordre [:sinclaire]


 
oui avec CreateMutex mais pas avec les Atom il faut alors suivre la procédure de poire  :D

n°303107
hippo_ma
Posté le 06-02-2003 à 13:26:51  profilanswer
 

ca marche pas.
 
Deja j'ai pas Onload mais seulement Oncreate.
Ensuite, pour fermer mon appli c'est un autre ecran qui le gère donc je ne peux pas utiliser le Onclose de ma fenetre principale.
Comment faire ?
 
 
 

[SDF]Poire a écrit :

ds le OnLoad
 
If GlobalFindAtom('THIS_IS_SOME_OBSCUREE_TEXT';) = 0 Then
        atom = GlobalAddAtom('THIS_IS_SOME_OBSCUREE_TEXT';)
   Else
   Begin
        ShowMessage('Application déjà lancée !!!';);
        Close;
   End;
 
ds le OnClose
If GlobalFindAtom('THIS_IS_SOME_OBSCUREE_TEXT';) <> 0 Then
        GlobalDeleteAtom (atom);
 

n°303110
[SDF]Poire
Vive Grumly
Posté le 06-02-2003 à 13:32:38  profilanswer
 

OnCreate C pareil G pas delphi sous la main alors...
 
à la place du onclose tu le fous ds le ondestroy ou onclosequery
 
que ça soit une autre form ki gére la fermeture ne change rien


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°312205
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 18-02-2003 à 17:12:57  profilanswer
 

[SDF]Poire a écrit :


fo
reboot powa :)
 
ou ptit prog qui vire la protection


 
 
nonono !!! le mutex est attaché au processus... donc si ça plante, le mutex est libéré !
croyez moi, j'ai fait ça pour mon appli qui n'arrête pas de planter et je peux tjs la relancer :)))
 
 
le mutex, ça marche nickel :)
 
hippo_ma :
 
 
DANS LE CODE SOURCE DE TON APPLICATION :
(Projet -> voir code source)
 

Code :
  1. begin
  2. SetLastError(NO_ERROR);
  3. CreateMutex (nil, False, 'Nom De ton application');
  4. // sort si le prog est déjà lancé :
  5. if GetLastError = ERROR_ALREADY_EXISTS then Exit;
  6. // puis ensuite t'as le code généré par delphi :
  7. Application.Initialize;
  8. Application.Title := 'Diadop2200';
  9. Application.CreateForm(...);


 
ouala, tout simplement...
 
plus d'info : http://gysmo.developpez.com/faqdelphi/
 
ya aussi un truc pour mettre la fenêtre princ de l'appli en premier plan... mais c un peu plus complex... (utilisation de la base de registre)  
 

n°312320
taureau
Posté le 18-02-2003 à 18:04:24  profilanswer
 

Moustaaki a écrit :


 
 
nonono !!! le mutex est attaché au processus... donc si ça plante, le mutex est libéré !
 


 
ben oui on l'a dit  :D poire parlait de l'autre méthode (atom) où là il faut rebooter ou effacer avec un programme spécial

n°312408
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 18-02-2003 à 18:40:44  profilanswer
 

Taureau a écrit :


 
ben oui on l'a dit  :D poire parlait de l'autre méthode (atom) où là il faut rebooter ou effacer avec un programme spécial


 
oulaaa.. j'ai vraiment un pb avec mes yeux... spa la première fois en plus :/ :oups:
 
* Moustaaki s'autoflagelle avec une boîte de windows millenium edition *

n°312505
taureau
Posté le 18-02-2003 à 20:40:48  profilanswer
 

ben il vaut mieux répéter une bonne solution qu'une mauvaise donc on va redire que mutex c mieux  :D

n°313879
[SDF]Poire
Vive Grumly
Posté le 20-02-2003 à 11:36:20  profilanswer
 

Taureau a écrit :

ben il vaut mieux répéter une bonne solution qu'une mauvaise donc on va redire que mutex c mieux  :D  


Boh j'l'aime bien ma solution [:totoz]
En réalité C + utilisé pour faire des protections sur shareware... (genre appli lancé qu'une *...)
Et ça reste quand même + simple que les mutex tout en gardant le principe de base


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°1782567
NounouRs
Non parce que c pas mon pied !
Posté le 04-09-2008 à 14:14:17  profilanswer
 

Et peut importe le langage,  
l'usage des onload / onquit ... ou tout equivalent est il le mieux ?
comment vous faites, si le programme a en plus besoin de se relancer lui meme (genre il s'est mis à jour sur le net)... ?
Perso, je delock avant de le relancer... et le nouveau remet le lock...
 
Sinon, le mieux, c'est encore un "observateur" qui gere le lock... mais alors, j'ai pas tenter de coder ca...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  lancer une seule fois une application

 

Sujets relatifs
lancer un programme vb compile en dll[PHP] Apache ne veux pas se lancer
lancer un processus sous win ?[BAT] lancer un compactage de base access
Comment lancer une Dll sans l'utiliser dans une appliLancer un prog ou ouvrir un fichier à partir de VB?
[win32 vs6] application console vs serviceComment migrer une application de vb3 vers vb6 ?
[HTML] Précharger une animation flash avant de la lancerExecuter 2 program a la fois - bat DOS
Plus de sujets relatifs à : lancer une seule fois une application


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR