[..] Savoir si le bureau est affiché
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[..] Savoir si le bureau est affiché
Bonjour,
Je cherche une solution pour savoir si, lors d'une ouverture de session, le bureau Windows s'est affiché ou pas encore.
Pour préciser : je travaille sur un outil qui affiche des infos sur utilisateur à l'ouverture de session (simple msgbox), avec un délai automatique de fermeture de fenêtre de quelques secondes. Problème : Selon les postes ou les différentes versions de Windows, les temps d'ouverture de session ne sont pas les mêmes, à tel point que si la fenêtre s'affiche 10s sur un poste et se ferme automatiquement, une ouverture de session plus lente sur un autre poste aura comme conséquence qu'on ne verra même pas la fenêtre ! (car l'écran bleu "bienvenue" d'un Win7 peut être long... et couvrir ma fenêtre !)
Et je n'ai aucune idée de comment faire ! J'ai testé quelques trucs : lecture tous les X ms de la taille d'écran, état d'une icône dans le systray ; sans succès.
Auriez-vous une piste ou une idée ?
Bruno
Je cherche une solution pour savoir si, lors d'une ouverture de session, le bureau Windows s'est affiché ou pas encore.
Pour préciser : je travaille sur un outil qui affiche des infos sur utilisateur à l'ouverture de session (simple msgbox), avec un délai automatique de fermeture de fenêtre de quelques secondes. Problème : Selon les postes ou les différentes versions de Windows, les temps d'ouverture de session ne sont pas les mêmes, à tel point que si la fenêtre s'affiche 10s sur un poste et se ferme automatiquement, une ouverture de session plus lente sur un autre poste aura comme conséquence qu'on ne verra même pas la fenêtre ! (car l'écran bleu "bienvenue" d'un Win7 peut être long... et couvrir ma fenêtre !)
Et je n'ai aucune idée de comment faire ! J'ai testé quelques trucs : lecture tous les X ms de la taille d'écran, état d'une icône dans le systray ; sans succès.
Auriez-vous une piste ou une idée ?
Bruno
- orax
- Modérateur

- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [..] Savoir si le bureau est affiché
Le script s'exécute comment ? Registre, tâche planifiée, ... ? Je crois que si le script est dans un des dossiers "Démarrage", il devrait s'exécuter quand le bureau est déjà affiché.
Code : Tout sélectionner
ConsoleWrite(@StartupCommonDir & @CRLF) ; C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
ConsoleWrite(@StartupDir & @CRLF) ; C:\Users\*****\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\StartupDe petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Re: [..] Savoir si le bureau est affiché
oui tu peux mettre ton script dans le dossier démarrage de All Users avec un sleep au début de script pour temporiser si tu veux mais normalement il devrait s'éxécuter une fois que windows a tout chargé
Re: [..] Savoir si le bureau est affiché
Merci pour les réponses,
Le problème est que ce service lance ça de suite, même si Windows n'a pas encore affiché le bureau utilisateur (et qu'il y a encore le fond bleu et le "bienvenue" qui tourne...).
Dans le fonctionnement, je suppose que ça revient à un démarrage spécifique à l'utilisateur (un peu comme avec le dossier démarrage du menu démarrer).
En gros, j'ai un délai dans un fichier INI du genre "Win_XP = 5", "WIN_7 = 10", mais ça ne convient pas vraiment. Et comme je ne voulais pas faire de la temporisation poste par poste (y'en a près de 200 !), je cherchais à savoir QUAND est-ce que le bureau est affiché, pour pouvoir lancer l'affichage de mon message à ce moment-là.
Je ne sais pas si j'ai réussi à bien expliquer.
Bruno
(Edit : ajout du code)
L'appli est lancée à l'ouverture de session par le poste, depuis un serveur Samba (via un "netlogon") ; en gros, un service (sur lequel je n'ai pas la main) tourne sur le poste, et lance au logon des scripts en fonction de différents paramètres (poste, utilisateur, groupe d'utilisateur).orax a écrit :Le script s'exécute comment ? Registre, tâche planifiée, ... ? Je crois que si le script est dans un des dossiers "Démarrage", il devrait s'exécuter quand le bureau est déjà affiché.
Le problème est que ce service lance ça de suite, même si Windows n'a pas encore affiché le bureau utilisateur (et qu'il y a encore le fond bleu et le "bienvenue" qui tourne...).
Dans le fonctionnement, je suppose que ça revient à un démarrage spécifique à l'utilisateur (un peu comme avec le dossier démarrage du menu démarrer).
Pour l'instant, j'utilise déjà une temporisation, paramétrée en fonction de l'OS : je n'ai pas mis le même délai pour les XP, Vista, 7 et 8. Mais malgré cela, j'ai encore des postes (sous 7 par exemple) où on arrive à la toute fin de la fenêtre, et d'autres où on attend que ça se lance...Bayo a écrit :oui tu peux mettre ton script dans le dossier démarrage de All Users avec un sleep au début de script pour temporiser si tu veux mais normalement il devrait s'éxécuter une fois que windows a tout chargé
Code : Tout sélectionner
$int_delai_demarrage = 0
$delai = IniRead($fichier_ini, "OSDelay", @OSVersion, $int_delai_demarrage)
ConsoleWrite("@OSVersion = " & @OSVersion & " ; Délai ini : " & $delai & @CRLF)
If ((StringIsDigit($delai) = 0) Or ($delai > 120)) Then
$delai = $int_delai_demarrage
Else
$delai = Number($delai)
EndIf
Sleep($delai * 1000)Je ne sais pas si j'ai réussi à bien expliquer.
Bruno
(Edit : ajout du code)
Re: [..] Savoir si le bureau est affiché
Bon, j'ai pas testé pas pourquoi pas...
L'idée est de dire que "tant qu'il n'y a pas d'icônes sur le bureau", je reste dans la boucle :
L'idée est de dire que "tant qu'il n'y a pas d'icônes sur le bureau", je reste dans la boucle :
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: [..] Savoir si le bureau est affiché
peut-être idiot mais en attendant le processus explorer.exe? je sais pas si il est lancé lors du Bienvenue de Seven mais je pense pas.
- GhostLine
- Niveau 7

