चारों ओर मैं नीचे दिए गए कोड है:का उपयोग SetWindowPos खिड़कियों को स्थानांतरित करने के
namespace WindowMover
{
using System.Windows.Forms;
static class Logic
{
[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
public static extern IntPtr SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int x, int Y, int cx, int cy, int wFlags);
public static void Move()
{
const short SWP_NOMOVE = 0X2;
const short SWP_NOSIZE = 1;
const short SWP_NOZORDER = 0X4;
const int SWP_SHOWWINDOW = 0x0040;
Process[] processes = Process.GetProcesses(".");
foreach (var process in processes)
{
var handle = process.MainWindowHandle;
var form = Control.FromHandle(handle);
if (form == null) continue;
SetWindowPos(handle, 0, 0, 0, form.Bounds.Width, form.Bounds.Height, SWP_NOZORDER | SWP_SHOWWINDOW);
}
}
}
}
यह 0,0 (एक्स, वाई) करने के लिए अपने डेस्कटॉप पर हर खिड़की स्थानांतरित करने के लिए माना जाता है और एक ही आकार में बने। मेरी समस्या यह है कि केवल कॉलिंग ऐप (सी # में निर्मित) को स्थानांतरित किया जा रहा है।
क्या मुझे Control.FromHandle (IntPtr) के अलावा कुछ और उपयोग करना चाहिए? क्या यह केवल डॉटनेट नियंत्रण पाएगा? यदि हां, तो मुझे क्या उपयोग करना चाहिए?
इसके अलावा, दूसरे 0 SetWindowPos में सिर्फ एक यादृच्छिक पूर्णांक मैं वहाँ में रहना था, मैं क्या पिजिन जैसे कई खिड़कियों के साथ पूर्णांक के लिए hWndInsertAfter
के बारे में क्या प्रक्रियाओं का उपयोग करने के लिए यकीन नहीं है?
यह वहाँ हो रही है, लेकिन कुछ खिड़कियां (उन प्रक्रियाओं से अधिक विंडो है की तरह लगता है) नहीं कर रहे हैं सब घूम रहा है। बीटीडब्लू, आप मेरे कई सवालों का जवाब देते हैं, मुझे आशा है कि मुझे किसी दिन प्रोग्रामिंग के बारे में पता होगा .... – Matt
मैट: मैंने इसके लिए समाधान जोड़ा - मुझे केवल अंत तक उस प्रतिक्रिया को नहीं देखा। EnumWindows सभी शीर्ष-स्तरीय विंडो (केवल मेनविंडोहैंडल विंडो नहीं) के माध्यम से फिर से शुरू हो जाएगा, जो आपको चाहिए जो आपको चाहिए। –