Şimdi Ara

Vb.net Yardım Edebilecek varmı

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
17
Cevap
0
Favori
356
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • arkadaşlar ben ekranda belirleyeceğim bir koordinat da pixel rengi değiştiği zaman buton basacak bir kod lazım yardım ederseniz sevinirim
    x , y koordinatında pixel rengi değiştiği zaman button bas yada klavye tuşu bassın
    şimdiden teşekkürler.



  • :
    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
  • Hilecini kullanıcısına yanıt
    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.
  • Hilecini kullanıcısına yanıt
    ü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.
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • Hilecini kullanıcısına yanıt
    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.
  • Hilecini kullanıcısına yanıt
    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




  • Hilecini kullanıcısına yanıt
    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ı.




  • Hilecini kullanıcısına yanıt
    rica ederim
  • quote:

    Orijinalden alıntı: Microsoft Specialist

    rica ederim

     Vb.net Yardım Edebilecek varmı


    hocam 3 4 dakika çalıştıktan sonra bu şekilde hata veriyor.




  • Hilecini kullanıcısına yanıt
    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
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.