OVH Cloud OVH Cloud

Ouvrir une application sans rien en barre des tâches

8 réponses
Avatar
gloops
Bonjour tout le monde,

Au travail je dois ouvrir de nombreuses fenêtres d'explorateur, et leurs
titres commencent à peu près tous pareil, ce qui fait que je me trouve
avec la barre des tâches garnie d'icônes inexploitables.

Ces fenêtres s'ouvrent par lots de trois, pour gérer des sites web, une
pour gérer les paramètres du site, une pour le contenu, et une pour
visualiser le résultat.

Aussi, j'aimerais préparer un formulaire avec pour chaque site à gérer
une étiquette et trois boutons, chaque bouton ouvrant la fenêtre
correspondante.

Jusque là, c'est sans problème.

Le raffinement, ça serait que des icônes n'apparaissent pas dans la
barre des tâches pour ces fenêtres d'explorateur Internet. Des questions
très proches ont été posées ici il y a un peu plus de deux ans, mais
sauf si j'ai mal cherché elles n'ont pas reçu de réponse.

J'ai trouvé comment faire pour que mon formulaire n'apparaisse pas dans
la barre des tâches, mais pas de chance, c'est justement la seule icône
que j'aimerais garder visible à cet endroit.

Il y a la piste de l'exécution en tant que service (sous Windows XP).
J'ai appris qu'elle était semée d'embûches, est-il raisonnable de s'y
engager si on ne veut pas avoir un programme qui fasse des blagues sur
le poste d'un collègue qui l'utiliserait, au bout de deux semaines ?

Est-ce que cette question inspire quelqu'un ?

______________________
niark.fr ... vous avez déjà vu un nom de domaine pareil, vous ?
Complètement gloops, ce mec ...

8 réponses

Avatar
François Picalausa
"gloops" a écrit dans le message de
news:bs1upk$v6i$
Bonjour tout le monde,

Au travail je dois ouvrir de nombreuses fenêtres d'explorateur, et
leurs titres commencent à peu près tous pareil, ce qui fait que je me
trouve avec la barre des tâches garnie d'icônes inexploitables.



Bonjour/soir,

Propriété ShowInTaskBar des fenêtres que tu ne veux pas voir s'afficher dans
la taskbar sur false.
Si il s'agit de fenêtre d'internet explorer que tu ne contrôle pas, une
solution est d'implémenter ton propre browser à partir d'un contrôle
WebBrowser.

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
gloops
Rebonsoir,

Eh oui, tu as bien compris, j'appelle une application externe.

Alors effectivement, j'ai la solution de réécrire Internet Explorer 6 à
moi tout seul.

Le mot d'ordre, ces derniers temps, était la chasse au surmenage.
Moyennant quoi, une solution pouvant faire appel à l'existant sera
bienvenue.

A la limite, en baissant un peu les prétentions sur les fonctionnalités,
je pourrais me rappeler que Windows XP regroupe les icônes d'un
programme au-delà d'un certain nombre d'applications visibles. Si je
pouvais intervenir sur ce groupage, ça permettrait aussi de voir clair
dans les icônes restantes. C'est une question différente de la première,
afin de poursuivre le même but. Peut-être pour plus de clarté serai-je
amené à poser cette question dans un autre fil. Avant on va voir si le
réveillon inspire quelqu'un là-dessus.

____________________________
François Picalausa a écrit :
"gloops" a écrit dans le message de
news:bs1upk$v6i$

Bonjour tout le monde,

Au travail je dois ouvrir de nombreuses fenêtres d'explorateur, et
leurs titres commencent à peu près tous pareil, ce qui fait que je me
trouve avec la barre des tâches garnie d'icônes inexploitables.




Bonjour/soir,

Propriété ShowInTaskBar des fenêtres que tu ne veux pas voir s'afficher dans
la taskbar sur false.
Si il s'agit de fenêtre d'internet explorer que tu ne contrôle pas, une
solution est d'implémenter ton propre browser à partir d'un contrôle
WebBrowser.



