2012-08-03 16 views
5

मेरे प्रोग्राम को उपयोगकर्ता द्वारा अनुरोध किए जाने पर सूचना विंडो की एक श्रृंखला खोलने की आवश्यकता है, और विंडोज 7 टास्कबार पर किसी प्रकार के कस्टम ग्रुपिंग को कार्यान्वित करना चाहते हैं।नियंत्रण विंडोज 7 टास्कबार समूह मेरे आवेदन के लिए

वांछित कार्यक्षमता: मेरी सभी जानकारी विंडो को एक साथ समूहीकृत किया जाना चाहिए (यदि उपयोगकर्ता सिस्टम पर समूहीकरण सक्षम है, तो है) लेकिन मेरी मुख्य विंडो को सूचना विंडो के साथ समूहीकृत नहीं किया जाना चाहिए।

मैं अपनी सूचना खिड़कियों के लिए एक नई प्रक्रिया नहीं कर सकता।

मेरी विचार प्रक्रिया यह है कि किसी भी तरह से टास्कबार को अलग-अलग समूहबद्ध करने के लिए सूचना विंडो के विंडो हैंडल को संशोधित करने का एक तरीका हो सकता है लेकिन मैं ईमानदारी से यह भी नहीं जानता कि इससे कहां से शुरुआत करें।

संपादित

Ive कुछ नई जानकारी नहीं मिली। मैं के रूप में यहां कहा गया है SHGetPropertyStoreForWindow साथ कुछ करने के लिए सक्षम हो सकता है: http://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx#where

... आवेदन की चल खिड़कियों में से किसी की एक संपत्ति के रूप में। इसे दो तरीकों से सेट किया जा सकता है: यदि एक प्रक्रिया के स्वामित्व वाली विभिन्न विंडो को टास्कबार ग्रुपिंग को नियंत्रित करने के लिए अलग-अलग AppUserModelIDs की आवश्यकता होती है, तो विंडो की संपत्ति स्टोर को पुनर्प्राप्त करने के लिए SHGetPropertyStoreForWindow का उपयोग करें और AppUserModelID को विंडो प्रॉपर्टी के रूप में सेट करें।

+0

अपनी विंडोज़ को एक ही एपआईडी असाइन करें। –

उत्तर

0

मैं इसे Windows API Code Pack for .NET और निम्नलिखित कोड का उपयोग करके हल:

TaskbarManager.Instance.SetApplicationIdForSpecificWindow(window, guid); 

विंडो एक ही आईडी वाले सौंपा एक साथ समूहीकृत किया जाएगा - एक विशिष्ट आईडी के साथ खिड़कियां एक अलग टास्कबार आइकन होगा।

+0

विंडो हैंडल कैसे प्राप्त करें और यह (gu) आईडी क्या है? – Brackets

+0

@ ब्रैकेट्स: आप किसी भी गाइड का उपयोग कर सकते हैं। एक ही गाइड के साथ विंडोज को एक साथ समूहीकृत किया जाएगा - एक अद्वितीय आईडी वाली विंडो में एक अलग टास्कबार आइकन होगा। – caesay

2

Application User Model IDs का कहना है:

"अगर अलग से एक प्रक्रिया के स्वामित्व में खिड़कियों टास्कबार समूह को नियंत्रित करने के विभिन्न AppUserModelIDs की आवश्यकता होती है, SHGetPropertyStoreForWindow का उपयोग खिड़की की संपत्ति की दुकान निकालते हैं और AppUserModelID एक खिड़की संपत्ति के रूप में स्थापित करने के लिए।"

+0

यह मेरे लिए काम किया। मैं विंडोज एपीआई कोड पैक का उपयोग नहीं कर सका क्योंकि हम एक .NET 2.0 ऐप हैं। – user326608

+0

मेरी समस्या यह थी कि हमारा ऐप COM के माध्यम से भी लॉन्च किया जा सकता है, और जब यह हमेशा टास्कबार ग्रुपिंग में गठबंधन होता है और उसी आइकन और टास्कबार बटन का उपयोग मूल ऐप के रूप में करता है जो कि COM के माध्यम से बच्चे ऐप को कॉल कर रहा था। यह है कि चाल किया VB.NET कोड है: 'सार्वजनिक घोषणा समारोह SetCurrentProcessExplicitAppUserModelID लिब" shell32.dll "उर्फ" SetCurrentProcessExplicitAppUserModelID "(ByVal AppID स्ट्रिंग के रूप में) पूर्णांक के रूप में)' ' SetCurrentProcessExplicitAppUserModelID (" CompanyName.ProductName। SubProduct.1.0.0.0 ")' – user326608

संबंधित मुद्दे