假设您有一个只是一个红色窗口的第 3 方应用程序。获得窗口句柄后,是否有一种简单的方法可以更改其颜色?
问问题
1101 次
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 回答