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

API, COM et SDKs Delphi Discussion :

Barre des tâches


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 21
    Par défaut Barre des tâches
    salut
    je me demandais si c'etait possible de cacher la fenetre de la barre des taches ( laisser la fenetre visible , cacher juste son icone [---Msn----] en bas dans la barre des taches ) a part avec un SW_HIDE ( vu que ca cache la fenetre aussi ) .
    Merci d'avance

  2. #2
    rbh
    rbh est déconnecté
    Membre chevronné Avatar de rbh
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    384
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 384
    Par défaut
    Salut
    je ne sais pas si ça peut t'aider, mais moi j'ai fait le contraire (afficher dans la barre des tâche des icones pour des feuilles qui n'en ont pas) en utilisant la méthode CreateParam de TForm et le type TCreateParam.
    Une recherche dans les aides de delphi et/ou avec google devrait te donner plus de renseignements.
    En espèrant t'avoir aider.

  3. #3
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut
    salut,
    ca c'est un truc que j'ai fait il y a pas mal de temps, je n'ai pas le code en question sous la main, mais je sais néanmoins qu'un moyen d'y arriver est par exemple d'ôter le style WS_EX_TOOLWINDOW des attibuts de ta fenêtre en utilisant la fonction SetWindowLong.
    ce sujet peut aussi t'interesser, vu qu'il permet de lister les fenêtres tel que le fait la barre des tâches
    http://www.developpez.net/forums/viewtopic.php?t=477773

  4. #4
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 21
    Par défaut
    Merci .
    j'ai essayé avec ma form en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SetWindowLong(application.handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
    ca marche parfait .
    mais quand j'essaye de le faire avec une fenete Internet explorer ou bloc note ca marche pas , et c'est ce que je cherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    begin
    ie := FindWindowEx(0,0, 'IEFrame', 0);
    SetWindowLong(ie, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
    end;

  5. #5
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut,

    J'ai essayé ce code et il fonctionne parfaitement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
    Mais il est peut-être nécessaire de masquer temporairement ton appli !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      ShowWindow(Application.Handle, SW_HIDE);
      SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW); 
      ShowWindow(Application.Handle, SW_SHOW);
    Tiens-nous au courant...
    @+

  6. #6
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 21
    Par défaut
    Heu claudius , sur mon post plus haut j'avais dis que pour mon application ( application.handle) ca marchais bien ...
    mais pas quand j'essaye avec internet explorer ou Bloc note , et c'est d'autres applications que j'essaye de modifier non pas la mienne .
    Merci a vous

  7. #7
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Hello Hellboy,

    Effectivement j'avais lu trop rapidement ! Sorry

    Alors pour me racheter (et aussi par curiosité) je suis quand même arriver à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      hHandle := FindWindowEx(0, 0, 'IEFrame', nil);
      if hHandle = 0 then
        ShowMessage('Frame IE absente!');
      else
        begin
          ShowWindow(hHandle, SW_HIDE);
          SetWindowLong(hHandle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
          ShowWindow(hHandle, SW_SHOW);
        end;
    C'est exactement ton code avec en plus les 2 lignes ShowWindow, car j'ai trouvé ça sur la msdn.

    Managing Taskbar Buttons
    [...]
    The Shell will remove a window's button from the taskbar only if the window's style supports visible taskbar buttons. If you want to dynamically change a window's style to one that doesn't support visible taskbar buttons, you must hide the window first (by calling ShowWindow with SW_HIDE), change the window style, and then show the window.
    [...]
    @+ Claudius

  8. #8
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 21
    Par défaut
    Merci a toi claudius .
    je cherche pas a cacher la fenetre .
    c ca que j'essaye de doubler

  9. #9
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut,

    Oh là! J'ai l'impression d'être à côté de la plaque depuis le début :

    Si tu cherches à masquer uniquement le bouton de l'appli dans la barre de tâche (le bouton, son texte et son icône), avec le code de mon précédent post j'y suis parvenu. La fenêtre de l'appli étant elle toujours visible et accessible.

    Le SetWindowLong étant juste intercalé entre deux ShowWindow: un coup SW_HIDE puis SW_SHOW pour restaurer (et rafraîchir) l'affichage de la fenêtre.

    @+

  10. #10
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut
    Citation Envoyé par Claudius40
    Oh là! J'ai l'impression d'être à côté de la plaque depuis le début Question Exclamation
    non non non
    c'est plutot HellBoy qui n'a pas compris que tu donne une solution à son problème
    Citation Envoyé par HellBoy
    je cherche pas a cacher la fenetre .
    c ca que j'essaye de doubler
    il n'ya qu'a lire correctement l'extrait de la msdn que tu as posté

  11. #11
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 21
    Par défaut
    Yop
    non evarisnea , j'ai bien lu et tout essayé , d'ailleurs dans mon post j'ai dis
    SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
    que ca , ca marchais tres bien
    mais si vous changez application.handle par le handle d'une autre fenetre externe , vous remarquerez que ca ne marchera pas

  12. #12
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut
    voila le code que j'ai exécuté, d'après celui de Claudius40
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      hHandle :THandle;
    begin
    	hHandle := FindWindowEx(0, 0, 'IEFrame', nil);
      if hHandle = 0 then
        ShowMessage('Frame IE absente!')
      else
      begin
        ShowWindow(hHandle, SW_HIDE);
        SetWindowLong(hHandle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
        ShowWindow(hHandle, SW_SHOW);
      end;
    end;
     
    end.
    et je t'assure qu'il marche nickel
    sauf qu'il ne faut plus compter sur les boutons réduire et agrandir de la fenêtre .

  13. #13
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 21
    Par défaut
    Bon ...
    je sais que ca marche mais je tiens a te rapeller que un peu plus haut encore j'ai precisé que je ne veux pas cacher la fenetre puis la refaire apparaitre ( les firewalls prendront mon prog pour malware...) c'est pas ce que je cherche .

  14. #14
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut
    Citation Envoyé par hellboy
    Bon ...
    je sais que ca marche mais je tiens a te rapeller que un peu plus haut encore j'ai precisé que je ne veux pas cacher la fenetre puis la refaire apparaitre ( les firewalls prendront mon prog pour malware...) c'est pas ce que je cherche .
    pourtant apparemment c'est une condition sine qua non

    Citation Envoyé par Claudius40
    C'est exactement ton code avec en plus les 2 lignes ShowWindow, car j'ai trouvé ça sur la msdn.

    Citation:

    Managing Taskbar Buttons
    [...]
    The Shell will remove a window's button from the taskbar only if the window's style supports visible taskbar buttons. If you want to dynamically change a window's style to one that doesn't support visible taskbar buttons, you must hide the window first (by calling ShowWindow with SW_HIDE), change the window style, and then show the window.
    [...]
    résumé:si tu veux changer dynamiquement le style d'une fenêtre pour un style qui ne s'affiche pas dans la barre des tâches, tu dois premièrement cacher la fenêtre (en appellant ShowWindow avec SW_HIDE), changer le style de la fenêtre, et puis afficher la fenêtre.

  15. #15
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 21
    Par défaut
    on dirais que ya pas d'autre solution .
    merci quand meme

Discussions similaires

  1. [C#] Icône, barre des tâches et Service Windows
    Par SErhio dans le forum Windows Forms
    Réponses: 17
    Dernier message: 03/09/2004, 12h56
  2. Etat Barre des tâches
    Par portu dans le forum Windows
    Réponses: 2
    Dernier message: 20/08/2004, 13h09
  3. Faire clignoter la barre des tâches
    Par SteelBox dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/01/2004, 18h16
  4. Comment masquer le MessageBox de la barre des tâches ?
    Par Coussati dans le forum Langage
    Réponses: 7
    Dernier message: 25/08/2003, 14h33
  5. HAUTEUR de la barre des tâches de Windows ?
    Par Lung dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 13/12/2002, 11h43

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