lancer une seule fois une application

lancer une seule fois une application - Delphi/Pascal - Programmation

Marsh Posté le 06-02-2003 à 11:12:05    

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

Reply

Marsh Posté le 06-02-2003 à 11:12:05   

Reply

Marsh Posté le 06-02-2003 à 11:20:55    

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:
Reply

Marsh Posté le 06-02-2003 à 11:40:54    

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


---------------
Vice présidente du CDCQVTL
Reply

Marsh Posté le 06-02-2003 à 11:44:25    

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:
Reply

Marsh Posté le 06-02-2003 à 11:48:27    

UTF-8 a écrit :

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


 
si

Reply

Marsh Posté le 06-02-2003 à 11:50:30    

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)
Reply

Marsh Posté le 06-02-2003 à 11:51:34    

ç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:
Reply

Marsh Posté le 06-02-2003 à 12:00:21    

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

Reply

Marsh Posté le 06-02-2003 à 12:20:49    

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)
Reply

Marsh Posté le 06-02-2003 à 13:11:30    

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:
Reply

Marsh Posté le 06-02-2003 à 13:11:30   

Reply

Marsh Posté le 06-02-2003 à 13:22:28    

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

Reply

Marsh Posté le 06-02-2003 à 13:26:51    

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);
 

Reply

Marsh Posté le 06-02-2003 à 13:32:38    

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:
Reply

Marsh Posté le 18-02-2003 à 17:12:57    

[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)  
 

Reply

Marsh Posté le 18-02-2003 à 18:04:24    

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

Reply

Marsh Posté le 18-02-2003 à 18:40:44    

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 *

Reply

Marsh Posté le 18-02-2003 à 20:40:48    

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

Reply

Marsh Posté le 20-02-2003 à 11:36:20    

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:
Reply

Marsh Posté le 04-09-2008 à 14:14:17    

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...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed