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

Delphi Discussion :

Utilisation de FindWindowEx


Sujet :

Delphi

  1. #1
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut Utilisation de FindWindowEx
    Bonjour

    Je cherche un moyen d'enlever de la barre des tâches le tab correspondant à une application.
    Pour ce faire, je procède comme suit...
    Grâce à des méthodes FindWindow et FindWindowEx successives, j'obtiens le handle des tabs de la barre des tâches :
    Shell_TrayWnd qui contient
    ReBarWindow32 qui contient
    MSTaskSwWClass qui contient
    SysTabControl32

    A ce stade, la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShowWindow (monhandle, SW_HIDE );
    masque l'ensemble des tabs de toutes les fenêtres actives - entre la barre de lancement rapide et la "systray" - (win 98)
    Ce que je voudrais, c'est cacher uniquement "l'onglet" d'une seule de ces fenêtres dans la barre des tâches

    Ce qui m'amène à la question :
    A quoi correspond le dernier paramètre de la méthode FindWindowEx ?
    Je pensais qu'il fallait y passer la caption de la fenêtre qu'on veut désigner...
    mais ça ne fonctionne pas ! FindWindowex me renvoie zéro si je rentre autre chose qu'une chaîne vide dans ce foutu 4ème paramètre...

    Une idée ?
    Choisir, c'est renoncer...

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 740
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 740
    Points : 15 153
    Points
    15 153
    Par défaut
    Yop !
    Mon sdk me dit, :
    lpszWindow
    [in] Pointer to a null-terminated string that specifies the window name (the window's title). If this parameter is NULL, all window names match.
    Fais donc voir ton code...
    --
    jp
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut
    Salut

    Effectivement, je l'ai lu aussi sur msdn

    En fait, j'ai "monté" un test pour un autre PC sous win 98 (ici, j'ai xp et apparemment la hérarchie de Shell_TrayWnd n'est pas identique)
    Voici le code (un peu compliqué vu que je voulais tester les paramètres en les saisissant dans des editbox...)
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      label1.Caption:=inttostr(findwindow(pchar(edit1.text),''));
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      label2.Caption:=inttostr(findwindowex(strtoint(label1.Caption),$0,pchar(edit2.Text),''));
    end;
     
    procedure TForm1.Button3Click(Sender: TObject);
    begin
      label3.Caption:=inttostr(findwindowex(strtoint(label2.Caption),$0,pchar(edit3.Text),pchar(contenu1.Text)));
    end;
     
    procedure TForm1.Button4Click(Sender: TObject);
    begin
      label4.Caption:=inttostr(findwindowex(strtoint(label3.Caption),$0,pchar(edit4.Text),pchar(contenu2.Text)));
    end;
     
    procedure TForm1.bcach1Click(Sender: TObject);
    begin
      showwindow(strtoint(label1.Caption),SW_HIDE);
    end;
     
    procedure TForm1.bmontr1Click(Sender: TObject);
    begin
      showwindow(strtoint(label1.Caption),SW_SHOW);
    end;
     
    procedure TForm1.bcach2Click(Sender: TObject);
    begin
      showwindow(strtoint(label2.Caption),SW_HIDE);
    end;
     
    procedure TForm1.bmontr2Click(Sender: TObject);
    begin
      showwindow(strtoint(label2.Caption),SW_SHOW);
    end;
     
    procedure TForm1.bcach3Click(Sender: TObject);
    begin
      showwindow(strtoint(label3.Caption),SW_HIDE);
    end;
     
    procedure TForm1.bmontr3Click(Sender: TObject);
    begin
      showwindow(strtoint(label3.Caption),SW_SHOW);
    end;
     
    procedure TForm1.bcach4Click(Sender: TObject);
    begin
      showwindow(strtoint(label4.Caption),SW_HIDE);
    end;
     
    procedure TForm1.bmontr4Click(Sender: TObject);
    begin
      showwindow(strtoint(label4.Caption),SW_SHOW);
    end;
    Je ne suis pas sûr que ça va t'aider
    Choisir, c'est renoncer...

  4. #4
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 740
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 740
    Points : 15 153
    Points
    15 153
    Par défaut
    If hwndChildAfter is NULL, the search begins with the first child window of hwndParent.
    Ça serait-y pas ça le blème (2e paramètre) ? La 1re "child window" d'une appli n'est pas obligatoirement celle qui va te donner l'info que tu attends ; par exemple, la 1re "child window" de Notepad, c'est le mémo.
    Mes 2 cts,
    --
    jp
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  5. #5
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut
    Au cours de mon test (copie écran attachée), je récupère le handle de SysTabControl32 (niveau 4 de Shell_TrayWnd), qui est 360

    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    showwindow(360,SW_HIDE);
    je masque tous les tabs de la barre des taches...
    Donc, jusque là ça fonctionne bien

    Comment sélectionner un seul de ces tabs

    Si je rentre autre chose qu'une chaîne vide en 4ème paramètre, FindWindowEx renvoie zéro... et
    ... c'est peau d'balle

    Merci Jipété
    Choisir, c'est renoncer...

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 740
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 740
    Points : 15 153
    Points
    15 153
    Par défaut
    Cadeau.
    Jette un oeil au zip joint, qui énumère les processus, pour chacun les Main Windows et pour chacune les Child Windows.
    Tu devrais t'en sortir avec ça.
    --
    jp
    Fichiers attachés Fichiers attachés
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  7. #7
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut
    J'ai trouivé la réponse ici

    http://www.developpez.net/forums/sho...r+barre+taches

    Bonne prog
    Choisir, c'est renoncer...

  8. #8
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 188
    Points : 113
    Points
    113
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Cadeau.
    Jette un oeil au zip joint, qui énumère les processus, pour chacun les Main Windows et pour chacune les Child Windows.
    Tu devrais t'en sortir avec ça.
    --
    jp
    Bonjour,

    quelques temps plus tard ... ben merci pour le petit prog, ça marche nickel cette manière, ça sur windows2012 R2, j'avais de gros soucis pour connaitre le handle d'une autre appli.


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

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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