sp40
Messages postés1284Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 2015
-
18 avril 2012 à 11:09
sp40
Messages postés1284Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 2015
-
23 avril 2012 à 11:32
Bonjour,
pour info :
J'ai un petit code récupéré sur le net et permettant de contrôler qu'une appli ne sera lancée qu'une seule fois
Application.Title := 'Start MonApp';
GetClassName(Application.handle, ClassName, 254); {met dans ClassName le nom de la class de l'application}
result := FindWindow(ClassName, 'MonApp'); {renvoie le Handle de la première fenêtre de class (type) ClassName
et de titre TitreApplication (0 s'il n'y en a pas)}
// Une instance existante trouvée
if result <> 0 then begin
ShowWindow(result, SW_RESTORE);
SetForegroundWindow(result);
Application.Terminate;
end
else begin
Application.Title := 'MonApp';
//Application.MainFormOnTaskbar := True;
Application.CreateForm(TFMain, FMain);
Application.Run;
end;
ça évite qu'un utilisateur cliquant impatiemment 25 fois sur l’icône de démarrage lance 25 fois l'application...
Ce code est basé sur le titre de l'application. Or sous XE2, dans le fichier du projet (dpr), delphi nous rajoute un "Application.MainFormOnTaskbar := True" qui a pour effet (indésirable ?) de mettre le Application.Title à ''
Dommage...
ce code fonctionne dans tous les cas si Application.Tilte & MainForm.Caption sont identiques peut importe si Application.MainFormOnTaskbar = True ou False.
[list]Si Application.Tilte <> MainForm.Caption
et si Application.MainFormOnTaskbar = True
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 22 avril 2012 à 00:16
[quote=simonpelloquin]mais quand même, c'est contrariant. Je trouve juste dommage que l'application.title ne soit pas conservée. Et je ne comprends pas bien en quoi ça dérange l'affichage de la barre des tâches. Je subodore une fainéantise de développeur... (si application.title = '' alors affiche mainform.caption) /quote non non non
ce n'est ni un oubli ni une erreur ni même de la fainéantise ...
si je raconte pas de conneries(si j'en dis ... on me corrigera ), c'est une pratique propre à Delphi ... ils ont choisi de créer un objet TApplication qui contient une fiche invisible elle même créée avec le style WS_EX_APPWINDOW, ce qui lui permet d'être affichée dans la barre des tâches et de recevoir et traiter les messages windows ...
et quand on a : Application.MainFormOnTaskbar := True;
cette fiche n'est plus utilisée c'est la fiche principale qui reçoit le style WS_EX_APPWINDOW et de ce fait il n'est plus utile d'affecter le titre(caption) de cette fiche(invisible) comme elle n'est plus utilisée.
voilà, en gros, l'explication de ce comportement.
[hr]@+Cirec
[hr]
Vous n’avez pas trouvé la réponse que vous recherchez ?
sp40
Messages postés1284Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 18 avril 2012 à 14:16
Salut Cirec,
Effectivement, j'avais cru comprendre ça. Là où ça me dérange, c'est que le application.title est vide, et que FindWindow ne fonctionne pas. Je veux bien qu'il affiche la caption ou le titre dans la barre des tâches, mais pourquoi il efface le titre ???
sp40
Messages postés1284Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 19 avril 2012 à 09:15
D'accord, d'accord. Je vais adapter mon code... mais quand même, c'est contrariant. Je trouve juste dommage que l'application.title ne soit pas conservée. Et je ne comprends pas bien en quoi ça dérange l'affichage de la barre des tâches. Je subodore une fainéantise de développeur... (si application.title = '' alors affiche mainform.caption)
sp40
Messages postés1284Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 23 avril 2012 à 09:53
Merci Mauricio, je vais jeter un oeil à tes composants. Je viens de voir qu'il y a un paquet d'installation pour XE2. Est-ce qu'on peut quand même les installer aussi sur D5 et D7 ?
Et merci Cirec pour ces explications. C'est quand même dommage... Enfin, le tout c'est de le savoir.