Şu yazdıklarını google amcaya yazsan , karşına çıkan birsürü örnekten birini seçip yazmaya başlasan ve hata aldığın yer olursa bize danışsan cevaplasak çok daha kolay olur gibi.c# image finder arıyorum kod veya fremwork önerecek var mı python değil c# koca projeyi pythona nasıl çevireyim bir yol olması gerekiyor koskoca yazılım dili c# düşünmüşlerdir macro recoder nasıl yazılıyor jitbit
c# neden mümkün değil
Mümkün değil demedim python ile yapılabileceğini söyledim ama senin için biraz araştırdım c# ile nasıl yapılabilir diye ve şöyle bir şey buldum biraz incele, tommytwotrain adlı bir kullanıcı ekranda ki herhangi bir objenin konumunu gösteren bir kod paylaşmış.c# neden mümkün değil
Mümkün değil demedim python ile yapılabileceğini söyledim ama senin için biraz araştırdım c# ile nasıl yapılabilir diye ve şöyle bir şey buldum biraz incele, tommytwotrain adlı bir kullanıcı ekranda ki herhangi bir objenin konumunu gösteren bir kod paylaşmış.
How do I find a picture/image on the screen and get the x,y coordinates? - C#.NET
Bunu cevabını ben sana veremem ancak tecrübe ederek öğrenebilirsin.c# biliyorum pythonda sıkıntı olur mu yani zorlanır mıyım
private void Form2_Load(object sender, EventArgs e)Şu yazdıklarını google amcaya yazsan , karşına çıkan birsürü örnekten birini seçip yazmaya başlasan ve hata aldığın yer olursa bize danışsan cevaplasak çok daha kolay olur gibi.
USİNG ifadesi ile eklediğimiz bir KÜTÜPHANE değil , parametreli bir METHOD olduğunu düşünüyorum. Methodu yazmadığın için de yok. copy+paste yaptığın siteyi bi atar mısın ? bir de kod olarak değil de kullandığın ide'de ekran görüntüsü alıp atarsan daha rahat anlaşılır.private void Form2_Load(object sender, EventArgs e)
{
Rectangle rect = FindImageOnScreen(ImgToFind, false);
if (rect != Rectangle.Empty)//Image Foud
{
//Point cntr = new Point(rect.X + System.Convert.ToInt32(rect.Width / (double)2), rect.Y + System.Convert.ToInt32(rect.Height / (double)2));
//Cursor.Position = cntr;
MessageBox.Show(rect.ToString());
}
else
MessageBox.Show("Image not found");
}
FindImageOnScreen yok hadi bakalım açıkla hangi using kütüpanesi sanki bakmıyorum
USİNG ifadesi ile eklediğimiz bir KÜTÜPHANE değil , parametreli bir METHOD olduğunu düşünüyorum. Methodu yazmadığın için de yok. copy+paste yaptığın siteyi bi atar mısın ? bir de kod olarak değil de kullandığın ide'de ekran görüntüsü alıp atarsan daha rahat anlaşılır.
Sitede belirttiğin alandaki kodun tamamı bu şekilde. Biraz daha kurcalayabilirsiniz, sanırım en son postta arkadaş çözümü paylaşmış. Forumda müsait olan biri yardım edecektir, yarın çözülmüş olmaz ise ben de araştırır yardımcı olurum.How do I find a picture/image on the screen and get the x,y coordinates? - C#.NET
social.msdn.microsoft.com
using System.Drawing;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
private Bitmap ImgToFind = new Bitmap(@"C:\bitmaps\find image.png");
private Bitmap ScreenBmp = new Bitmap(@"c:\bitmaps\find image screen.png");
private void Form1_Load(object sender, EventArgs e)
{
Rectangle rect = FindImageOnScreen(ImgToFind, false);
if (rect != Rectangle.Empty)//Image Foud
{
//Point cntr = new Point(rect.X + System.Convert.ToInt32(rect.Width / (double)2), rect.Y + System.Convert.ToInt32(rect.Height / (double)2));
//Cursor.Position = cntr;
MessageBox.Show(rect.ToString());
}
else
MessageBox.Show("Image not found");
}
/// <summary>Finds a matching image on the screen.</summary>
/// ''' <param name="bmpMatch">The image to find on the screen.</param>
/// ''' <param name="ExactMatch">True finds an exact match (slowerer on large images). False finds a close match (faster on large images).</param>
/// ''' <returns>Returns a Rectangle of the found image in sceen coordinates.</returns>
private Rectangle FindImageOnScreen(Bitmap bmpMatch, bool ExactMatch)
{
BitmapData ImgBmd = bmpMatch.LockBits(new Rectangle(0, 0, bmpMatch.Width, bmpMatch.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
BitmapData ScreenBmd = ScreenBmp.LockBits(new Rectangle(0, 0, ScreenBmp.Width, ScreenBmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
byte[] ImgByts = new byte[(Math.Abs(ImgBmd.Stride) * bmpMatch.Height) - 1 + 1];
byte[] ScreenByts = new byte[(Math.Abs(ScreenBmd.Stride) * ScreenBmp.Height) - 1 + 1];
Marshal.Copy(ImgBmd.Scan0, ImgByts, 0, ImgByts.Length);
Marshal.Copy(ScreenBmd.Scan0, ScreenByts, 0, ScreenByts.Length);
bool FoundMatch = false;
Rectangle rct = Rectangle.Empty;
int sindx, iindx;
int spc, ipc;
int skpx = System.Convert.ToInt32((bmpMatch.Width - 1) / (double)10);
if (skpx < 1 | ExactMatch)
skpx = 1;
int skpy = System.Convert.ToInt32((bmpMatch.Height - 1) / (double)10);
if (skpy < 1 | ExactMatch)
skpy = 1;
for (int si = 0; si <= ScreenByts.Length - 1; si += 3)
{
FoundMatch = true;
for (int iy = 0; iy <= ImgBmd.Height - 1; iy += skpy)
{
for (int ix = 0; ix <= ImgBmd.Width - 1; ix += skpx)
{
sindx = (iy * ScreenBmd.Stride) + (ix * 3) + si;
iindx = (iy * ImgBmd.Stride) + (ix * 3);
spc = Color.FromArgb(ScreenByts[sindx + 2], ScreenByts[sindx + 1], ScreenByts[sindx]).ToArgb();
ipc = Color.FromArgb(ImgByts[iindx + 2], ImgByts[iindx + 1], ImgByts[iindx]).ToArgb();
if (spc != ipc)
{
FoundMatch = false;
iy = ImgBmd.Height - 1;
ix = ImgBmd.Width - 1;
}
}
}
if (FoundMatch)
{
double r = si / (double)(ScreenBmp.Width * 3);
double c = ScreenBmp.Width * (r % 1);
if (r % 1 >= 0.5)
r -= 1;
rct.X = System.Convert.ToInt32(c);
rct.Y = System.Convert.ToInt32(r);
rct.Width = bmpMatch.Width;
rct.Height = bmpMatch.Height;
break;
}
}
bmpMatch.UnlockBits(ImgBmd);
ScreenBmp.UnlockBits(ScreenBmd);
//ScreenBmp.Dispose();
return rct;
}
namespace resimtıklama
{
using System.Drawing;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
public partial class Form1 : Form
{
private Bitmap ImgToFind = new Bitmap(@"C:\bitmaps\find\image.png");
private Bitmap ScreenBmp = new Bitmap(@"c:\bitmaps\find\imagescreen.png");
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Rectangle rect = FindImageOnScreen(ImgToFind, false);
if (rect != Rectangle.Empty)//Image Foud
{
//Point cntr = new Point(rect.X + System.Convert.ToInt32(rect.Width / (double)2), rect.Y + System.Convert.ToInt32(rect.Height / (double)2));
//Cursor.Position = cntr;
MessageBox.Show(rect.ToString());
}
else
MessageBox.Show("Image not found");
}
private Rectangle FindImageOnScreen(Bitmap bmpMatch, bool ExactMatch)
{
BitmapData ImgBmd = bmpMatch.LockBits(new Rectangle(0, 0, bmpMatch.Width, bmpMatch.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
BitmapData ScreenBmd = ScreenBmp.LockBits(new Rectangle(0, 0, ScreenBmp.Width, ScreenBmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
byte[] ImgByts = new byte[(Math.Abs(ImgBmd.Stride) * bmpMatch.Height) - 1 + 1];
byte[] ScreenByts = new byte[(Math.Abs(ScreenBmd.Stride) * ScreenBmp.Height) - 1 + 1];
Marshal.Copy(ImgBmd.Scan0, ImgByts, 0, ImgByts.Length);
Marshal.Copy(ScreenBmd.Scan0, ScreenByts, 0, ScreenByts.Length);
bool FoundMatch = false;
Rectangle rct = Rectangle.Empty;
int sindx, iindx;
int spc, ipc;
int skpx = System.Convert.ToInt32((bmpMatch.Width - 1) / (double)10);
if (skpx < 1 | ExactMatch)
skpx = 1;
int skpy = System.Convert.ToInt32((bmpMatch.Height - 1) / (double)10);
if (skpy < 1 | ExactMatch)
skpy = 1;
for (int si = 0; si <= ScreenByts.Length - 1; si += 3)
{
FoundMatch = true;
for (int iy = 0; iy <= ImgBmd.Height - 1; iy += skpy)
{
for (int ix = 0; ix <= ImgBmd.Width - 1; ix += skpx)
{
sindx = (iy * ScreenBmd.Stride) + (ix * 3) + si;
iindx = (iy * ImgBmd.Stride) + (ix * 3);
spc = Color.FromArgb(ScreenByts[sindx + 2], ScreenByts[sindx + 1], ScreenByts[sindx]).ToArgb();
ipc = Color.FromArgb(ImgByts[iindx + 2], ImgByts[iindx + 1], ImgByts[iindx]).ToArgb();
if (spc != ipc)
{
FoundMatch = false;
iy = ImgBmd.Height - 1;
ix = ImgBmd.Width - 1;
}
}
}
if (FoundMatch)
{
double r = si / (double)(ScreenBmp.Width * 3);
double c = ScreenBmp.Width * (r % 1);
if (r % 1 >= 0.5)
r -= 1;
rct.X = System.Convert.ToInt32(c);
rct.Y = System.Convert.ToInt32(r);
rct.Width = bmpMatch.Width;
rct.Height = bmpMatch.Height;
break;
}
}
bmpMatch.UnlockBits(ImgBmd);
ScreenBmp.UnlockBits(ScreenBmd);
//ScreenBmp.Dispose();
return rct;
}
}
}
bu konuyu açtığımı ben unuttum proje yok artıkC#:namespace resimtıklama { using System.Drawing; using System.Drawing.Imaging; using System.Runtime.InteropServices; public partial class Form1 : Form { private Bitmap ImgToFind = new Bitmap(@"C:\bitmaps\find\image.png"); private Bitmap ScreenBmp = new Bitmap(@"c:\bitmaps\find\imagescreen.png"); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Rectangle rect = FindImageOnScreen(ImgToFind, false); if (rect != Rectangle.Empty)//Image Foud { //Point cntr = new Point(rect.X + System.Convert.ToInt32(rect.Width / (double)2), rect.Y + System.Convert.ToInt32(rect.Height / (double)2)); //Cursor.Position = cntr; MessageBox.Show(rect.ToString()); } else MessageBox.Show("Image not found"); } private Rectangle FindImageOnScreen(Bitmap bmpMatch, bool ExactMatch) { BitmapData ImgBmd = bmpMatch.LockBits(new Rectangle(0, 0, bmpMatch.Width, bmpMatch.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb); BitmapData ScreenBmd = ScreenBmp.LockBits(new Rectangle(0, 0, ScreenBmp.Width, ScreenBmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb); byte[] ImgByts = new byte[(Math.Abs(ImgBmd.Stride) * bmpMatch.Height) - 1 + 1]; byte[] ScreenByts = new byte[(Math.Abs(ScreenBmd.Stride) * ScreenBmp.Height) - 1 + 1]; Marshal.Copy(ImgBmd.Scan0, ImgByts, 0, ImgByts.Length); Marshal.Copy(ScreenBmd.Scan0, ScreenByts, 0, ScreenByts.Length); bool FoundMatch = false; Rectangle rct = Rectangle.Empty; int sindx, iindx; int spc, ipc; int skpx = System.Convert.ToInt32((bmpMatch.Width - 1) / (double)10); if (skpx < 1 | ExactMatch) skpx = 1; int skpy = System.Convert.ToInt32((bmpMatch.Height - 1) / (double)10); if (skpy < 1 | ExactMatch) skpy = 1; for (int si = 0; si <= ScreenByts.Length - 1; si += 3) { FoundMatch = true; for (int iy = 0; iy <= ImgBmd.Height - 1; iy += skpy) { for (int ix = 0; ix <= ImgBmd.Width - 1; ix += skpx) { sindx = (iy * ScreenBmd.Stride) + (ix * 3) + si; iindx = (iy * ImgBmd.Stride) + (ix * 3); spc = Color.FromArgb(ScreenByts[sindx + 2], ScreenByts[sindx + 1], ScreenByts[sindx]).ToArgb(); ipc = Color.FromArgb(ImgByts[iindx + 2], ImgByts[iindx + 1], ImgByts[iindx]).ToArgb(); if (spc != ipc) { FoundMatch = false; iy = ImgBmd.Height - 1; ix = ImgBmd.Width - 1; } } } if (FoundMatch) { double r = si / (double)(ScreenBmp.Width * 3); double c = ScreenBmp.Width * (r % 1); if (r % 1 >= 0.5) r -= 1; rct.X = System.Convert.ToInt32(c); rct.Y = System.Convert.ToInt32(r); rct.Width = bmpMatch.Width; rct.Height = bmpMatch.Height; break; } } bmpMatch.UnlockBits(ImgBmd); ScreenBmp.UnlockBits(ScreenBmd); //ScreenBmp.Dispose(); return rct; } } }
Yerel disk c içine bitmap klasörü onunda altına find klasörü açılıp; bulunmak istenen resmin adı image.png, aranacak olan resmin adı imagescreen.png olarak ayarlanmalı. Program aranan resmin koordinatlarını tam olarak vermektedir.
Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.