假设您有一个第 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/