IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

[Win32] Maintenir une application à l'avant plan [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut [Win32] Maintenir une application à l'avant plan
    Bonjour à tous.

    Je suis en train de développer un petit jeu pour ma fille de 2 ans, avec Lazarus : dès qu'elle appuie sur une touche du clavier (FormKeyDown), une photo s'affiche et un son est joué (par exemple, l'appui sur "C" déclenche l'affichage d'un camion et d'un bruit de klaxon)... Rien de bien compliqué donc.

    Sauf que l'application à du mal a résister a de multiples frappes aléatoires sur le clavier : de temps en temps, elle passe en arrière plan, ou le menu démarré apparait (suite à l'appui sur la touche Windows).

    Pour rémédier à cela, j'ai un Timer qui déclenche toutes les secondes le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      LucieWindow.FormStyle:=fsStayOnTop;
      Application.BringToFront;
      Application.ProcessMessages;
      LucieWindow.BringToFront;
    => Ce qui devrait permettre à l'application de rester devant (LucieWindow est le nom de ma fenetre principal).

    Mais cela n'est pas assez robuste : la touche Windows ou un Windows+M renvoie l'application à l'arrière. La seule combinaison de touche que je souhaite accepter est ALT+F4 pour fermer l'appli.

    Comment faire pour que mon appli passe et reste toujours au premier plan, devant la barre de tache, et qu'elle intercepte toutes les frappes clavier (sauf CTRL+ALT+SUPPR), meme Win+M , ALT+tab ect ??

    Merci d'avance.

    Jé.

  2. #2
    Membre émérite Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Par défaut
    Bonsoir,

    as-tu essayé avec FormStyle:=fsSystemStayOnTop ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    Avec fsStayOnTop, la fenetre reste en avant plan, mais si je clique sur une autre fenetre (un éditeur de texte derriere par exemple), c'est l'éditeur qui recevera les frappes clavier, et pas la fenetre qui est devant.

    Exemple : je lance mon appli en fenetre devant Notepad. Quand je clique sur Notepad, mon appli reste devant mais sa barre de menu est inactivé (grisé), c'est notepad qui à le focus (barre de menu activé), et quand je frappe au clavier, c'est notepad qui recoit les touches, alors que mon appli est devant. Mais elle a perdue le focus (bien qu'elle soit en StayOnTop).

  4. #4
    Membre émérite Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Par défaut
    Je ne comprends pas...
    Si tu as une fiche avec les attributs suivants:
    WindowState:=WsMaximised;
    FormStyle:=fsSystemStayOnTop
    ; // pas fsStayOnTop !!!

    Celle-ci occupe tout le bureau, y compris la barre des tâches. Donc je ne vois pas comment tu peux cliquer sur une autre application. À moins d'utiliser le clavier (ce qui est une autre histoire car il faut inhiber la touche Alt-Tab), mais tu parles de 'clics'...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    Avec la version v0.9.28.2 beta (téléchargée tout à l'heure - c'est la derniere version dispo pour windows), fsSystemStayOnTop n'est pas définit.

    je vais voir comment réimplémenter cela.

  6. #6
    Membre émérite Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Par défaut
    une piste pour désactiver Le Alt-Tab:
    http://support.microsoft.com/kb/226359

  7. #7
    Membre émérite Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Par défaut
    Citation Envoyé par jemore2 Voir le message
    Avec la version v0.9.28.2 beta (téléchargée tout à l'heure - c'est la derniere version dispo pour windows), fsSystemStayOnTop n'est pas définit.
    Normal car fsSystemStayOnTop a été implémenté à partir de la version 0.9.30
    Donc elle n'est pas encore disponible sur la dernière release. Seule solution pour toi: télécharger la dernière version 'Snapshoot'
    Pour ma part, j'utilise depuis mi-janvier la version Lazarus 0.9.31 en développement 64 bits sans soucis.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    Ok, je vais essayer de changer de version de Lazarus.
    La methode proposé par le MSDN pour capter le ALT+TAB semble sympa aussi, mais j'ai un peu de mal a l'implémenter (il faut un driver clavier bas niveau)

  9. #9
    Membre émérite Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Par défaut
    Citation Envoyé par jemore2 Voir le message
    La methode proposé par le MSDN pour capter le ALT+TAB semble sympa aussi, mais j'ai un peu de mal a l'implémenter (il faut un driver clavier bas niveau)
    Apparemment, c'est pas si simple à effectuer car il faut passer par un hook clavier et donc une DLL. Regarde ici.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    Ok pour le hook, cela fonctionne . J'arrive a intercepter les principales frappes qui me derangeaient.

    Merci pour tout!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/06/2012, 09h45
  2. [WinForms]application en avant plan
    Par thierry007 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/12/2006, 08h48
  3. Réponses: 5
    Dernier message: 28/10/2006, 14h50
  4. Réponses: 1
    Dernier message: 22/11/2005, 11h00
  5. Mettre une application en premier plan
    Par portu dans le forum API, COM et SDKs
    Réponses: 15
    Dernier message: 23/02/2005, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo