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

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  restaurer une appli du tray

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

restaurer une appli du tray

n°858890
endemyon
Posté le 28-09-2004 à 11:36:31  profilanswer
 

Bonjour, voila mon probleme :  
mon appli est minimalisée dans le tray icon. Je voudrai que lorsque l'on essai de relancer une deuxième fois l'application, l'application ne se relance pas mais que l'odre soit donné à l'appli minimalisée dans le tray d'apparaitre au premier plan:
mon code pour le moment est :  

Code :
  1. begin
  2.   SetLastError(NO_ERROR);
  3.   CreateMutex(nil, False, 'MonAppli.exe');
  4.   if GetLastError = ERROR_ALREADY_EXISTS
  5.     then  Application.BringToFront//ici il faudrait dire à l'appli de se  
  6. //déminimaliser du tray et d'apparaitre au premier plan
  7.   else
  8.   begin
  9.     Application.Initialize;
  10.     Application.CreateForm(TFMonapplmi, FMonappli);
  11.     Application.Run;
  12.   end;
  13. end.


Message édité par endemyon le 28-09-2004 à 11:37:40

---------------
Mes photos : http://500px.com/endemyon
mood
Publicité
Posté le 28-09-2004 à 11:36:31  profilanswer
 

n°858903
lsdYoYo
gravity powered
Posté le 28-09-2004 à 12:01:49  profilanswer
 

Ton problème est que dans la ligne "Application.BringToFront", la variable "Application" fait référence à la seconde appli qui vient d'être relancée et non celle qui est déjà chargée et planquée dans le SysTray.
Il faut que tu :
- obtiennes le "Handle" de ton appli déjà lancée. Regarde "FindWindow()" avec le titre de ton appli, mais attention tu risques de retomber encore sur la seconde appli ! Il faudrait lui attribuer un titre qu'après cette première étape passée (Application.Title = "" / FindWindow(Appli_Title) / Application.Title = Appli_Title). Il doit exister d'autres méthodes plus simples et plus sûres.
- réaffiches ton appli au premier plan avec SetForegroundWindow().
Note : FindWindow() et SetForegroundWindow() sont des fonctions de l'API Windows.
(je ne peux pas trop entrer dans les détails, je ne connais pas Delphi mais C++Builder).


Message édité par lsdYoYo le 28-09-2004 à 12:08:39
n°859684
endemyon
Posté le 29-09-2004 à 09:58:11  profilanswer
 

Merci, ça marche avec ce code.

Code :
  1. begin
  2.   SetLastError(NO_ERROR);
  3.   CreateMutex(nil, False, 'MyApp.exe');
  4.   if GetLastError = ERROR_ALREADY_EXISTS then
  5.   begin
  6.     application.Title:='';
  7.     handle:=findWindow(nil,'MyApp');
  8.     application.title:= 'MyApp.exe';
  9.     ShowWindow(Handle, SW_RESTORE);
  10.   end
  11.   else
  12.   begin
  13.     Application.Initialize;
  14.     Application.CreateForm(TFMyApp, FMyApp);
  15.     Application.Run;
  16.   end;
  17. end.


---------------
Mes photos : http://500px.com/endemyon

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

  restaurer une appli du tray

 

Sujets relatifs
Visual Studio 2003 et appli IIS sur Windows 2003 Server[HTML] Conseils look & feel pour une appli manager
Plantage appli perl/tk lors d'une boucle ?Partager des données entre plusieurs appli-web
[VC++] Changer le curseur au lancement d'une appli (busy)faire une barre de progression pour chargement appli[Applet]
detecter la fin dune appli win32[VC++6] Comment enregistrer une appli sous Windows? (association, etc)
[JAVA] Récupérer le répertoire d'où est lancé l'appli[Delphi] Récupérer les infos affichées par une autre appli
Plus de sujets relatifs à : restaurer une appli du tray


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