|
分類:[C#]
スクリーンの特定の位置の色を取得して、特定の色の場合にクリックする処理をしたいのですが、
同じX・Yを指定しても、画面の色取得の位置とカーソル位置がずれてしまいます。
ずれを解消することは可能でしょうか。
ざっくり以下流れで作っています。
@カーソルを移動
ACopyFromScreenで画面を画像として取得
B画像の0,0の位置の色を取得
CBの色が指定した色ならカーソル位置でクリックする
CopyFromScreenのTestX TestYが数値のとおりの位置になっていて、
カーソルの位置がずれているように思います。
コードは以下で作っています。
(色取得については省略してます)
using System.Drawing;
using System.Runtime.InteropServices;
namespace Test_画面色取得
{
class Test
{
// マウス操作
[DllImport("USER32.dll", CallingConvention = CallingConvention.StdCall)]
private static extern void SetCursorPos(int X, int Y);
public void myTest()
{
Bitmap TestBmp = new Bitmap(500, 300);
Graphics TestGrph = Graphics.FromImage(TestBmp);
int TestX = 100;
int TestY = 100;
//TestX、TestYは共通だが、以下のカーソル位置とスクリーンから取得する画像の位置が違う
SetCursorPos(TestX, TestY);
TestGrph.CopyFromScreen(new Point(TestX, TestY), new Point(0, 0), new Size(500, 300));
//TestBmp.Save(@"C:\■TestBmpSave■\" + TestX + "_" + TestY + ".bmp");//Cドライブにbmp保存
}
}
}
|