c# - 如何修改另一个窗口的背景颜色?

标签 c# .net winforms

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

最佳答案

到目前为止我能想到的最好的方法是使用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 作为宽度和高度。

关于c# - 如何修改另一个窗口的背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13408422/

相关文章:

.net - AppDomain 卸载卡住的原因

c# - WiX 安装程序 : Can one msi have - one windows app and one windows service using WiX

c# - 是否有任何扩展方法使返回 lambda 表达式无效?

C# - 是否可以捕获从主进程触发的 <Process>.Exited 事件?

c# - 用于 asp.net 网格分页的 SQL 查询

C# N单元测试

c# - 在被动 View 中实现事件的好方法是什么?

C# - 拉伸(stretch)文本框以适应包含的窗口

c# - 如何将数据绑定(bind)文本框格式化为百分比?

c# - CheckedListBox 中没有 ItemChecked 事件?