你如何修改另一个窗口的背景颜色?

时间:2012-11-16 00:06:17

标签: c# .net winforms

假设您的第三方应用程序只是一个红色窗口。获得窗口句柄后,有没有直接的方法来改变它的颜色?

1 个答案:

答案 0 :(得分:2)

到目前为止,我能想出的最好的方法是使用Graphics.FillRectangle

Graphics g = Graphics.FromHwnd(handle);
g.FillRectangle(Brushes.Green, new Rectangle(0, 0, 10000, 10000));   

完成winform工作示例:

  public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            foreach (var p in Process.GetProcesses())
            {
                if (p.MainWindowTitle.Contains("Window Name"))
                {
                     IntPtr handle = p.MainWindowHandle;
                    if ((int)handle != 0)
                    {
                        Graphics g = Graphics.FromHwnd(handle);
                        g.FillRectangle(Brushes.Green, new Rectangle(0, 0, 10000, 10000));
                    }

                }
            }
        }
    }  

您还可以尝试使用GetWindowRect获取窗口尺寸信息,如下所述:Get A Window's Bounds By Its Handle
避免使用10000的宽度和高度。