Vorrei poter nascondere la finestra di un'altra applicazione dalla barra delle applicazioni, senza nascondere la finestra stessa. Nello specifico, voglio avere diversi browser Web in esecuzione, visibili, disponibili nell'elenco Alt + Tab, ma non occupano spazio sulla barra delle applicazioni.Nascondi il pulsante della barra delle applicazioni di un'altra app
(Se qualcuno è curioso di sapere perchè. Ho scritto un'applicazione dashboard che utilizza DwmRegisterThumbnail API di Vista per mostrare anteprime in tempo reale di diverse finestre contemporaneamente - una sorta di "picture in picture", se si vuole A quel punto, anche avere i pulsanti della barra delle applicazioni per quelle finestre sembra ridondante.)
Sono consapevole del fatto che cambiare lo stile dell'altro finestra per includere WS_EX_TOOLWINDOW
lo nasconderà dalla barra delle applicazioni, e ho provato prima questo. Ma, come previsto, ha avuto alcuni effetti collaterali che non volevo: la barra del titolo si è accorciata (non è affatto male, immagino) e i pulsanti minimizza e massimizza sono andati via (non va bene). Ho anche dovuto nascondere e mostrare nuovamente la finestra per far sì che la barra delle applicazioni riconoscesse la modifica, il che ha causato la ridipinta degli artefatti quando l'ho fatto a IE Windows.
Il mio prossimo pensiero è stato che, dal momento che le finestre con i proprietari sono nascoste dalla barra delle applicazioni per impostazione predefinita, forse potrei cambiare le altre finestre di proprietà del mio. Ma MSDN è pretty clear che "[a] fter crea una finestra di proprietà, un'applicazione non può trasferire la proprietà della finestra ad un'altra finestra."
Ho trovato this question che è formulato in modo simile al mio, ma riguarda specificamente Windows dal proprio processo, in cui si ha il controllo completo sulla proprietà della finestra.
Qualcuno sa di altri modi per nascondere un pulsante della barra delle applicazioni, che funzionerà per Windows da un altro processo?
Aggiornamento: Tormod mi ha messo sulla strada giusta con ITaskbarList - funziona benissimo. La pagina pinvoke.net presentava alcuni errori (GUID errato, metodi dichiarati alfabeticamente anziché nell'interfaccia), ma l'ho modificato, ho apportato correzioni e aggiunto un esempio di come istanziare l'ITaskbarList tramite la sua coclasse.
Aggiornamento 2: Se si utilizza DeleteTab di nascondere il pulsante della barra delle applicazioni di una finestra, e poi fare che la finestra attiva (ad esempio tramite SetForegroundWindow
o Alt + Tab), il suo pulsante sulla barra delle applicazioni riapparirà. Per mantenere nascosto il pulsante della barra delle applicazioni, ho dovuto aggiungere un timer e continuare a chiamare DeleteTab. Finché non ti preoccupi che il pulsante della barra delle applicazioni riappaia brevemente ogni volta che la finestra viene messa a fuoco, questo funziona bene.
Dolce - Non ho mai saputo di questo, ma suona come il biglietto. Grazie! –