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 :

Ecran de démarrage et icones


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 423
    Par défaut Ecran de démarrage et icones
    Bonjour,

    Je développe un petit utilitaire proche de l'écran de démarrage de windows.
    Il est simple de lancer une applic avec une forme semi transparente du même genre.

    Quand on lance l'écran de démarrage, windows permet de voir en transparence le fond d'écran du bureau,
    mais les icônes de raccourci sont masquées et les applis passent en minimisées.

    Je sais faire en sorte de minimiser les applis et les restituer à leur état après fermeture de mon utilitaire,
    mais comment faire pour les icônes des raccourcis, comment les recenser et les faire disparaître ?

    Merci pour votre aide

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 934
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 934
    Par défaut
    En passant par une énumération des composants enfants en partant du desktop jusqu'à trouver la liste.

    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
    procedure ShowDesktopIconList(aShow :boolean);
    const
      Flags :array[boolean] of integer = (SW_HIDE, SW_SHOWNORMAL);
    var
      Worker :hWnd;
      Wnd    :hWnd;
    begin
      Worker := 0;
     
      while TRUE do
      begin
        Worker := FindWindowEx(0, Worker, 'WorkerW', nil);
        if Worker = 0 then Exit;
     
        Wnd := FindWindowEx(Worker, 0, 'SHELLDLL_DefView', nil);
        if Wnd = 0 then Continue;
     
        Wnd := FindWindowEx(Wnd, 0, 'SysListView32', nil);
        if Wnd <> 0 then
        begin
          ShowWindow(Wnd, Flags[aShow]);
          Exit;
        end;
      end;
    end;

  3. #3
    Membre éclairé
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 423
    Par défaut
    Merci AndNoTor,

    Je viens de trouver une autre manière qui ressemble beaucoup à la tienne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure ShortCutIsVisible(value: boolean);var
       Hdn: Thandle;
    begin
         hdn:= FindWindowEx(0,0, 'Progman',nil);
         if value then
            ShowWindow(hdn, 5)
         else
             ShowWindow(hdn, 0);
    end;

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 934
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 934
    Par défaut
    Tu développes encore sous Win7 alors, Progman n'existe plus depuis Win10...

    Et pour information, l'écran d'autentification est un autre bureau (Winlogon) et non le bureau utilisateur sans icône (Default).

  5. #5
    Membre éclairé
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 423
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Tu développes encore sous Win7 alors, Progman n'existe plus depuis Win10...

    Et pour information, l'écran d'autentification est un autre bureau (Winlogon) et non le bureau utilisateur sans icône (Default).
    M....de

    Mon EDI est sous VM Win7, mais je développe pour Win10, sauf que je n'ai pas encore testé...pas cool ta révélation.

    Edit: En tout cas, sous Win7, ça marchait bien. fin edit

    Bon, pas grave, je ne développe plus que pour moi, puisque je suis à la retraite depuis 2017

    Je vais regarder ça avant d'aller plus loin, peut être que GetDesktopWindow me renverra le bon Handle pour faire ce que je veux.
    Dans ton code, je suppose que WorkerW désigne le bureau de travail en cours ?

    Merci en tout cas,

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 934
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 934
    Par défaut
    Citation Envoyé par castorcharly Voir le message
    peut être que GetDesktopWindow me renverra le bon Handle pour faire ce que je veux.
    Non si tu veux masquer que des éléments du bureau.

    Citation Envoyé par castorcharly Voir le message
    Dans ton code, je suppose que WorkerW désigne le bureau de travail en cours ?
    Non, ce sont des objets appartenant au bureau. 0 en premier paramètre de FindWindowEx est équivalent à GetDesktopWindow : recherche des enfants directs du bureau.

    Tu peux cependant conditionner tout cela :
    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
    procedure ShowDesktopIconList(aShow :boolean);
    const
      Classes :array[boolean] of string = ('Progman', 'WorkerW');
      Flags   :array[boolean] of integer = (SW_HIDE, SW_SHOWNORMAL);
    var
      Wnd :hWnd;
    begin
      Wnd := 0;
     
      while TRUE do
      begin
        Wnd := FindWindowEx(0, Wnd, PChar(Classes[TOSVersion.Check(10)]), nil);
        if Wnd = 0 then Exit;
     
        if FindWindowEx(Wnd, 0, 'SHELLDLL_DefView', nil) <> 0 then
        begin
          ShowWindow(Wnd, Flags[aShow]);
          Exit;
        end;
      end;
    end;
    Par contre je constate que sous Win8 le papier peint appartient à Progman et disparaît, contrairement à 7 ou 11 (j'ai plus 10). Je chercherais plus profondément jusqu'à trouver SysListView32.

    Sinon pourquoi ne pas simplement ouvrir une fenêtre plein écran, StayOnTop qui reprend le papier peint en fond ?

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

Discussions similaires

  1. ecran rouge avant apparition des icones windows
    Par Dnetman dans le forum Ordinateurs
    Réponses: 2
    Dernier message: 03/02/2015, 11h30
  2. [SageX3V5] Cacher un libellé d'icône sur un écran
    Par Cereal123 dans le forum SAGE
    Réponses: 2
    Dernier message: 27/08/2014, 11h18
  3. Réponses: 6
    Dernier message: 28/03/2010, 23h59
  4. icône qui suit le curseur à l'écran
    Par laurentSc dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 15/12/2009, 08h51
  5. [VB]écran de veille qui reste en icone réduite
    Par marco62118 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 25/04/2006, 23h51

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