2012-08-03 35 views
5

Chương trình của tôi cần mở một loạt cửa sổ thông tin khi người dùng yêu cầu và muốn triển khai một số loại nhóm tùy chỉnh trên thanh tác vụ của Windows 7.cửa sổ điều khiển 7 nhóm thanh tác vụ cho ứng dụng của tôi

Chức năng mong muốn: Tất cả cửa sổ thông tin của tôi nên được nhóm lại với nhau (nếu nhóm được bật trên hệ thống người dùng), nhưng cửa sổ chính của tôi KHÔNG được nhóm với cửa sổ thông tin.

Tôi không thể sinh ra một quy trình mới cho cửa sổ thông tin của mình.

Quá trình suy nghĩ của tôi là có thể có một cách để sửa đổi cửa sổ xử lý cửa sổ thông tin bằng cách nào đó để có được thanh tác vụ để nhóm nó một cách riêng biệt nhưng tôi thành thật thậm chí không biết bắt đầu từ đâu.

EDIT

Ive tìm thấy một số thông tin mới. Tôi có thể làm điều gì đó với SHGetPropertyStoreForWindow như đã nêu ở đây: http://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx#where

... Là tài sản của bất kỳ cửa sổ đang chạy nào của ứng dụng. Điều này có thể được đặt theo một trong hai cách: Nếu các cửa sổ khác nhau thuộc sở hữu của một quy trình yêu cầu AppUserModelID khác nhau để kiểm soát nhóm thanh tác vụ, hãy sử dụng SHGetPropertyStoreForWindow để truy xuất kho lưu trữ thuộc tính của cửa sổ và đặt AppUserModelID làm thuộc tính cửa sổ.

+0

Chỉ định các cửa sổ của bạn cùng một appID. –

Trả lời

0

Tôi giải quyết nó bằng cách sử dụng các Windows API Code Pack for .NET và đoạn mã sau:

TaskbarManager.Instance.SetApplicationIdForSpecificWindow(window, guid); 

Window giao với cùng id sẽ được nhóm lại với nhau - cửa sổ với một id duy nhất sẽ có một biểu tượng trên thanh tác vụ riêng biệt.

+0

Làm thế nào để có được cửa sổ xử lý và những gì (gu) id này? – Brackets

+0

@Brackets: bạn có thể sử dụng bất kỳ guid nào. Windows với cùng một guid sẽ được nhóm lại với nhau - các cửa sổ có id duy nhất sẽ có biểu tượng thanh tác vụ riêng. – caesay

2

Application User Model IDs nói:

"Nếu cửa sổ khác nhau thuộc sở hữu của một quá trình đòi hỏi AppUserModelIDs khác nhau để kiểm soát nhóm thanh tác vụ, sử dụng SHGetPropertyStoreForWindow để lấy cửa tài sản của cửa sổ và thiết lập AppUserModelID như một thuộc tính cửa sổ."

+0

Điều này làm việc cho tôi. Tôi không thể sử dụng Windows API Code Pack vì chúng tôi là một ứng dụng .NET 2.0. – user326608

+0

Vấn đề của tôi là ứng dụng của chúng tôi cũng có thể được khởi chạy qua COM và khi nó luôn kết hợp trong nhóm thanh tác vụ và sử dụng cùng biểu tượng và nút thanh tác vụ như ứng dụng cha mẹ đang gọi ứng dụng con thông qua COM. Đây là mã VB.NET rằng đã làm các trick: 'Chức năng Khai báo công cộng SetCurrentProcessExplicitAppUserModelID Lib "shell32.dll" Alias ​​"SetCurrentProcessExplicitAppUserModelID" (ByVal AppID As String) As Integer) ' ' SetCurrentProcessExplicitAppUserModelID (" CompanyName.ProductName. SubProduct.1.0.0.0 ")' – user326608

Các vấn đề liên quan