1
A
回答
5
當你只是想一般的方式,我並沒有真正做到盡善盡美,但這裏的理念是:
有采取截屏的方法:
public Bitmap ScreenShot()
{
var screenShot = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height,
PixelFormat.Format32bppArgb);
using (var g = Graphics.FromImage(screenShot))
{
g.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size);
}
return screenShot;
}
以及在位圖中查找特定顏色的方法: 請注意,可以使用不安全的代碼和LockBits(請閱讀here和here)對此實現進行DRASTICALLY改進。
public Point? GetFirstPixel(Bitmap bitmap, Color color)
{
for (var y = 0; y < bitmap.Height; y++)
{
for (var x = 0; x < bitmap.Width; x++)
{
if (bitmap.GetPixel(x, y).Equals(color))
{
return new Point(x, y);
}
}
}
return null;
}
另一種方法你需要的是一個點擊某個點:
[DllImport("user32.dll",
CharSet=CharSet.Auto,
CallingConvention=CallingConvention.StdCall)]
private static extern void mouse_event(long dwFlags,
long dx,
long dy,
long cButtons,
long dwExtraInfo);
private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
public void Click(Point pt)
{
Cursor.Position = pt;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, pt.X, pt.Y, 0, 0);
}
最後,一個包了這一切:
public bool ClickOnFirstPixel(Color color)
{
var pt = GetFirstPixel(ScreenShot(), color);
if (pt.HasValue)
{
Click(pt.Value);
}
// return whether found pixel and clicked it
return pt.HasValue;
}
然後,使用將成爲:
1
0
看看Sikuli我明白它是用來識別按鈕的。不在C#
許可證是麻省理工學院,所以你可以使用它很自由。
相關問題
- 1. 屏幕在點擊鼠標時變黑
- 2. 獲取鼠標屏幕座標點擊
- 3. 自動鼠標點擊使屏幕變爲空白
- 4. 自動鼠標點擊屏幕的第一個區域
- 5. winapi在鼠標點擊事件的屏幕上顯示圖標
- 6. 在屏幕上移動鼠標光標
- 7. watir webdriver在屏幕上的右/左鼠標點擊
- 8. 自動點擊鼠標懸停在
- 9. 如何點擊屏幕上的座標?
- 10. 鼠標在屏幕上的Java位置
- 11. 鼠標在XNA屏幕中間抖動
- 12. Android屏幕上點擊
- 13. 啓動主屏幕點擊
- 14. Qt5 C++自動鼠標點擊
- 15. 網頁自動化鼠標點擊
- 16. Qt在屏幕上正確放置新窗口,重點放在鼠標上,移動到屏幕
- 17. 如何在屏幕上的某個位置模擬鼠標點擊?
- 18. 確定鼠標點擊所有的屏幕分辨率
- 19. cocoa - CGEventPost鼠標點擊後不刷新屏幕
- 20. Android:浮動屏幕上的可點擊圖標?
- 21. 創建在屏幕上點擊(安卓)
- 22. 位置在黑莓屏幕上點擊
- 23. 隱藏SlidingDrawer在屏幕上點擊
- 24. 點擊鼠標移動DIV?
- 25. 用鼠標點擊滑動
- 26. 如何在點擊鼠標點畫一個字符串到applet屏幕?
- 27. 如何在Android屏幕上點擊屏幕時顯示多個標籤(Textview)?
- 28. 檢查屏幕上的鼠標位置
- 29. 屏幕上的鼠標位置
- 30. 用於鼠標點擊Java屏幕上的任何文本框的傾聽者
對不起?我不明白一個字。 – JohnB
你需要進一步澄清你的意思。你是否要告訴它在哪裏點擊或是否需要以某種方式找到紅色框?如果有兩個紅色的盒子會怎樣?有多少像素可以定義一個「盒子」等等 – GazTheDestroyer
@GazTheDestroyer我並不是在尋找一個解決方案,只是一種實現方式,對於這種情況,屏幕上只會有一個紅色框 –