Avatar
Jonathan
C'est bien joli de penser à pouvoir regrouper les fenetres dans un seul
bouton de la barre des taches mais si tu compte exporter ton appli à
d'autres utilisateurs et d'autres Windows...
Moi par exemple j'ai désactivé cette option dans XP, pour pouvoir basculer
plus rapidement entre trois pages dans IExplorer justement.
Donc à toi de voir.

@+

Jonathan
Avatar
gloops
Jonathan a écrit :

C'est bien joli de penser à pouvoir regrouper les fenetres dans un seul
bouton de la barre des taches mais si tu compte exporter ton appli à
d'autres utilisateurs et d'autres Windows...
Moi par exemple j'ai désactivé cette option dans XP, pour pouvoir basculer
plus rapidement entre trois pages dans IExplorer justement.
Donc à toi de voir.

@+

Jonathan





Je me demande si mon premier message ne répondrait pas à ta question.
Je pense développer un formulaire avec trois boutons pour chaque site,
chaque bouton étant associé à une page. Donc, une fois que je clique sur
le bouton, la page associée apparaît, donc je n'ai plus vraiment besoin
des boutons de barre des tâches qui me paraissent se présenter en
désordre. L'idéal serait qu'il n'y ait rien dans la barre des tâches,
sauf l'icône de mon application (et des applications qui n'ont rien à
voir bien entendu), mais si c'est plus facile ça peut faire "la rue
Michel" de grouper les icônes.

Les collègues appellent les mêmes pages, donc si mon formulaire me rend
service je pourrai le leur proposer.

Est-ce plus clair comme ça ?
Avatar
François Picalausa
Bonjour/soir,

"gloops" a écrit dans le message de
news:bs255v$pke$
Rebonsoir,

Eh oui, tu as bien compris, j'appelle une application externe.

Alors effectivement, j'ai la solution de réécrire Internet Explorer 6
à moi tout seul.

Le mot d'ordre, ces derniers temps, était la chasse au surmenage.
Moyennant quoi, une solution pouvant faire appel à l'existant sera
bienvenue.



C'est bien pour ça qu'il faut envisager qu'on code pour sa détente, pour le
plaisir ;-)


J'ai lu la documentation du shell et apparament, il se pourrait qu'on puisse
faire ce que tu veux ;-)
La documentation dit que :
"To prevent the window button from being placed on the taskbar, create the
unowned window with the WS_EX_TOOLWINDOW extended style"

Voici un bout de code qui permet celà:
Option Explicit

'Apis pour définir le style
Private Const GWL_STYLE = (-16)
Private Const GWL_EXSTYLE = (-20)

Private Declare Function SetWindowLong _
Lib "user32" _
Alias "SetWindowLongA" _
( _
ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long _
) _
As Long
Private Declare Function GetWindowLong _
Lib "user32" _
Alias "GetWindowLongA" _
( _
ByVal hwnd As Long, _
ByVal nIndex As Long _
) _
As Long

Private Const WS_EX_TOOLWINDOW = &H80&

Private Sub Command1_Click()
Dim objBrowser As Object
Set objBrowser = CreateObject("InternetExplorer.Application")
objBrowser.Navigate "about:blank"

SetStyle objBrowser.hwnd, WS_EX_TOOLWINDOW, 1, True
objBrowser.Visible = True
End Sub


'State :
' 0 : désactive le Style
' 1 : active le Style
' 2 : inverse l'état du Style
Private Sub SetStyle(hwnd As Long, Style As Long, State As Byte, Optional
ExStyle As Boolean)
Dim lngCurrentStyle As Long

If ExStyle Then
lngCurrentStyle = GetWindowLong(hwnd, GWL_EXSTYLE)
Else
lngCurrentStyle = GetWindowLong(hwnd, GWL_STYLE)
End If

Select Case State
Case 0 'Désactiver
lngCurrentStyle = lngCurrentStyle And Not Style
Case 2 'Inverser
lngCurrentStyle = lngCurrentStyle Xor Style
Case 1 'Activer
lngCurrentStyle = lngCurrentStyle Or Style
End Select

