Bildirim
Vb.net Yardım Edebilecek varmı
Daha Fazla 
Bu Konudaki Kullanıcılar:
Daha Az 

2 Misafir - 2 Masaüstü

Giriş
Mesaj
-
-
:
http://stackoverflow.com/questions/13443913/trying-to-get-pixel-color-from-screen-coordinates-cant-call-my-function
https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.send(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb
edit:
tuş basımını simüle etmek için
SendKeys.Send("{ENTER}")
{ENTER} yerine istediğin tuş için listeden bakabilirsin o msdn linkinde var bütün tuşlar için.
pixel rengini almak için de şu kod:Dim screenSize As Size = New Size(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
Using screenGrab As New Bitmap(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
Using g As Graphics = Graphics.FromImage(screenGrab)
g.CopyFromScreen(New Point(0, 0), New Point(0, 0), screenSize)
Dim pc As Color = screenGrab.GetPixel(20, 20)
End Using
End Using
pixelin değişimini algılamak için de bir timer oluştur belirli aralıklarla üstteki yöntemle kontrol edip karşılaştırsın. değiştiyse SendKeys.Send() metoduyla istediğin tuşu yollarsın.
< Bu mesaj bu kişi tarafından değiştirildi VatandA.Ş. -- 7 Aralık 2016; 18:26:23 >
< Bu ileti mini sürüm kullanılarak atıldı >
-
mesela sarı rengini belirledim o koordinattaki renk değiştiği anda tekrar sarı olana kadar bir tuşa basacak sarı olunca duracak -
o kadarını sen yazacaksın. ben sana malzemeyi verdim.
timer'ın Tick eventinde sarı mı diye kontrol edersin. sarı değilse tuşa basar. Timer'ın interval'ini istediğine göre ayarlarsın işte 1 saniye için 1000ms, saniyenin onda biri için 100ms.
çok zor bir şey değil zaten. zaten sıfırdan yazılsın istemişsin böyle istek olmaz. uğraşırsın, yapamadığın yer olur onu sorarsın. -
quote:
Orijinalden alıntı: Microsoft Specialist
o kadarını sen yazacaksın. ben sana malzemeyi verdim.
timer'ın Tick eventinde sarı mı diye kontrol edersin. sarı değilse tuşa basar. Timer'ın interval'ini istediğine göre ayarlarsın işte 1 saniye için 1000ms, saniyenin onda biri için 100ms.
çok zor bir şey değil zaten. zaten sıfırdan yazılsın istemişsin böyle istek olmaz. uğraşırsın, yapamadığın yer olur onu sorarsın.
Tamam hocam sağolasın uğraşıyım biraz timer tick e yazacağım kod ne pixel x y deki sarımı sorusunu nasıl soracam. -
üstte attığım kodu kullanacaksın işte.
Dim pc As Color = screenGrab.GetPixel(20, 20)
satırında pixeli alıyor. bu değişkeni kontrol edeceksin sarı mı değil mi diye.
bu kodu komple bir metoda aktarabilirsin CheckPixelColor() gibi. tick eventi boşuna uzamasın diye. metod da boolean döndürür pixel sarıysa true, değilse false.
tick eventinde de
if(CheckPixelColor()) //sendkey işlemleri
< Bu mesaj bu kişi tarafından değiştirildi VatandA.Ş. -- 7 Aralık 2016; 19:8:31 > -
quote:
Orijinalden alıntı: Microsoft Specialist
üstte attığım kodu kullanacaksın işte.
Dim pc As Color = screenGrab.GetPixel(20, 20)
satırında pixeli alıyor. bu değişkeni kontrol edeceksin sarı mı değil mi diye.
bu kodu komple bir metoda aktarabilirsin CheckPixelColor() gibi. tick eventi boşuna uzamasın diye. metod da boolean döndürür pixel sarıysa true, değilse false.
tick eventinde de
if(CheckPixelColor()) //sendkey işlemleri
Baya Bir uğraşacağım o kesin :) kafam karıştı toparlarım gerçekten çok sağol bu bilgilerle kurcalayıp bulurum artık. -
ugrasmadan yapsan bir anlami olmaz. ugrasarak ogrenirsin. -
quote:
Orijinalden alıntı: Microsoft Specialist
üstte attığım kodu kullanacaksın işte.
Dim pc As Color = screenGrab.GetPixel(20, 20)
satırında pixeli alıyor. bu değişkeni kontrol edeceksin sarı mı değil mi diye.
bu kodu komple bir metoda aktarabilirsin CheckPixelColor() gibi. tick eventi boşuna uzamasın diye. metod da boolean döndürür pixel sarıysa true, değilse false.
tick eventinde de
if(CheckPixelColor()) //sendkey işlemleri
Hocam kusura bakmazsan çok uğraştım yapamadım bir tane örnek yapabilirmisin x,y de rengi buluyorum ama değiştiğinde tuş bastıramıyorum rica etsem birtane form1.de ufak bir proje yapabilirmisin. -
hocam hazir kod istiyorsun iste bak. ki zaten gereken kodlari verdim, tek yapman gereken birlestirmek. cok basit bir sey, bunu yapamadigin halde niye ugrasiyorsun boyle bir seyle onu anlamiyorum ben. daha basit seyler yap
olusturdugun timer'in Tick eventinde pixeli al ve pixel sari mi diye bak. eger sariysa SendKeys.Send("{ENTER}") seklinde gonder.
'Timer'in Tick (bunun adi Elapsed da olabilir emin degilim) eventi
Dim screenSize As Size = New Size(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
Using screenGrab As New Bitmap(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
Using g As Graphics = Graphics.FromImage(screenGrab)
g.CopyFromScreen(New Point(0, 0), New Point(0, 0), screenSize)
Dim pc As Color = screenGrab.GetPixel(20, 20)
If (pc = Color.Yellow)
SendKeys.Send("{ENTER}")
End If
'syntax hatasi olabilir duzeltirsin. vb.net bilmiyorum
End Using
End Using
-
quote:
Orijinalden alıntı: Microsoft Specialist
hocam hazir kod istiyorsun iste bak. ki zaten gereken kodlari verdim, tek yapman gereken birlestirmek. cok basit bir sey, bunu yapamadigin halde niye ugrasiyorsun boyle bir seyle onu anlamiyorum ben. daha basit seyler yap
olusturdugun timer'in Tick eventinde pixeli al ve pixel sari mi diye bak. eger sariysa SendKeys.Send("{ENTER}") seklinde gonder.
'Timer'in Tick (bunun adi Elapsed da olabilir emin degilim) eventi
Dim screenSize As Size = New Size(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
Using screenGrab As New Bitmap(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
Using g As Graphics = Graphics.FromImage(screenGrab)
g.CopyFromScreen(New Point(0, 0), New Point(0, 0), screenSize)
Dim pc As Color = screenGrab.GetPixel(20, 20)
If (pc = Color.Yellow)
SendKeys.Send("{ENTER}")
End If
'syntax hatasi olabilir duzeltirsin. vb.net bilmiyorum
End Using
End Using
Hocam C# yükledim onun için de bu kodlar geçerlimi yoksa farklımı yazacam
-
Denedim, çalışıyor. Sadece istediğin zaman aralığını falan değiştireceksin. Yorum olarak yazdım ilgili satırların yanlarına. using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
Timer timer = new Timer() { Interval = 1000 }; // 1000ms = 1 saniye
public Form1()
{
InitializeComponent();
timer.Tick += Timer_Tick;
timer.Start();
}
private void Timer_Tick(object sender, EventArgs e)
{
var bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
var gfx = Graphics.FromImage(bitmap);
gfx.CopyFromScreen(0, 0, Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
var color = bitmap.GetPixel(100, 100); // İstediğin pixel konumu (x, y) şeklinde
if (color == Color.FromArgb(255, 255, 255, 0)) // İstediğin renk (a, r, g, b) şeklinde
{
SendKeys.Send("{ENTER}");
}
}
}
}
Kullandığım class'ların MSDN referans linkleri:
Bitmap Constructor:https://msdn.microsoft.com/en-us/library/3z132tat.aspx
Graphics.CopyFromScreen:https://msdn.microsoft.com/en-us/library/cdcw1c3b.aspx
Bitmap.GetPixel:https://msdn.microsoft.com/en-us/library/system.drawing.bitmap.getpixel.aspx
SendKeys.Send:https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.send(v=vs.110).aspx
< Bu mesaj bu kişi tarafından değiştirildi VatandA.Ş. -- 7 Aralık 2016; 23:17:10 >
-
quote:
Orijinalden alıntı: Microsoft Specialist
Denedim, çalışıyor. Sadece istediğin zaman aralığını falan değiştireceksin. Yorum olarak yazdım ilgili satırların yanlarına.using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
Timer timer = new Timer() { Interval = 1000 }; // 1000ms = 1 saniye
public Form1()
{
InitializeComponent();
timer.Tick += Timer_Tick;
timer.Start();
}
private void Timer_Tick(object sender, EventArgs e)
{
var bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
var gfx = Graphics.FromImage(bitmap);
gfx.CopyFromScreen(0, 0, Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
var color = bitmap.GetPixel(100, 100); // İstediğin pixel konumu (x, y) şeklinde
if (color == Color.FromArgb(255, 255, 255, 0)) // İstediğin renk (a, r, g, b) şeklinde
{
SendKeys.Send("{ENTER}");
}
}
}
}
Kullandığım class'ların MSDN referans linkleri:
Bitmap Constructor:https://msdn.microsoft.com/en-us/library/3z132tat.aspx
Graphics.CopyFromScreen:https://msdn.microsoft.com/en-us/library/cdcw1c3b.aspx
Bitmap.GetPixel:https://msdn.microsoft.com/en-us/library/system.drawing.bitmap.getpixel.aspx
SendKeys.Send:https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.send(v=vs.110).aspx
Evet hocam istediğim buydu çok sağol çalıştı.
-
rica ederim -
-
parametre gecerli degil diyor. X Y Size SourceCopy kelimeleri uzerinde fareyi tutarsan bilgisi gozukur.
veya o sagdakinden ayrintilari gosterebilirsin.
tek bu resimden ne oldugunu anlayamam yani -
Sayfa:
1
Ip işlemleri
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X