2012-03-12 14 views
5

मैं प्रक्रिया की खिड़की की स्थिति प्राप्त करने का तरीका जानना चाहता हूं। मैं इंटरनेट पर इसकी तलाश कर रहा हूं लेकिन बिना किसी परिणाम के। धन्यवाद :)विंडो की स्थिति कैसे प्राप्त करें?

Process[] processes = Process.GetProcessesByName("notepad"); 
Process lol = processes[0]; 

IntPtr p = lol.MainWindowHandle; 
+2

Dup - http://stackoverflow.com/questions/1364440/how-to-get-and-set-window-position- ऑफ-ए-एप्लिकेशन-इन-सी-तेज –

+0

आप इसके साथ क्या करना चाहते हैं? [अपनी खिड़की के साथ एंटीवायरस से बाहर निकलें :)] –

+0

लॉल, क्या खिड़की की स्थिति पाने के लिए एकमात्र उपयोग आप सोच सकते हैं? – Patryk

उत्तर

8

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

[DllImport("user32.dll", CharSet = CharSet.Auto)] 
public static extern IntPtr FindWindow(string strClassName, string strWindowName); 

[DllImport("user32.dll")] 
public static extern bool GetWindowRect(IntPtr hwnd, ref Rect rectangle); 

public struct Rect { 
    public int Left { get; set; } 
    public int Top { get; set; } 
    public int Right { get; set; } 
    public int Bottom { get; set; } 
} 

Process[] processes = Process.GetProcessesByName("notepad"); 
Process lol = processes[0]; 
IntPtr ptr = lol.MainWindowHandle; 
Rect NotepadRect = new Rect(); 
GetWindowRect(ptr, ref NotepadRect); 
+0

काम करता है, धन्यवाद :) – Patryk

+0

यह काम करेगा। ठीक। लेकिन यह कोड काम नहीं करेगा जब टास्कबार में नोटपैड को छोटा कर दिया गया है। आपको यह जांचना चाहिए। (साथ ही, मैं सुझाव देता हूं कि "नोटपैड नहीं चल रहा है" त्रुटि से बचने के लिए प्रयास करें) –

+7

रेक्ट सदस्य var में गलत ऑर्डर है। यह बाएं, ऊपर, दाएं नीचे होना चाहिए। अन्यथा, आपको गलत मान मिलेंगे। – Nick

1
using System.Runtime.InteropServices; 
using System.Diagnostics; 


public class GetNotePadLocation 
{ 

    [DllImport("user32.dll", CharSet = CharSet.Auto)] 
    public static extern IntPtr FindWindow(string strClassName, string strWindowName); 

    [DllImport("user32.dll")] 
    public static extern bool GetWindowRect(IntPtr hwnd, ref Rect rectangle); 

    public struct Rect 
    { 
     public int Left { get; set; } 
     public int Top { get; set; } 
     public int Right { get; set; } 
     public int Bottom { get; set; } 
    } 
    public static void NotePadLocation() 
    { 
     Process[] processes = Process.GetProcessesByName("notepad"); 
     Process lol = processes[0]; 
     IntPtr ptr = lol.MainWindowHandle; 
     Rect NotepadRect = new Rect(); 
     GetWindowRect(ptr, ref NotepadRect); 
    } 
} 
+0

मुझे लगता है कि मुझे गुम हिस्सा मिला है और जहां संरचना भाग में ऑर्डर त्रुटि है; मैंने इसे ठीक किया है ... लेकिन मुझे वास्तव में यह नहीं पता कि सभी खुली नोटपैड विंडो के लिए इन संपत्तियों को कैसे प्राप्त किया जाए और सक्रिय सहायता के लिए धन्यवाद कैसे प्राप्त करें ... – hazem

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