Bonjour à tous !
J'ai un souci qui me fait perdre la raison et commence à me rendre dingue, c'est pourquoi je fait appel à vous, les experts, pour me sauver la vie (d'accord, peut-être que j'exagère un peu...).
Voici le contexte (lecture optionnelle):
j'ai créé un service Windows qui doit lancer un sous-programme dont le but est de télécharger un EXE et de le lancer. Dans le cas de mon test, l'EXE téléchargé est un Setup d'application avec une IHM.
Mon problème initial concernait la fenêtre du Setup lancé avec un "CreateProcessAsUser" (avec le token pour s'afficher sur le bureau...je vous passe les détails) : cette fenêtre apparait sous toutes les autres fenêtres ouvertes.
Du coup, je me dis "pas de problème, on peut changer l'ordre d'affichage avec un SetForegroundWindow" et tout et tout". Mon soucis est que j'ai besoin du HWND de la fenêtre du Setup lancé pour pouvoir la passer au-dessus des autres.
Ok, à priori, je peux trouver le HWND à partir du PID du Setup en utilisant une combinaison de "EnumWindows" et "EnumChildWindows".
Voici le problème:
Je ne trouve pas le HWND de mon Setup lancé depuis l'application qui tourne dans System. Cela vient du fait que mon processus system ne voit que les HWND qui sont "autour" de lui, et que les autres se trouvant dans l'espace "user" sont inaccessibles depuis là.
Voici la(les) question(s):
Comment pourrais-je accéder à l'ensemble des HWND (de toutes les sessions, etc.) comme le fait l'explorateur des tâches de Windows ?
Ou bien, comment mettre mon processus appelant dans l'espace "desktop" du user courant ?
Mes questions sont-elles sensées ou bien suis-je complètement à la rue ? :p
Merci d'avance pour votre lecture et vos réponses.
@+
Partager