2013-08-15 6 views
6

ऊपर में अब, मैं Windows कार्यपट्टी छिपाने के लिए निम्नलिखित सी # कोड का उपयोग करने में सक्षम था करने के लिए:छिपाएं टास्कबार विंडोज 8

[DllImport("user32.dll")] 
private static extern int FindWindow(string className, string windowText); 
[DllImport("user32.dll")] 
private static extern int ShowWindow(int hwnd, int command); 

private const int SW_HIDE = 0; 
private const int SW_SHOW = 1; 

... 

int hwnd = FindWindow("Shell_TrayWnd", ""); 
ShowWindow(hwnd, SW_SHOW); 

लेकिन जब Windows 8 का उपयोग, इस कोड को केवल प्राथमिक मॉनीटर पर टास्कबार छुपाता , दूसरे पर नहीं, जहां टास्कबार भी दिखाई देता है।

मैं केवल स्क्रीन पर टास्कबार को कैसे छुपा सकता हूं जहां मेरी खिड़कियां दिखायी जा रही हैं?

उत्तर

4

FindWindowEx का उपयोग करें। यह आपको ज़ेड ऑर्डर में बाद में खोजने के लिए विंडो में पास करने की अनुमति देता है।

Ergo:

DllImport("user32.dll")] 
private static extern int FindWindowEx(int parent, int afterWindow, string className, string windowText); 

// Start with the first child, then continue with windows of the same class after it 
int hWnd = 0; 
while (hWnd = FindWindowEx(0, hWnd, "Shell_TrayWnd", "")) 
    ShowWindow(hWnd, SW_SHOW); 

आप एक विशिष्ट स्क्रीन पर कार्य पट्टी को छिपाने के लिए ही है, GetWindowRect का उपयोग करें और क्या स्क्रीन खिड़की पर है के लिए सीमा की जांच, और केवल समयावधि होती है पर ShowWindow फोन चाहते हैं वर्तमान स्क्रीन पर।

+0

"दूसरा, क्या होगा यदि आपका प्रोग्राम टास्कबार को खोलने का मौका मिलने से पहले क्रैश हो जाए? टास्कबार अब स्थायी रूप से छिपा हुआ है और उपयोगकर्ता को लॉग ऑन करना है और वापस जाना है अपनी टास्कबार वापस प्राप्त करें। यह बहुत अच्छा नहीं है। " –

8

टास्कबार को छिपाएं नहीं; ऐसा कुछ करने का गलत तरीका है। इसके बजाय, बस एक पूर्णस्क्रीन विंडो बनाएं, और टास्कबार आपके रास्ते से बाहर निकलने के लिए पर्याप्त स्मार्ट है।

आप माइक्रोसॉफ्ट के रेमंड चेन द्वारा blog पर एक अच्छी स्पष्टीकरण & टिप्पणी पढ़ सकते हैं।

+2

मैं पूरी तरह से आपकी राय से सहमत हूं, लेकिन मुझे एक और पूर्णस्क्रीन एप्लिकेशन के सामने एक विंडो प्राप्त करने की आवश्यकता है। जब भी मेरा फॉर्म फोकस हो जाता है, तो टास्कबार फिर से दिखाई देता है। – lenniep

+0

यदि आपकी विंडो फोकस हो जाती है तो टास्कबार प्रकट होता है, तो हो सकता है कि आप एक पूर्णस्क्रीन विंडो को ठीक से सेट नहीं कर रहे हों। क्या आप हमें दिखा सकते हैं कि आप अपनी खिड़की कैसे बना रहे हैं? –

0

मुझे एक ही समस्या मिली।

1) एकाधिक मॉनिटर्स

2) पहली मॉनीटर पर कोई समस्या नहीं है पर एक आवेदन चल रहा है, आवेदन शीर्ष

3 पर रहता है), लेकिन अगर दूसरे विंडो क्लिक किया जाता है, टास्क बार प्रकट होता है और इसके बनाम

FindWindowEx केवल एक Shell_TrayWnd पाया जाता है। यह पहली स्क्रीन से एक है, जिसे