If ExStyle Then
SetWindowLong hwnd, GWL_EXSTYLE, lngCurrentStyle
Else
SetWindowLong hwnd, GWL_STYLE, lngCurrentStyle
End If
End Sub

Problème: la barre de titre prend un coup :-(
Je vais voir ce qu'on peut faire pour arranger celà... mais tu peux déjà
regarder le résultat ;-)

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
gloops
François Picalausa a écrit :
Bonjour/soir,

"gloops" a écrit dans le message de
news:bs255v$pke$

Rebonsoir,

Eh oui, tu as bien compris, j'appelle une application externe.

Alors effectivement, j'ai la solution de réécrire Internet Explorer 6
à moi tout seul.

Le mot d'ordre, ces derniers temps, était la chasse au surmenage.
Moyennant quoi, une solution pouvant faire appel à l'existant sera
bienvenue.




C'est bien pour ça qu'il faut envisager qu'on code pour sa détente, pour le
plaisir ;-)



Certes, certes.



J'ai lu la documentation du shell et apparament, il se pourrait qu'on puisse
faire ce que tu veux ;-)
La documentation dit que :
"To prevent the window button from being placed on the taskbar, create the
unowned window with the WS_EX_TOOLWINDOW extended style"

Voici un bout de code qui permet celà:
Option Explicit



Ah bon tu as trouvé tout ça, toi, sur le Shell ?

Aurais-je trouvé en cherchant dans les nombreuses rubriques proposées
dans MSDN, ou cette prose aurait-elle moins de trois ans ? Ce que j'ai
sur la fonction Shell est bien plus sobre que ça. Il y a un lien sur
AppActivate, qui ne fait pas l'affaire. J'aurais peut-être dû aller voir
directement sur le site ?

En tout cas merci, je vais regarder ça.
Avatar
François Picalausa
"gloops" a écrit dans le message de
news:%23Le%
François Picalausa a écrit :
Bonjour/soir,

"gloops" a écrit dans le message de
news:bs255v$pke$

Rebonsoir,

Eh oui, tu as bien compris, j'appelle une application externe.

Alors effectivement, j'ai la solution de réécrire Internet Explorer
6 à moi tout seul.

Le mot d'ordre, ces derniers temps, était la chasse au surmenage.
Moyennant quoi, une solution pouvant faire appel à l'existant sera
bienvenue.




C'est bien pour ça qu'il faut envisager qu'on code pour sa détente,
pour le plaisir ;-)



Certes, certes.



J'ai lu la documentation du shell et apparament, il se pourrait
qu'on puisse faire ce que tu veux ;-)
La documentation dit que :
"To prevent the window button from being placed on the taskbar,
create the unowned window with the WS_EX_TOOLWINDOW extended style"

Voici un bout de code qui permet celà:
Option Explicit



Ah bon tu as trouvé tout ça, toi, sur le Shell ?

Aurais-je trouvé en cherchant dans les nombreuses rubriques proposées
dans MSDN, ou cette prose aurait-elle moins de trois ans ? Ce que j'ai
sur la fonction Shell est bien plus sobre que ça. Il y a un lien sur
AppActivate, qui ne fait pas l'affaire. J'aurais peut-être dû aller
voir directement sur le site ?

En tout cas merci, je vais regarder ça.



Bonjour/soir,

Aurais-je trouvé en cherchant dans les nombreuses rubriques proposées
dans MSDN


http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/shell_int/shell_int_programming/taskbar.asp

Personellement, je l'ai repris du Plaftorm SDK:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

J'ai tenté de désactiver WS_EX_APPWINDOW mais la fenêtre d'IE ne possède pas
ce style_ex
Il faut donc, AMHA, changer l'owner...

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
François Picalausa
"gloops" a écrit dans le message de
news:%23Le%
François Picalausa a écrit :
Bonjour/soir,

"gloops" a écrit dans le message de
news:bs255v$pke$

