Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Directive inconnue sur une définition de procedure [ Divers / Aide et documentation ] (John Dogget)

mercredi 15 août 2007 à 19:13:27 | Directive inconnue sur une définition de procedure

John Dogget

Salut à tous.

Je tente d'écrire une unité qui contiendrait les quelques fonctions élémentaires pour réduire une application dans le systray ...
Jusqu'à maintenant j'arrive à réduire et agrandir mon application, mais par contre impossible d'arriver à capturer un double-clic sur l'icône de l'application réduite.

D'après les nombreuses sources que j'ai trouvé ici et là, il faut utiliser les messages pour faire ce genre de choses.

Le hic, c'est que tous les exemples que j'ai pu tester fonctionnent bien, mais quand je fais un bête copier/coller de la procedure qui est censé gerer les messages, le compilateur ne veux plus en entendre parler (m'enerve celui là )

Voici texto ce que j'ai ecris (toute l'unité en question)
---------------------------------------------------

unit Reduction_SysTray;

interface

uses ShellAPI, Forms, Messages, Windows;

Const
  WM_MONICONE = WM_USER +1;

  procedure AjouterIcone(FenetreConcernee:TForm);
  procedure SupprimerIcone(FenetreConcernee:TForm);
  procedure ReduireFenetre(FenetreConcernee:TForm);
  procedure RestaurerFenetre(FenetreConcernee:TForm);
  procedure WMTrayIconMessage(var Msg: TMessage); message WM_MONICONE;

var
  FenetreApplication:TForm;

implementation

uses Fenetre_Principale;

procedure AjouterIcone(FenetreConcernee:TForm);
var
  Info:TNotifyIconData;
begin
  Info.cbSize           := SizeOf(Info);
  Info.Wnd              := FenetreConcernee.Handle;
  Info.uID              := 1;
  Info.szTip            := 'test';
  Info.hIcon            := Application.Icon.Handle;
  Info.uCallbackMessage := WM_MONICONE;
  Info.uFlags           := NIF_TIP Or NIF_ICON Or NIF_MESSAGE;
  Shell_NotifyIcon(NIM_ADD,@Info);
end;

procedure SupprimerIcone(FenetreConcernee:TForm);
var
  Info:TNotifyIconData;
begin
  Info.cbSize := SizeOf(Info);
  Info.Wnd    := FenetreConcernee.Handle;
  Info.uID    := 1;
  Shell_NotifyIcon(NIM_DELETE,@Info);
end;

procedure ReduireFenetre(FenetreConcernee:TForm);
begin
  FenetreApplication:=FenetreConcernee;
  AjouterIcone(FenetreConcernee);
  ShowWindow(Application.Handle, SW_HIDE);
end;

procedure RestaurerFenetre(FenetreConcernee:TForm);
begin
  ShowWindow(Application.Handle, SW_SHOW);
  Application.Restore;
  SupprimerIcone(FenetreConcernee);
end;

procedure WMTrayIconMessage(var Msg: TMessage);
begin
  if Msg.LParam=WM_LBUTTONDBLCLK then
    RestaurerFenetre(FenetreApplication);
end;

end.
----------------------------------------------------------------

A la compilation, ça coince à la ligne 14 :
> procedure WMTrayIconMessage(var Msg: TMessage); message WM_MONICONE
> [Erreur] Reduction_SysTray.pas(14): Directive inconnue : 'message'

Je vais devenir chèvre avec ces messages ... help

jeudi 16 août 2007 à 08:31:54 | Re : Directive inconnue sur une définition de procedure

WhiteHippo

Membre Club
Bonjour

la directive message n'est utilisable qu'avec des méthodes, c'est à dire au sein de la définition d'une classe. Sinon il faut passer par la définition d'une fonction WndProc.

Cordialement.

"L'imagination est plus importante que le savoir." Albert Einstein

jeudi 16 août 2007 à 17:37:13 | Re : Directive inconnue sur une définition de procedure

John Dogget

Ha ... bin ça m'eclaire pas plus que ça
Concretement, qu'est ce qu'il faudrait rajouter à mon code pour que ça marche ?

jeudi 16 août 2007 à 18:17:03 | Re : Directive inconnue sur une définition de procedure

WhiteHippo

Membre Club
Comme je l'ai dit précédemment, il faut créer une classe pour pouvoir beneficier de l'utilisation de la directive message. Donc tu crées une class dérivée de TForm par exemple, et tu y integres ton code.

N.B. Les exemples ne manquent pourtant pas sur le site concernant la gestion du systray :
  http://www.delphifr.com/recherche.aspx?r=systray&tr=source (Le premier exemple de la liste contient déjà tout ce que tu cherches à faire)

Cordialement.

"L'imagination est plus importante que le savoir." Albert Einstein



Cette discussion est classé dans : application, tform, procedure, info, fenetreconcernee


Répondre à ce message

Sujets en rapport avec ce message

difficile à résumer en une phrase :) [ par nicobara ] Bonjour à tous.Voila, j'ai un problème (non sans blague), voila mon code :procedure TFModifUtil.GestAffNiveauUtil(NiveauUtil : integer);var i : intege Create Form explication [ par Bruto ] Salut,voila comme je débute en Delphi ( migration VB oblige ), je rencontre qq prob's.Explication ( ce que je voudrais ) :Mon programme se lance et pa Application console et procedure [ par MoveX ] dans mon appli je suis oblige d ecrire les procedures avant quelles ne soient appelees sinon ca plante sachant que ma structure est :program ...;{$APP cacher une MDi [ par neko ] Bonjour tout le monde, vala, j'ai un petit probleme avec une form mdi:en effet, mon but est de cacher l'application pour la mettre dans le tray. Chose Problème avec les TMemo [ par sebmime ] Bonjour,Mon application permet de créer des petites zones de texte (des TMEMO) qui sont affichées sur une TFORM.je créé donc mes TMemo avec des "creat dériver une form ? [ par DeltaFX ] En fait j'ai besoin d'ajouter à la class Tform une procedure, donc de créer une classe du genre TExtendForm qui reprendraient tout d'une TForm normale inheritance class [ par popo_joe ] bonjour tout le monde!voila je voudrai encore mieu comprendre les class ainsi que les sous class , j'ai justement une question par rapport a cela ,lor Choisir le dosier de sauvegarde [ par cocowz ] Bonjour,J'ai telecharge un fichier mxWebUpdate sur (http://www.maxcomponents.net/download.html#MXWEBUPDATE)J'ai compris le systeme mais la chose que j Je pensais faire un Keylogger mais c pas si simple... [ par Youyou0214 ] je voudrais faire un keylogger mais je viens a peine de commencer et des problemes se posent deja. Je voulait que mon application demarre au demarrage Je pensais faire un Keylogger mais c pas si simple... [ par Youyou0214 ] je voudrais faire un keylogger mais je viens a peine de commencer et des problemes se posent deja. Je voulait que mon application demarre au demarrage


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.