2008-09-26 10 views
7

क्या वर्तमान में खुले सभी विंडो हैंडल को पकड़ने के लिए .NET एप्लिकेशन के लिए यह संभव है, और इन विंडो को स्थानांतरित/आकार बदलें?एक .NET ऐप से एप्लिकेशन विंडो को पकड़ो और ले जाएं?

मुझे यकीन है कि यह पी/Invoke का उपयोग करके संभव है, लेकिन मैं सोच रहा था कि इस कार्यक्षमता के लिए कुछ प्रबंधित कोड रैपर थे या नहीं।

+0

एक यांत्रिक तुर्क प्रयोग करें - बस संदेश बॉक्स पॉप अप और आप के लिए यह करने के लिए कहें। विस्तृत निर्देश प्रदान करना सुनिश्चित करें। : पी क्षमा करें, बस यहाँ खुद को मनोरंजक ... –

उत्तर

14

हां, यह विंडोज एपीआई का उपयोग करना संभव है।

इस पोस्ट में कैसे प्राप्त करने के लिए सभी विंडो सक्रिय प्रक्रियाओं से संभालती है के बारे में जानकारी है: http://www.c-sharpcorner.com/Forums/ShowMessages.aspx?ThreadID=35545

using System; 
using System.Diagnostics; 

class Program 
{ 
    static void Main() 
    { 
     Process[] procs = Process.GetProcesses(); 
     IntPtr hWnd; 
     foreach(Process proc in procs) 
     { 
      if ((hWnd = proc.MainWindowHandle) != IntPtr.Zero) 
      { 
      Console.WriteLine("{0} : {1}", proc.ProcessName, hWnd); 
      } 
     }   
    } 
} 

और फिर आप विंडोज एपीआई का उपयोग कर खिड़की स्थानांतरित कर सकते हैं: http://www.devasp.net/net/articles/display/689.html

[DllImport("User32.dll", ExactSpelling = true, CharSet = System.Runtime.InteropServices.CharSet.Auto)] 
     private static extern bool MoveWindow(IntPtr hWnd, int x, int y, int cx, int cy, bool repaint); 

... 

MoveWindow((IntPtr)handle, (trackBar1.Value*80), 20 , (trackBar1.Value*80)-800, 120, true); 

यहाँ MoveWindow फ़ंक्शन के लिए पैरामीटर:

स्थानांतरित करने के लिए खिड़की, हम MoveWindow समारोह है, जो शीर्ष कोने के लिए लेता खिड़की संभाल, समन्वय , साथ ही वांछित चौड़ाई और खिड़की की ऊंचाई, स्क्रीन समन्वय के आधार पर इस्तेमाल करते हैं। MoveWindow समारोह के रूप में परिभाषित किया गया है:

MoveWindow (HWND hWnd, पूर्णांक nX, पूर्णांक न्यूयॉर्क, पूर्णांक nWidth, पूर्णांक nHeight, BOOL bRepaint);

bRepaint झंडा क्लाइंट क्षेत्र रंगा जा करने के लिए अनुमति देता है, यह निर्धारित करता है क्लाइंट क्षेत्र अवैध जानी चाहिए या नहीं, जिससे एक WM_PAINT संदेश भेजे जाने के लिए। एक अलग रूप में, स्क्रीन समन्वय एक फोन rcDesktop प्रकार RECT की एक चर, संदर्भ द्वारा पारित होने के साथ GetClientRect (GetDesktopWindow(), & rcDesktop) के लिए इसी तरह का उपयोग कर प्राप्त किया जा सकता है।

(http://windows-programming.suite101.com/article.cfm/client_area_size_with_movewindow)

+0

+1 अच्छा जवाब। –