C# 在不同的过程中更改控件的背景色/前景色

C# 在不同的过程中更改控件的背景色/前景色,c#,winapi,process,C#,Winapi,Process,我正在尝试用C#创建一个应用程序,使用它我需要在另一个进程/应用程序中更改某些特定控件的背景色/前景色。例如,我的机器上运行的应用程序很少。当我运行新的C#应用程序(没有任何UI)时,其他应用程序中少数控件的背景色/前景色应该更改为我设置的新颜色。当我关闭应用程序时,颜色应该重置为原始颜色。我尝试了来自gdi32的SetTextColor、SetBkColor和windows API,但它们不起作用。你能建议我怎样才能做到这一点吗 注意:需要更改颜色的控件的坐标已经标注,我正在使用WindowF

我正在尝试用C#创建一个应用程序,使用它我需要在另一个进程/应用程序中更改某些特定控件的背景色/前景色。例如,我的机器上运行的应用程序很少。当我运行新的C#应用程序(没有任何UI)时,其他应用程序中少数控件的背景色/前景色应该更改为我设置的新颜色。当我关闭应用程序时,颜色应该重置为原始颜色。我尝试了来自gdi32的SetTextColor、SetBkColor和windows API,但它们不起作用。你能建议我怎样才能做到这一点吗

注意:需要更改颜色的控件的坐标已经标注,我正在使用WindowFromPoint api获取控件的句柄

这是我试过的代码

point = new Point(1340, 144);
IntPtr hWnd = DllImports.WindowFromPoint(point);//this is a button control in one of the applications
if (hWnd != IntPtr.Zero)
{
    IntPtr wDC = DllImports.GetDC(hWnd);
    int result = DllImports.SetBkMode(wDC, TRANSPARENT);
        int i = DllImports.SetTextColor(wDC, ColorTranslator.ToWin32(Color.Red));
        i = DllImports.SetBkColor(wDC, ColorTranslator.ToWin32(Color.Yellow));
        result = DllImports.SetBkMode(wDC, OPAQUE);
}

提前感谢

您能发布您尝试的代码吗?“控件”太宽了-不是每个可见的实体都是一个窗口(您至少可以希望通过这样的操作将其作为目标),也不是每个带有窗口的控件都会尊重您尝试设置的颜色。将问题缩小到特定的“控件”并显示不起作用的代码将使问题变得更好。@preciousbetine,我已经用代码更新了问题。设备上下文只是用于渲染的一组设置。仅仅在副本上设置属性并不能神奇地改变外观。您必须执行某种渲染才能实际使用您的设置。当目标应用程序决定重新绘制其UI时,这会带来很多好处。你真的需要潜入目标进程,拦截你的敌人和朋友。你试图做的基本上是不可行的。最好现在就认识到这一点