मैं पूरे डेस्कटॉप का आकार कैसे ढूंढूं? "कार्यक्षेत्र" और "स्क्रीन रिज़ॉल्यूशन" नहीं, दोनों जिनमें से केवल एक स्क्रीन का संदर्भ है। मैं आभासी डेस्कटॉप की कुल चौड़ाई और ऊंचाई को जानना चाहता हूं जिसमें से प्रत्येक मॉनिटर केवल एक हिस्सा दिखा रहा है।सी #: पूरा डेस्कटॉप आकार प्राप्त करें?
उत्तर
आपके पास दो विकल्प:
PresentationFramework.dll
SystemParameters.VirtualScreenWidth SystemParameters.VirtualScreenHeight
सिस्टम।Windows.Forms.dll
SystemInformation.VirtualScreen.Width SystemInformation.VirtualScreen.Height
पहला विकल्प यदि आप एक WPF आवेदन को विकसित करने का प्रयोग करें।
इस तरह के अधिक जवाब! लघु, सही और सौंदर्यपूर्ण रूप से प्रसन्न! – Bitterblue
मुझे लगता है कि यह उत्तर थोड़ा LINQ के साथ अद्यतित करने का समय है, जिससे पूरे डेस्कटॉप आकार को एक अभिव्यक्ति के साथ प्राप्त करना आसान हो जाता है।
Console.WriteLine(
Screen.AllScreens.Select(screen=>screen.Bounds)
.Aggregate(Rectangle.Union)
.Size
);
मेरे मूल जवाब इस प्रकार है:
मुझे लगता है कि क्या आप चाहते हैं कुछ इस तरह है:
int minx, miny, maxx, maxy;
minx = miny = int.MaxValue;
maxx = maxy = int.MinValue;
foreach(Screen screen in Screen.AllScreens){
var bounds = screen.Bounds;
minx = Math.Min(minx, bounds.X);
miny = Math.Min(miny, bounds.Y);
maxx = Math.Max(maxx, bounds.Right);
maxy = Math.Max(maxy, bounds.Bottom);
}
Console.WriteLine("(width, height) = ({0}, {1})", maxx - minx, maxy - miny);
ध्यान रखें कि इस पूरी कहानी नहीं है। कई मॉनीटरों को घिरा होना संभव है, या एक nonrectangular आकार में व्यवस्थित किया जा सकता है। इसलिए, यह हो सकता है कि (minx, miny) और (maxx, maxy) के बीच की सभी जगह दिखाई दे।
संपादित करें:
मैं सिर्फ महसूस किया कि कोड थोड़ा सरल हो सकता है Rectangle.Union
का उपयोग कर:
Rectangle rect = new Rectangle(int.MaxValue, int.MaxValue, int.MinValue, int.MinValue);
foreach(Screen screen in Screen.AllScreens)
rect = Rectangle.Union(rect, screen.Bounds);
Console.WriteLine("(width, height) = ({0}, {1})", rect.Width, rect.Height);
मैं यूक्रेनी प्रोग्रामर हूँ। मैं सत्यापित कर रहा हूं कि यह कोड बॉक्स से काम कर रहा है। बस कॉपी और पेस्ट करें। –
इस सवाल का जवाब नहीं है, लेकिन केवल एक खिड़की प्वाइंट पर अतिरिक्त अंतर्दृष्टि कहते हैं (स्थान) सभी स्क्रीन के भीतर)।
यह पता लगाने के लिए नीचे दिए गए कोड का उपयोग करें कि क्या एक बिंदु (जैसे विंडो का अंतिम ज्ञात स्थान) समग्र डेस्कटॉप की सीमाओं के भीतर है। यदि नहीं, तो विंडो के स्थान को डिफ़ॉल्ट पर रीसेट करें pBaseLoc;
कोड टास्कबार या अन्य टूलबार के लिए खाता नहीं है, यार वहां पर है।
उदाहरण का उपयोग करें: स्टेशन ए से डेटाबेस में विंडो स्थान सहेजें। उपयोगकर्ता स्टेशन बी में 2 मॉनीटर के साथ लॉग करता है और विंडो को दूसरी मॉनीटर पर ले जाता है, नए स्थान को सहेजने के लिए लॉग आउट करता है। स्टेशन ए पर वापस और जब तक उपरोक्त कोड का उपयोग नहीं किया जाता तब तक विंडो दिखाई नहीं देगी।
मेरे आगे संकल्प बचत userID और डेटाबेस या स्थानीय उपयोगकर्ता वरीयता करने के लिए स्टेशन के आईपी (& winLoc) किसी दिए गए एप्लिकेशन के लिए फ़ाइल है, तो उस स्टेशन & अनुप्रयोग के लिए उपयोगकर्ता वरी में लोड लागू किया।
Point pBaseLoc = new Point(40, 40)
int x = -500, y = 140;
Point pLoc = new Point(x, y);
bool bIsInsideBounds = false;
foreach (Screen s in Screen.AllScreens)
{
bIsInsideBounds = s.Bounds.Contains(pLoc);
if (bIsInsideBounds) { break; }
}//foreach (Screen s in Screen.AllScreens)
if (!bIsInsideBounds) { pLoc = pBaseLoc; }
this.Location = pLoc;
यदि आप * जानते हैं कि यह सवाल का जवाब नहीं देता है, तो आप इसे प्रश्न के उत्तर के रूप में क्यों पोस्ट कर रहे हैं? क्या पहली वाक्य को अलार्म घंटी चलाने की ज़रूरत नहीं है? – Timwi
इस दूसरी ओर, यह वही है जो मैं खोज रहा था जब मैं इस विषय पर खोज कर रहा था –
की जांच:
SystemInformation.VirtualScreen.Width
SystemInformation.VirtualScreen.Height
आप System.Drawing
की सीमा का उपयोग कर सकते हैं।
आप इस
public System.Windows.Form.Screen[] GetScreens(){
Screen[] screens = Screen.AllScreens;
return screens;
}
की तरह एक समारोह बना सकते हैं और कर सकते हैं की तुलना में आप इस तरह एक चर में स्क्रीन एक, दो, आदि प्राप्त कर सकते हैं:
System.Windows.Form.Screen[] screens = func.GetScreens();
System.Windows.Form.Screen screen1 = screens[0];
सीमा तो आप प्राप्त कर सकते हैं स्क्रीन के:
System.Drawing.Rectangle screen1Bounds = screen1.Bounds;
इस कोड के साथ आप Width
की तरह सभी गुण मिल जाएगा , Height
, आदि
इस विधि आयत कि वामपंथियों और ऊपर, के लिए निम्नतम मान और सही और नीचे के लिए उच्चतम मान का उपयोग करके स्क्रीन 'सीमा से सभी शामिल हैं रिटर्न ...
static Rectangle GetDesktopBounds() {
var l = int.MaxValue;
var t = int.MaxValue;
var r = int.MinValue;
var b = int.MinValue;
foreach(var screen in Screen.AllScreens) {
if(screen.Bounds.Left < l) l = screen.Bounds.Left ;
if(screen.Bounds.Top < t) t = screen.Bounds.Top ;
if(screen.Bounds.Right > r) r = screen.Bounds.Right ;
if(screen.Bounds.Bottom > b) b = screen.Bounds.Bottom;
}
return Rectangle.FromLTRB(l, t, r, b);
}
कृपया थोड़ा सा समझाएं। –
यह सभी स्क्रीन के माध्यम से loops। यदि बायां किनारा परिवर्तनीय 'एल' से कम है तो यह 'एल' को इस नए मान पर सेट करता है, यदि नीचे का किनारा 'बी' से बड़ा है तो यह सेट करता है। अंतिम परिणाम एल, टी, आर, बी आपके पूरे दृश्यमान डेस्कटॉप के बाएं, ऊपर, दाएं और निचले किनारों पर सेट हैं। – dynamichael
मुझे लगता है कि "वास्तविक" स्क्रीन आकार प्राप्त करने का सबसे अच्छा तरीका है, सीधे वीडियो नियंत्रक से मूल्य प्राप्त करना।
using System;
using System.Management;
using System.Windows.Forms;
namespace MOS
{
public class ClassMOS
{
public static void Main()
{
try
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_VideoController");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("CurrentHorizontalResolution: {0}", queryObj["CurrentHorizontalResolution"]);
Console.WriteLine("-----------------------------------");
Console.WriteLine("CurrentVerticalResolution: {0}", queryObj["CurrentVerticalResolution"]);
}
}
catch (ManagementException e)
{
MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
}
}
}
}
यह काम करना चाहिए;) अभिवादन ...
मॉनिटर आप इस का उपयोग कर सकते की शारीरिक पिक्सेल आकार पाने के लिए।
static class DisplayTools
{
[DllImport("gdi32.dll")]
static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
private enum DeviceCap
{
Desktopvertres = 117,
Desktophorzres = 118
}
public static Size GetPhysicalDisplaySize()
{
Graphics g = Graphics.FromHwnd(IntPtr.Zero);
IntPtr desktop = g.GetHdc();
int physicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.Desktopvertres);
int physicalScreenWidth = GetDeviceCaps(desktop, (int)DeviceCap.Desktophorzres);
return new Size(physicalScreenWidth, physicalScreenHeight);
}
}
- 1. क्रोम डेस्कटॉप नोटिफिकेशन - बड़ा आकार
- 2. पूरा प्रकार का नाम कैसे प्राप्त करें?
- 3. .NET आकार बदलें: पुराना आकार प्राप्त करें?
- 4. सी # डेस्कटॉप ऐप
- 5. संवाद आकार कैसे प्राप्त करें?
- 6. फ़ोल्डर का आकार प्राप्त करें
- 7. ऐरे का आकार कैसे प्राप्त करें?
- 8. सी # डेस्कटॉप अनुप्रयोग?
- 9. मोबाइल और डेस्कटॉप स्क्रीन आकार के आंकड़े
- 10. सी # में डेस्कटॉप पर प्रभावी ढंग से आकर्षित कैसे करें?
- 11. सीधे डेस्कटॉप पर कैसे आकर्षित करें?
- 12. पैरामीटर के साथ पूरा यूआरएल कैसे प्राप्त करें?
- 13. ड्रूपल पेज का पूरा यूआरएल कैसे प्राप्त करें?
- 14. इसे आकार देने के बाद वास्तविक छवि आकार प्राप्त करें
- 15. सी # क्यों आकार असुरक्षित है और एक सुरक्षित तरीके से संरचना का आकार कैसे प्राप्त करें?
- 16. सी ++ आकार
- 17. विंडोज फोन 7 श्रृंखला पर स्क्रीन आकार कैसे प्राप्त करें?
- 18. आवेदन exe आकार आसानी से प्राप्त करें
- 19. जावा फ़ाइल का आकार कुशलतापूर्वक प्राप्त करें
- 20. फ़ाइल आकार को पथ कैसे प्राप्त करें?
- 21. वास्तविक जेपीनल आकार कैसे प्राप्त करें?
- 22. जेएफआरएएम: सीमाओं के बिना आकार प्राप्त करें?
- 23. आईओएस ऑटोलाउट - फ्रेम आकार चौड़ाई प्राप्त करें
- 24. jquery छवि का आकार प्राप्त करें
- 25. हैंडलर से छवि आकार प्राप्त करें
- 26. mysql डेटाबेस का आकार कैसे प्राप्त करें?
- 27. एक्शनस्क्रिप्ट 3 का आकार प्राप्त करें
- 28. "System.Drawing.Image" का फ़ाइल आकार कैसे प्राप्त करें
- 29. एंड्रॉइड फ़ाइल संसाधन का आकार प्राप्त करें?
- 30. फ़ाइल का आकार कैसे प्राप्त करें
शायद "पूर्ण डेस्कटॉप आकार" स्क्रीन पर कैसे स्थित है इस पर निर्भर करेगा। सुनिश्चित नहीं है कि इसकी गणना कैसे करें, लेकिन आप अभी भी System.Windows.Forms.Screen.AllScreens के साथ प्रत्येक स्क्रीन के स्क्रीन और रिज़ॉल्यूशन की संख्या को पकड़ सकते हैं। – Havenard