Rebonsoir,

Eh oui, tu as bien compris, j'appelle une application externe.



J'ai lu la documentation du shell et apparament, il se pourrait
qu'on puisse faire ce que tu veux ;-)
La documentation dit que :
"To prevent the window button from being placed on the taskbar,
create the unowned window with the WS_EX_TOOLWINDOW extended style"



Ah bon tu as trouvé tout ça, toi, sur le Shell ?




Bonjour/soir,

Il est aussi question de l'interface ITaskbarList.
Cette interface est disponible à partir de IE4.

Voici comment décrire cette interface (odl compilable avec midl):
TaskBarList.odl
-------------------------------------8<-------------------------------------
[
uuid(7DAD2CB4-AA35-4fb5-B658-03012D6899DC),
version(1.0),
helpstring("Interfaces ITaskBarList et ITaskBarList2 pour VB6"),
lcid(0x040C)
]
library VB6TaskBarList
{
interface ITaskbarList;
interface ITaskbarList2;

[
uuid(56FDF342-FD6D-11d0-958A-006097C9A090),
odl,
helpstring("L'interface ITaskbarList est utilisée pour contrôler la barre
des tâches. Elle vous permet d'ajouter dynamiquement de items à la barre des
tâches, de supprimer des items de la barre des tâches et d'activer des items
sur la barre des tâches.")
]
interface ITaskbarList : IUnknown
{
[helpstring("Initialise l'objet de liste de la barre des tâches. Cette
méthode doit être appelée avant que toute autre méthode de ne puisse être
appelée.")]
HRESULT HrInit();

[helpstring("Ajoute une item à la barre des tâches.")]
HRESULT AddTab([in] long hwnd);

[helpstring("Supprime une item de la barre des tâches.")]
HRESULT DeleteTab([in] long hwnd);

[helpstring("Active une item sur la barre des tâches. La fenêtre n'est en
réalité pas activée; l'item de fenêtre sur la barre des tâches est
simplement affichée comme active.")]
HRESULT ActivateTab([in] long hwnd);

[helpstring("Marque une item de la barre des tâches comme active mais ne
l'active pas visuellement.")]
HRESULT SetActiveAlt([in] long hwnd);
};

[
uuid(602D4995-B13A-429b-A66E-1935E44F4317),
odl,
helpstring("L'interface ITaskbarList2 étend l'interface ITaskbarList en
donnant accès à une méthode pour marquer une fenêtre comme étant en
affichage plein écran.")
]
interface ITaskbarList2 : ITaskbarList
{
[helpstring("Utilisée pour marquer une fenêtre comme étant plein écran.")]
HRESULT MarkFullscreenWindow([in] long hwnd, [in] bool fFullscreen);
};

[ uuid(56FDF344-FD6D-11d0-958A-006097C9A090) ]
coclass TaskbarList {
interface ITaskbarList;
}
}
-------------------------------------8<-------------------------------------

(désolé pour les erreurs de traductions dans les helpstring)

Voici comme l'utiliser en VB:
Sur une form avec un Comamndbutton, Command1:
-------------------------------------8<-------------------------------------
Option Explicit

Private TaskBarLib As VB6TaskBarList.TaskbarList

Private Sub Command1_Click()
Dim objBrowser As Object
Set objBrowser = CreateObject("InternetExplorer.Application")
objBrowser.Navigate "about:blank"
TaskBarLib.DeleteTab objBrowser.hWnd
objBrowser.Visible = True
End Sub

Private Sub Form_Load()
Set TaskBarLib = New TaskbarList
TaskBarLib.HrInit
End Sub
-------------------------------------8<-------------------------------------

J'espè!re que cette solution te conviendra.. par les méthodes "classiques"
(changer le style, ...), je n'y arrive pas.

Si tu le souhaites, je peux envoyer la version compilée de cette tlb dans ta
BAL (5Ko).
(si quelqu'un dautre veux la version compilé, ne pas hésiter à la demander
;-) )

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com