2013-08-19 11 views
7

मैं अपनी स्क्रीन के बाईं ओर एक यादृच्छिक विंडो को अधिकतम करना चाहता हूं। क्या मैं अपने कोड से विंडोज एयरो फ़ंक्शन का उपयोग कर सकता हूं? यह विंडो माउस के साथ अधिकतम हो सकती है। मैं बस प्रोग्रामेटिक रूप से करना चाहता हूं।स्क्रीन के आधे स्क्रीन पर प्रोग्रामेटिक रूप से अधिकतम करें

मैं C# का उपयोग करता हूं और मुझे विंडो के IntPtr मिल सकते हैं।

यदि माउस या कीबोर्ड इनपुट को फिक्र किए बिना संभव हो।

+0

दुर्भाग्यवश नहीं, माइक्रोसॉफ्ट ने अपने ज्ञान में एरो स्नैप कार्यक्षमता के लिए कोई सार्वजनिक एपीआई प्रदान नहीं किया। –

+1

यह पी/आवेदक के बिना किया जा सकता है, बस आसानी से नहीं, –

+0

क्या आप डेस्कटॉप आकार के आधार पर विंडो स्थिति और आकार को सेट करके इस व्यवहार की नकल नहीं कर सकते? पर्याप्त आसान होना चाहिए, बस बहुत "साफ" नहीं – Kippie

उत्तर

3

यह नहीं बिल्कुल वैसा ही है, लेकिन यह अच्छी तरह से नकली। उदाहरण - www.ishadow.com/vdm। ShowWindow (hWnd, SW_MAXIMIZE) के बाद आमतौर पर (विंडोज़ 10 पर टास्क मैनेजर) के बाद अधिकतम विंडोज़ स्थिति की मैनुअल "फिक्सिंग" के लिए MoveWindow (hWnd, startPos, 0, winWidth, winHeight, true)।

5

यह पी/चाल के बिना किया जा सकता है।

इस प्रयास करें:

Rectangle rect = Screen.PrimaryScreen.WorkingArea; 
rect.Width = rect.Width/2; 
Bounds = rect; 

यह प्राथमिक स्क्रीन के बाईं ओर वर्तमान विंडो डाल देंगे।

फिर इसे स्क्रीन के दाईं ओर रखने के लिए इसे जोड़ें। विशेष रूप से गैर बच्चे प्रक्रियाओं के लिए

ShowWindow(handle, SW_MAXIMIZE); 
// for a split second you might see a maximized window here 
MoveWindow(handle, 0, 0, Screen.PrimaryScreen.WorkingArea.Width/2, Screen.PrimaryScreen.WorkingArea.Height, true); 
+0

मैंने स्वीकार नहीं किया क्योंकि खिड़की की स्थिति अधिकतम नहीं है। मैंने WinApi (FormWindowState आदि को सेट करने के बिना) की कोशिश की लेकिन यह किसी कारण से काम नहीं करता है। – Bitterblue

0

वास्तविक समय प्लेसमेंट के लिए बड़े कार्य करने की आवश्यकता होगी,:

Location = new Point(rect.Width, 0); 
संबंधित मुद्दे