2

假设您有一个只是一个红色窗口的第 3 方应用程序。获得窗口句柄后,是否有一种简单的方法可以更改其颜色?

4

1 回答 1

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 作为宽度和高度。

于 2012-11-16T00:58:02.980 回答