Batuhan adlı üyeden alıntı


Kodda bulunan mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0,0); kısmı resimde de görüldüğü gibi farklı işler için ayrılmış bölümlerdir. Siz bu programda bu kısımlara ihtiyaç duymadığınız için buralara 0 geçmektesiniz, hal böyle olunca da bunu koordinat gibi algılamışsınız ki ilk başta bende öyle zannetmiştim. Offsetleri doğrudan x ve y'ye uygulamalısınız. Fonksiyonu aynı kodu tekrar tekrar kullanmayacak şekilde düzenleyecek olursak:


private void ClickMouse(int x-2, int y-2)
{
SetCursorPos(x,y);
mouse_event(MOUSEEVENTF_LEFTDOWN, x,y);
mouse_event(MOUSEEVENTF_LEFTUP, x, y);
}


Bu şekilde yaptığımızda fonksiyona gelen değer direk olarak scope'a girmeden işlenir. Yani fonksiyonu çağırırken ClickMouse(10, 10); dediğimizde fonksiyon bunu 8, 8 olarak işleyecektir. İlerleyen zamanlarda "ya bu -2'ler de neyin nesiymiş" dememeniz için tavsiyem xOFFSET ve yOFFSET isminde iki değişken tanımlayıp kullanmanızdır, bu sayede biraz daha anlaşılır bir yapıya kavuşabilirsiniz. Örneğin:


private void ClickMouse(int x-2, int y-2)
{
...
}

yerine

const int xOFFSET = 2;
const int yOFFSET = 2;
private void ClickMouse(int x-xOFFSET, int y-yOFFSET)
{
...
}



Bu şekilde yalnız derleme hatası veriyor hocam tanımlanamıyor field dışı oldugu için