C# 如何保持宏坐标上的检查颜色?

C# 如何保持宏坐标上的检查颜色?,c#,macros,C#,Macros,我想在按下开始按钮后直接检查坐标上的颜色,当我按下停止按钮时停止,这对我来说就像宏一样,但当我按下开始按钮时,什么都没有发生,根本没有按下键盘上的s按钮,我需要在条件为真时保持按下s按钮,这里是我的代码 using Eyedropper; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System

我想在按下开始按钮后直接检查坐标上的颜色,当我按下停止按钮时停止,这对我来说就像宏一样,但当我按下开始按钮时,什么都没有发生,根本没有按下键盘上的s按钮,我需要在条件为真时保持按下s按钮,这里是我的代码

using Eyedropper;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace macro
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Bitmap m_ScreenImage;

        private void btnstart_Click(object sender, EventArgs e)
        {
            while (m_ScreenImage.GetPixel(1002, 109).ToString() == "Color [A=255, R=55, G=114, B=173]")
            {

                m_ScreenImage = Utility.CaptureScreen();
                SendKeys.Send("s");
            }
        }
    }
}

不太清楚你想做什么,但我会给你一些建议

这是一个巨大内存泄漏和GDI资源耗尽的单向过程

m_ScreenImage = Utility.CaptureScreen();
您应该处理
位图

m_ScreenImage?.Dispose();
m_ScreenImage = Utility.CaptureScreen();
这是一种检查像素颜色的冗长方法

m_ScreenImage.GetPixel(1002, 109).ToString() == "Color [A=255, R=55, G=114, B=173]"
最好存储所需的颜色,并与从
GetPixel

从四个ARGB组件(alpha、红色、, 绿色和蓝色)值。尽管此方法允许使用32位值 对于每个组件,每个组件的值都是有限的 到8位


至于为什么你的发送键不起作用,我不确定。然而,我的感觉是你陷入了一个无休止的循环。

你能编辑这个问题,让读者了解你在说什么吗。在阅读这个问题时,我不明白什么是“检查颜色”、“坐标”、“开始”、“停止”和“S”按钮,以及“宏”是如何融入其中的。从您的代码来看,似乎您正在编写Windows窗体桌面应用程序(您应该这样标记它)。除此之外,我有点不知所措。谢谢你的回复是的,我陷入了一个无休止的循环中。这个循环不会停止,直到按下停止按钮,它就会停止,发送键呢?
public Color targetColor = Color.FromArgb(255, 55, 114, 173);

...

while (m_ScreenImage.GetPixel(1002, 109) == targetColor)
{ ... }