Création d'un programme en background scrutant le clavier
Bonjour à tous,
Je cherche à réaliser un petit programme , mais m'aperçois qu'il me manque les briques de bases pour pouvoir commencer.
Je sollicite donc votre aide pour me mettre sur la piste .
Objectif:
Créer un programme Windows qui:
1. tournerait en background (rendant la main une fois lancé)
2. serait en attente de certains combinaisons de touches du clavier (pour actions ou pour arrêt)
3. serait capable d'afficher au premier plan de l'écran (et donc par dessus une éventuelle application graphique en cours) à un endroit déterminé un caractère ( ou une icone) .
Je pense que des infos doivent déjà exister sur cet excellent forum , mais je n'ai pas du utiliser les bons mots clés car je n'ai pas réussi à trouver les réponses à mes questions.
D'avance merci pour votre aide.
Application BackGround sous Lazarus
Bonjour..
J'ai récemment résolu une problématique identique. Cela consiste a faire en sorte que la fenêtre principale ne s'affiche pas au démarrage et à utiliser un menu surgissant associé à une icône dans la zone de notification (au lieu de raccourcis clavier). J'ai procédé ainsi :
1) Pour empêcher la fenêtre principale de l'application de s'afficher au démarrage j'ai ajouté la ligne suivante dans le programme principal, (avant la ligne Application.Run) :
Code:
1 2
| Application.ShowMainForm := false;
Application.Run; |
2) J'ai créé un composant TTrayIncon (onglet Comon controls de la palette), fixé sa propriété Visible := true; et affecté une icône (fichier .ico) à sa propriété Icon (c'est l'icône qui apparaît dans la zone de notification).
3) J'ai ensuite créé un composant TPopUpMenu et l'ai affecté à la propriété PopUpMenu du TTrayIcon. C'est ce menu qui s'affiche par un clic droit sur l'icône de la zone de notification. Programmer dans ce menu toutes les commandes nécessaires à l'application (affichage de dialogue, fermeture, etc.). On peut aussi exploiter l'événement OnClick du TTrayIcon (clic gauche sur l'icône).
4) Pour les notifications il y a plusieurs possibilités :
- indication visuelle en changeant dynamiquement l'icône dans la zone de notification. Par exemple en stockant les différentes icônes dans un TImageList puis en codant :
Code:
MonImageList.GetIcon(x, MaTrayIcon.Icon);
x étant l'index de l'icône voulue dans MonImageList. Le changement d'icône est immédiatement visible dans la zone de notification.
- Utiliser un composant TPopUpNotifier (onglet Common controls de la palette). C'est une boîte sans bordure, comportant un titre, un texte, éventuellement une Icône et enfin un bouton de fermeture.
Elle peut s'afficher à un endroit quelconque de l'écran (Méthode ShowAtPos).
Si on veut qu'elle s'affiche au premier plan (toutes applications confondues) il faut programmer explicitement (ce n'est pas une propriété accessible dans l'inspecteur d'objets) :
Code:
PopUpNotifier1.vNotifierForm.FormStyle:= fsSystemStayOnTop;
- Enfin plus classiquement on peut afficher des boites message ou dialogues en mode modal.
Voilà, si tu veux plus de détails je suis à ta disposition.