C# 如何保持宏坐标上的检查颜色?
我想在按下开始按钮后直接检查坐标上的颜色,当我按下停止按钮时停止,这对我来说就像宏一样,但当我按下开始按钮时,什么都没有发生,根本没有按下键盘上的s按钮,我需要在条件为真时保持按下s按钮,这里是我的代码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
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)
{ ... }