2012-08-03 3 views
5

Il mio programma deve aprire una serie di finestre di informazioni quando richiesto da un utente e desidera implementare un qualche tipo di raggruppamento personalizzato sulla barra delle applicazioni di Windows 7.controllo Windows 7 raggruppamento barra delle applicazioni per la mia applicazione

Funzionalità desiderata: tutte le finestre di informazioni devono essere raggruppate insieme (se il raggruppamento è abilitato sul sistema degli utenti, ovvero) ma la finestra principale NON deve essere raggruppata con le finestre di informazioni.

Non riesco a generare un nuovo processo per le mie finestre di informazioni.

La mia idea è che potrebbe esserci un modo per modificare l'handle della finestra della finestra delle informazioni in qualche modo per ottenere la barra delle applicazioni per raggrupparlo separatamente, ma onestamente non so nemmeno da dove cominciare.

EDIT

Ive ha trovato alcune nuove informazioni. Io possa essere in grado di fare qualcosa con SHGetPropertyStoreForWindow come indicato qui: http://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx#where

... Come una proprietà di una delle finestre in esecuzione dell'applicazione. Questo può essere impostato in due modi: Se diverse finestre di proprietà di un processo richiedono AppUserModelID diversi per controllare il raggruppamento della barra delle applicazioni, utilizzare SHGetPropertyStoreForWindow per recuperare l'archivio delle proprietà della finestra e impostare AppUserModelID come proprietà della finestra.

+0

Assegna alle finestre lo stesso appID. –

risposta

0

ho risolto utilizzando il Windows API Code Pack for .NET e il seguente codice:

TaskbarManager.Instance.SetApplicationIdForSpecificWindow(window, guid); 

Finestra assegnato con lo stesso ID verranno raggruppate - finestre con un ID univoco avranno un'icona sulla barra delle applicazioni separata.

+0

Come ottenere l'handle della finestra e quale id (gu) è questo? – Brackets

+0

@Brackets: puoi usare qualsiasi guid. Le finestre con lo stesso guid saranno raggruppate insieme: le finestre con un ID univoco avranno un'icona della barra delle applicazioni separata. – caesay

2

Application User Model IDs dice:

"Se diverse finestre di proprietà di un unico processo richiedono diverse AppUserModelIDs per controllare il raggruppamento barra delle applicazioni, utilizzare SHGetPropertyStoreForWindow per recuperare archivio di proprietà della finestra e impostare l'AppUserModelID come una proprietà finestra."

+0

Questo ha funzionato per me. Non ho potuto utilizzare il pacchetto di codice API di Windows poiché siamo un'applicazione .NET 2.0. – user326608

+0

Il mio problema era che la nostra app può anche essere avviata tramite COM e, quando si trovava, si combinava sempre nel raggruppamento della barra delle applicazioni e utilizzava la stessa icona e il pulsante della barra delle applicazioni come l'app padre che stava chiamando l'app figlio tramite COM. Questo è il codice VB.NET che ha fatto il trucco: 'pubblica funzione Declare SetCurrentProcessExplicitAppUserModelID Lib "Shell32.dll" Alias ​​"SetCurrentProcessExplicitAppUserModelID"(ByVal AppID come stringa) come numero intero)' ' SetCurrentProcessExplicitAppUserModelID (" CompanyName.ProductName. SubProduct.1.0.0.0 ")' – user326608