- Messages : 342
- Enregistré le : jeu. 12 mars 2009 15:28
- Localisation : Paris
- Status : Hors ligne
Re: [..] Savoir si le bureau est affiché
L'idée serait de chercher le dernier processus qui démarre (quitte à en faire un "dummy" qui te servirait de "marqueur"), et d'attendre qu'il s'exécute, non ? Après, je suggère, mais je ne sais pas comment faire 
Re: [..] Savoir si le bureau est affiché
Bonsoir à tous, et merci pour vos idées.
Je suis parti sur la proposition de jguinch :
Sur mon PC perso, j'ai toujours 2 valeurs identiques à l'ouverture de session. Sur un PC au boulot, j'ai près de 11 secondes d'écart ! Et effectivement, le bureau est longuet à s'afficher.
Je vais me bidouiller mon appli pour que si c'est moi qui ouvre une session ça m'affiche toutes ces infos : instant de lancement, instant où le _WaitDesktop est bon, etc...
C'est peut-être une bonne piste, merci à tous.
(pour les autres propositions, mystère quant à comment faire !)
Bruno
Je suis parti sur la proposition de jguinch :
Avec un code qui m'affiche ensuite les "chronos" d'Autoit, modifié pour ne pas resté dans une boucle infinie (au pire, 10s de sleep) :jguinch a écrit :L'idée est de dire que "tant qu'il n'y a pas d'icônes sur le bureau", je reste dans la boucle
► Afficher le texte
Je vais me bidouiller mon appli pour que si c'est moi qui ouvre une session ça m'affiche toutes ces infos : instant de lancement, instant où le _WaitDesktop est bon, etc...
C'est peut-être une bonne piste, merci à tous.
(pour les autres propositions, mystère quant à comment faire !)
Bruno
- orax
- Modérateur

- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [..] Savoir si le bureau est affiché
J'avais eu la même idée que Bayo mais ça ne marchait pas bien sur Windows 8. Explorer était exécuté après l'ouverture de session, mais sur Win 8 c'est l'interface "modern UI" qui s'affiche par défaut après l'ouverture de session et non le bureau. J'avais fait ce truc pour voir à quel moment explorer était exécuté.
Code : Tout sélectionner
Do
Sleep(100)
Until ProcessExists("explorer.exe")
FileWriteLine('C:\Users\******\Desktop\b.txt',@MIN & ':' & @SEC)De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Re: [..] Savoir si le bureau est affiché
Oui, je vais finir par un truc comme ça, parce que l'autre solution ne donne rien de concluant.
Et j'ai pas envie de faire une analyse de boot, c'est trop long.
Et j'ai pas envie de faire une analyse de boot, c'est trop long.


