Picproje Elektronik Sitesi

BİLGİSAYAR => Donanım ve Yazılım => Konuyu başlatan: z - 04 Haziran 2015, 00:54:46

Başlık: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: z - 04 Haziran 2015, 00:54:46
Nöbet görevimde sabaha kadar makinelere göz kulak olmam gerekiyor.

Sıkıcı bir iş. Sorun olduğunda erken müdahale önemli. Fakat sabaha kadar makine ekranlarının karşısına bir Allah'ın kulu geçip beklemez.

5..10 dakikada bir göz atıyorum.

Belki de yüzbinlerce dolara yazdırılanve  büyük yazılımcı geçinen firmalar ve bizim arkadaşlar erken uyarı rutinlerini bir türlü adam edemediler. Bugüne kadar layıkı ile çalıştığını göremedim.
Bu uyarı sistemi genele değil sadece biz nöbet tutanlara lazım olduğu için savsaklıyorlar.

Neyse iş başa düştü.

Ekranda bir buton var. Bu butona bastığımızda güncel veriler tazeleniyor. Öbür türlü değişikliklerin ekrana gelmesi Allah'a kalmış. Bir türlü beceremediler bu tip aksaklıkları.

Yapmak istediğim bir mouse. Mouse ile cursoru elimle iteleyerek butonun üstüne konumlayacağım. Mouse her 1 dakikada bir butonu tıklamış gibi yapacak.

Bu esnada ekranın bir önceki görüntüsünü bmp olarak sakladığımdan yeni ekran görüntüsü ile farkı varmı diyede bir küçük program yaacağım. Değişiklik olduysa alarm verecek.

Şimdi usb mouse nasıl yapılır arayışına girmek istemiyorum. Müdahale edebileceğim basit bir şema ve kodları lazım. Hiç bir şey bulamazsam mouse butonunun uçlarına role vs ile müsahale edeceğim.

Yardım.



Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: Karamel - 04 Haziran 2015, 01:00:22
hocam anladigim kadari ile bilgisayar programi yapacaksiniz? ayni bilgisayar programi ile hem mouse u hareket ettirebilir. biryerleri tiklatabilir vede resimleri karsilastirabilirsiniz?
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: z - 04 Haziran 2015, 01:05:07
Nasıl ?

Mouse kursorunun pozisyonunu yazılımsal olarak değiştirmeyi nasıl yaparım?
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: baran123 - 04 Haziran 2015, 01:05:44
USB HID mouse mu yapacaksınız yeni donanım olarak ? Takcaksınız belirli noktalarda belirli işlemler yapacak yani ? Bende USB klavye arıyorum.Bildiğim kadarı ile USB HID yapıp bunu bilgisayara mouse gibi okutmanız lazım oda bir tanımlama dosyası ile idi galiba bakıyorum bir şey bulursam yazarım tekrardan.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: Karamel - 04 Haziran 2015, 01:08:17
Alıntı yapılan: z - 04 Haziran 2015, 01:05:07
Nasıl ?

Mouse kursorunun pozisyonunu yazılımsal olarak değiştirmeyi nasıl yaparım?

hocam bunu okumustum biryerlerde. bir bakayim.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: z - 04 Haziran 2015, 01:08:30
Ekranda tıklanacak tek bir nokta var. Orayı arada bir tıklayacak.

Aslında herhangi bir programın herhangi bir butonuna mesaj yollayıp falan basılabilir deniyordu.

Eğer bu mümkünse hiç bir şeyini bilmediğimiz bir programın butonunun adresi nasıl öğrenilir? Handle ı vs si.

Bunu becerebilirsem hiç donanıma da gerek kalmaz.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: Karamel - 04 Haziran 2015, 01:10:10
hocam buldum. http://stackoverflow.com/questions/8050825/how-to-move-mouse-cursor-using-c (http://stackoverflow.com/questions/8050825/how-to-move-mouse-cursor-using-c)

mouse u istedigimiz axis point e cekebiliyoruz. tiklama meselelerinide bulacagim simdi. ::)
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: baran123 - 04 Haziran 2015, 01:12:34
"Nasıl ?"

Şimdi şöyle bir şey denedim C# da.Bir form açtım aşağıdaki kod ile formun 0,0 kordinatlarına tık diye gitti.Ama size ekranın koordinatları lazım galiba ?
System.Windows.Forms.Cursor.Position = PointToScreen(new Point(0, 0));
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: Karamel - 04 Haziran 2015, 01:13:28
http://www.codeproject.com/Articles/32556/Auto-Clicker-C (http://www.codeproject.com/Articles/32556/Auto-Clicker-C)

hocam bunlari sizin yazilim dilinizce convert edebilirsiniz. c# ta yapiliyorsa baska dillerlede yapilabilir.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: baran123 - 04 Haziran 2015, 01:13:34
Tıklamada burada : http://forum.donanimhaber.com/m_55365297/tm.htm (http://forum.donanimhaber.com/m_55365297/tm.htm)
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: Karamel - 04 Haziran 2015, 01:16:19
Alıntı yapılan: Baran Ekrem - 04 Haziran 2015, 01:12:34
"Nasıl ?"

Şimdi şöyle bir şey denedim C# da.Bir form açtım aşağıdaki kod ile formun 0,0 kordinatlarına tık diye gitti.Ama size ekranın koordinatları lazım galiba ?
System.Windows.Forms.Cursor.Position = PointToScreen(new Point(0, 0));

hocam ben hocayi anladim.

ekranda belirli bir kordinat ta button var. bunu tiklayinca sistem refresh oluyor. sistemde sorun varsa ekranda degisimler oluyor. hoca son foto ile sondan bir oncekini karsilastiracak. hocanin programinin yapmasi gereken. calisir calismaz. mouse u button un kordinatlarina goturecek. 1 dk da bir tiklayacak. n inci photo ile n - 1 inci photoyu compare edecek. degisim varsa uyari verecek.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: baran123 - 04 Haziran 2015, 01:18:09
O zaman senin gösterdiğin gibi olay şu : http://stackoverflow.com/questions/8050825/how-to-move-mouse-cursor-using-c (http://stackoverflow.com/questions/8050825/how-to-move-mouse-cursor-using-c)
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: CAHİT_E - 04 Haziran 2015, 01:26:28
Z hocam mouse ile uğraşmak yerine visual studiodaki serial port u kullanarak usb girişinden istediğiniz veriyi uygulamaya gönderip istediğiniz işlemi yaptırırsınız.
Mesela diyelimki eğer buton bir olursa bilgisayardaki uygulama yeşil sıfır olursa kırmızı olsun istiyorsunuz.Bunu usb girişine bir tane usb to ttl takarak uarttan gelen verileri uygulamada değerlendirir ve veriye görede istediğiniz işlemi yaptırabilirsiniz.2 ay önce c# ile buna benzer çalışmalarım oldu.
Ve hatta bu yöntemle uygulamadan da pice veri gönderilebilecek.

Eğer yapmak istediğinizi doğru anlamışsan konu hakkında yardımcı olabilirim.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: z - 04 Haziran 2015, 01:39:36
Yok dediğin gibi değil. Yazılımı birileri yapmış ona müdahale etmeyi aklımızdan bile geçiremeyiz.

Karamel ne yapmak istediğimi tamı tamına anlamış.

mesaj birleştirme:: 03 Haziran 2015, 23:44:54

Alıntı yapılan: Baran Ekrem - 04 Haziran 2015, 01:12:34
"Nasıl ?"

Şimdi şöyle bir şey denedim C# da.Bir form açtım aşağıdaki kod ile formun 0,0 kordinatlarına tık diye gitti.Ama size ekranın koordinatları lazım galiba ?
System.Windows.Forms.Cursor.Position = PointToScreen(new Point(0, 0));

Mouse kursoru benim vereceğim komutla yer değiştirdikten sonra ekrandaki butonun üstüne gelmesi için kendi programımdaki boxlara x y değerlerini yazıp deneme yanılma ile bulurum. Sonra da bunları parametre dosyasında saklatırım dert değil o.

Ama bir de şu var. Mouse benim formumun x,y koordinatına değil ekranı kaplamış olan uygulamanın x,y koordinatına gidecek. Benim uygulama ya minimize edilmiş olup ekranda hiç görünmeyecek ya da ekranın bir köşesinde minicik bir form olarak duracak.

Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: CAHİT_E - 04 Haziran 2015, 01:50:31
hocam peki uygulama aktifken klavyeden herhangi bir tuş ile refresh yapılamıyor mu?(enter/f5 ...)
Bu şekilde çok daha kolay kodlama yapılabilir diye düşünüyorum.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: muhittin_kaplan - 04 Haziran 2015, 01:52:10
sendkey klavye tuşları için,
cursor position mouse için kullanılabilir

(.net çıkmadan önce windows api ile yapardık)
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: baran123 - 04 Haziran 2015, 01:53:07
"Mouse benim formumun x,y koordinatına değil ekranı kaplamış olan uygulamanın x,y koordinatına gidecek"

O zaman form da değil ekranda hareket etmeniz gerek.Yada dediğiniz yazılıma ekleme yapmanız gerekiyor.Oda mümkün değil galiba.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: muhittin_kaplan - 04 Haziran 2015, 01:53:39
eğer donanım yapmak isterseniz basit hızlı bir şekilde swordfish in örneği mevcut 18f4550 yada 2550 ile
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: baran123 - 04 Haziran 2015, 01:55:21
Hocam CCS veya XC8 için klavye olanı var mı ?
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: muhittin_kaplan - 04 Haziran 2015, 01:55:44
:(
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: Karamel - 04 Haziran 2015, 01:56:33
Alıntı yapılan: Baran Ekrem - 04 Haziran 2015, 01:53:07
"Mouse benim formumun x,y koordinatına değil ekranı kaplamış olan uygulamanın x,y koordinatına gidecek"

O zaman form da değil ekranda hareket etmeniz gerek.Yada dediğiniz yazılıma ekleme yapmanız gerekiyor.Oda mümkün değil galiba.

hocam bilgisayar programlarinda yapilabileceklerin neredeyse ucu yok gibi birsey. millet dehset seyler ortaya cikartiyor. mouse u kendi forum umuzun disinda hareket ettirmek cokta sorun olmasa gerek?

mesaj birleştirme:: 04 Haziran 2015, 01:57:14

Alıntı yapılan: muhittin_kaplan - 04 Haziran 2015, 01:53:39
eğer donanım yapmak isterseniz basit hızlı bir şekilde swordfish in örneği mevcut 18f4550 yada 2550 ile

hocam bence donanima gerek yok. yazilim yapar bunu?  :-\
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: CAHİT_E - 04 Haziran 2015, 01:56:44
Hocam buyrun istediğiniz işlem:
http://www.sefaaras.com/c-4/fare-kullanmadan-tiklama/ (http://www.sefaaras.com/c-4/fare-kullanmadan-tiklama/)

Ama uygulama dışı tıklama yapar mı bilmiyorum.Malesef şu anda visual yüklü değil deneyemeyeceğim .
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: muhittin_kaplan - 04 Haziran 2015, 01:57:45
deneyeyim birşeyler bakalım ne çıkacak ortaya :) her nikadar bu masaüstücülere sinir oluyorsada :p
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: baran123 - 04 Haziran 2015, 01:57:59
2 uygulama gereksiz olur bence.Çünkü diğer uygulamada böyle bir şey yapılmalı ise aynı app de daha yakışıklı olur o manada :).Yada ana uygulamada timer kurup bir butana click de yapılabilir aslında

mesaj birleştirme:: 04 Haziran 2015, 01:58:38

Siz en iyisi ana uygulamaya girin hocam :D

mesaj birleştirme:: 04 Haziran 2015, 02:00:58

Buton clikinede gerek yok timer ile yenileme işlemi yaparsanız nokta atışı.
neyse fırça yicem kaçtım ben
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: muhittin_kaplan - 04 Haziran 2015, 02:12:06
http://www.gamedev.net/topic/321029-how-to-simulate-a-mouse-click-in-c/ (http://www.gamedev.net/topic/321029-how-to-simulate-a-mouse-click-in-c/)

yapmış elin adamı

mesaj birleştirme:: 04 Haziran 2015, 02:12:45

"user32.dll" yi çağırıyor.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: onurserdar - 04 Haziran 2015, 02:13:41
http://www.ghost-mouse.com/ (http://www.ghost-mouse.com/)

http://oyun.tamindir.com/ghost-mouse/ (http://oyun.tamindir.com/ghost-mouse/)

http://www.gezginler.net/indir/ghost-mouse.html (http://www.gezginler.net/indir/ghost-mouse.html)

bahsettiğiniz ihtiyaçları çözecek free ve kullanışlı bir program
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: veliusta - 04 Haziran 2015, 02:47:14
Yazılım ilede yapabilirsin , donanım ilede.
Donanım ile yapmak istersen Arduino Pro Micro ile yapabilirsin.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: engerex - 04 Haziran 2015, 08:55:13
 Ufak bir programcık. Uygulama aktifken pozisyonu kaydetmek için F5 tuşuna basarsın. Tıklanacak pozisyonun üzerine gelip F6 tuşuna basar ve pozisyonu kaydedersin ve tıklama döngüsünü saniye cinsinden girersin. Timer'ı bu döngüye kurarsın ve Timer içeriği sadece:  SetCursorPos(X, Y); Böylece ekran çözünürlüğü versiyon farklı nedenlerle buton konumu farklı olsa da önüne geçmiş olursun. Kısmi ekran görüntüsü alıp karşılaştırma yaparsan daha sağlıklı olabilir. Sağ alt köşede saatin dakikası değişse alarm verecektir.
Android tablet veya telefondan takibini de yapabilirsin.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: peko - 04 Haziran 2015, 09:26:34
Toparlayacak olursak;

Yapmak istediğim:
Mouse ile cursoru elimle iteleyerek butonun üstüne konumlayacağım.
Mouse her 1 dakikada bir butonu tıklamış gibi yapacak.

1 - Yazılımı birileri yapmış ona müdahale etmeyi aklımızdan bile geçiremeyiz.
2 - Mouse benim formumun x,y koordinatına değil ekranı kaplamış olan uygulamanın x,y koordinatına gidecek.
3 - Benim uygulama ya minimize edilmiş olup ekranda hiç görünmeyecek ya da ekranın bir köşesinde minicik bir form olarak duracak
4 - ekranda belirli bir kordinat ta button var. tiklayinca sistem refresh oluyor. (Ekranda tıklanacak tek bir nokta var. Orayı arada bir tıklayacak.)
5 - sistemde sorun varsa ekranda degisimler oluyor.
6 - son foto ile sondan bir oncekini karsilastiracak.
7 - mouse u button un kordinatlarina goturecek. 1 dk da bir tiklayacak.
8 - n inci photo ile n - 1 inci photoyu compare edecek.
9 - degisim varsa uyari verecek.

z@ Hocam,
Bir şekilde mouse koordinata gitti, butonu tıkladı ekranı yeniledi. (Mekanikle de çözülebilecek bir konu..)
peki ya foto konusunu nasıl halletmeyi düşündünüz ? Sonuçta yazılımsal bir müdahalede bulunup çıktıyı alamıyoruz.
Ekranın karşısına bir web cam koyup, görüntü alıp karşılaştırmak mı ?

Konuya sadece mouse tıklaması açısından değil de, geniş açıdan bakabilirsek ilerideki çözüm geriyi de besler diye düşündüğüm için soruyorum.

Neler var elimizde? Usb giriş, Usb Mouse, Webcam, Vga out vs..

Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: ercan_t - 04 Haziran 2015, 09:28:40
merhaba,

uzaktan eğitim okuduğum zamanlarda  pc başında olmadanda ders kitabı okuma kısmı için mouse tıklama programı yapmıştım
mouse u istenilen yere getirip kendisi tıklıyordu.

Delphi kodu:


procedure TForm1.Timer1Timer(Sender: TObject);
var
     point:TPoint; // kursor'un bulundugu yer
begin
getcursorpos(point); // kursor'un bulundugu yerin kordinatlarini oku
// setcursorpos(350,500); // kursor'u yeni yerine yonlendir.
  mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);// tikla
  mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); //
  setcursorpos(point.x,point.y); // kursor'u eski yerine
end;

Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: z - 04 Haziran 2015, 12:34:18
@Peko

Bazı makinelerimize program dahi install etme şansımız yok. Ama bu projemde abartılı işler yapmayacak ufak bir iki şey yükleyebilrim. Fakat bunlar asla internetten indirilen uygulama olamaz.

Eğer program kurulumu yasak  bir makine için ekran karşılaştırma sorununu çözecek olsaydım monitör çıkışlarındaki RGB sinyallerini analog olarak yorumlayan bir devre yapardım. Ne kadar başarılı olurdu dersen devresine bağlı.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: yldzelektronik - 04 Haziran 2015, 13:10:34
Bülent abi bi ara Burak abi yine senin benzeri bir sorun için izah etmişti.

Windowsta eventlara falan kanca atabiliyorsun.Senin bahsettiğin formdaki butona bastığında os tarafında olanları tespit edebilirsen, ilgili olayı tekrar oluşturabilirsin.

Veya bahsettiğin makineleri kullanmayacaksan yalnızca form açık duracaksa bir çok uygulamada form üzerindeki bir componente tıklandığında enter tab vs gibi tuşlar kullanımda oluyor.Her makine için birkez mouse ile tıklarsan daha yazacağın minik program klaveyi simüle ederek entere basar.

Buraya kadar biraz zihni sinir oldu.

Şimdi mouse koordinatlarıyla ilgili şöyle bir sorun oluşma olasılığı var.Senin her bilgisayarında aynı çözünürlükte monitör olmayabilir.Dolayısıyla koordinatlar tutmayabilir.Onun yerine ilgili formun üzerindeki koordinatlarını alabiliyorsan çözüm sağlar.Böylece uygulama ekranın neresinde olursa olsun erişebilirsin.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: gumush - 04 Haziran 2015, 14:20:26
Hocam daha karmasik islemleride mouse hareketlerini kaydeden ve tekrar uygulayan programlar ile yapabilirsiniz.
diger alternatif karamel'in dedigi gibi bir yazilimi 1px'lik form haline getirip calistirmak o zamanda ekrandaki koordinatlara rahatlikla tiklayabilecektir.

Degisimi degerlendirme isi dusundugunuzden zor olabilir. Ekranda zaten degisen seylerde olabilir. Eger guvenlik kamera goruntusu ise bunu yapmak dahada zor olabilir. Background subtraction algoritmalari ile kismende olsa yapilabilir.

Diger alternatif yazilimin aldigi yerden bilgileri almak olabilir. Sizin  yazdiginiz program degisimide takip edecek sekilde bilgileri alabilir ( karakter seklinde veriler ise )

ekrandaki degisimi detaylandirabilirseniz fikir uretebiliriz. En monitor karsisina baska bir kamera ile cozulebilir diye dusunuyorum. Ama yinede aklima sistemin neden boyle tasarlandigi sorusu geliyor. Yani ozellikle sistemi kontrol eden kisi uyanik olsun , ekrani gorsun , degerlendirsin gibi bir istek var ise etrafindan dolanmak sorun olabilir.

Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: evreno - 04 Haziran 2015, 16:10:16
üstat şu linke bir program attım derme çatma bir şey ama istediklerin içerisinde mevcut
kodları biraz elden geçirip daha verimli de yapılabilir
dar zamanıma denk geldi
sen bir incele gerekirse üzerinde çalışma yaparız
kod vs 2013 de yazıldı diğer sürümlerle de sorun çıkarmaz sanırım

https://drive.google.com/file/d/0B8rG9Be9SBpgblNHa29UQzJZOXM/view?usp=sharing (https://drive.google.com/file/d/0B8rG9Be9SBpgblNHa29UQzJZOXM/view?usp=sharing)

üstat bu arada pc yazılımcılarının aralarında iyileri de vardır ama denk gelmemiş demek ki  ;D
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: t2 - 04 Haziran 2015, 16:15:51
delfi olması gerek.sevmez bunu.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: evreno - 04 Haziran 2015, 16:21:58
Alıntı yapılan: t2 - 04 Haziran 2015, 16:15:51
delfi olması gerek.sevmez bunu.

ben .net de yazıyorum, delphi de yazarım ama uzun zamandır kullanmadım bilgisayar da yüklü bile değil
kodu inceleyip çeviren bir kişi olursa sonuçta delphi de de çalışır
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: peko - 04 Haziran 2015, 16:28:11
Alıntı Yapabartılı işler yapmayacak ufak bir iki şey yükleyebilrim.

Şuan ki istemiş olduğunuz işi yapacak yazılımı yükleyeceğiniz makinede çalışan işletim sistemi nedir hocam?


Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: z - 04 Haziran 2015, 16:40:54
win7
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: peko - 04 Haziran 2015, 17:01:40
Mouse tıklama konusu tamam dersek, 

Resim karşılaştırma işini aşağıdaki şekilde yapmamız bu işlem için yeterli olacaktır diye düşünüyorum.
(Hatta sadece takip etmek istediğimiz sektörleri de alabiliriz.. )

CaptureScreen
using (Bitmap bmpScreenCapture = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
                                            Screen.PrimaryScreen.Bounds.Height))
{
    using (Graphics g = Graphics.FromImage(bmpScreenCapture))
    {
        g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,
                         Screen.PrimaryScreen.Bounds.Y,
                         0, 0,
                         bmpScreenCapture.Size,
                         CopyPixelOperation.SourceCopy);
    }
}



ImageToByteArr
Image img = Image.FromFile(@"C:\dashboard.jpg");
byte[] arr;
using (MemoryStream ms = new MemoryStream())
{
    img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
    arr =  ms.ToArray();
}


ArraysEqual
static bool ArraysEqual<T>(T[] a1, T[] a2)
{
    if (ReferenceEquals(a1,a2))
        return true;

    if (a1 == null || a2 == null)
        return false;

    if (a1.Length != a2.Length)
        return false;

    EqualityComparer<T> comparer = EqualityComparer<T>.Default;
    for (int i = 0; i < a1.Length; i++)
    {
        if (!comparer.Equals(a1[i], a2[i])) return false;
    }
    return true;
}


Yazılım background'a sessizce çalışacak.

Her x sürede ;
1- Koordinatlara git - OK
2- Ekranı kaydet. (Resim1) - OK
3- Butona bas. - OK
4- Ekranı kaydet . (Resim2) - OK
5- İki resmi byte arr çevir. - OK
6- Karşılaştır. - OK
7- Fark varsa Dürt!  8)

Hocam değerli ellerinizde kodlanmayı bekliyor diyebiliriz o halde..

Eksik var mı?

Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: engerex - 04 Haziran 2015, 18:22:40
Ekran goruntusu gondermen mumkun mu?
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: fatih6761 - 04 Haziran 2015, 18:51:54
@peko hocam dashboard görüntüsünü jpegden yüklüyorsunuz ya veri
lossy compressiondan geldiğinden direkt byte byte karşılaştırma yapmak
pek doğru olmaz diye düşünüyorum.
Ya kayıpsız sıkıştırma algoritmaları tercih edilmeli (PNG benim tercihim) ya da
resim boyutu resampling ile küçültülüp (ki burada jpegden gelen gürültüyü bertaraf ediyoruz)
pixel değerleri arasındaki farklar toplanarak ne kadar fark olduğu
ölüçülüp bir eşikten sonra uyarılmalı.
Haksız mıyım? :)
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: z - 04 Haziran 2015, 19:01:46
Madem uğraştınız şu özelliği de eklemek lazım.

Refresh butonuna basıldığında ekran karşılaştırma işlemini askıya al.
X saniye bekle
Ekran karsılastırma işlemini başlat
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: mert3162 - 04 Haziran 2015, 19:02:49
hocam selam iki resim arasındaki benzerlikleri bulan bir yazılım buldum internette sayın peko'nun yazdıklarına ilaveten eklemek istedim.sizin karşılaştırmalarınızda yüzde yüz doğruluk istediğiniz için içerisindeki kodlardan faydalanabileceğinizi düşündüm

http://www.gokhanakgol.com/2011/07/15/c-ile-2-resim-arasinda-benzerlik-orani-bulmak/ (http://www.gokhanakgol.com/2011/07/15/c-ile-2-resim-arasinda-benzerlik-orani-bulmak/)

ayrıca online oyunlarda sürekli olarak belli yerlere belirli zamanlarda tıklama yapabilmeyi sağlayan programlar verilmiş bu programların tamamı arkaplanda calışır program makro kaydeder gibi 1 dakikada bir istenilen koordinata gidip sürekli olarak tıklama yapabilir (hatta diyelim mouse a kolunuz çarptı yinede ilgili koordinata zamanı geldiğinde teleport olup tıklar ve eski yerine geri döner) iki resmi byte arr çevirme konusunu bilmiyorum

ghost mouse programını önerebilirim ayrıca aklıma gelen birşey daha var güvenlik kameralarını bağladıkları dvr kayıt cihazları var bu cihazlarda alarm özelliği mevcut rgb kabloyu cctv kamera görüntüsüne cevirebilen bir sistem yaparsanız yani görüntüyü bir kameradan geliyormuş gibi sisteme gösterirseniz alarm menusünü aktif edip ekranda cizeceğiniz zone bölgelerinde bir değişim olduğu zaman alarm çıkışı verdirebilirsiniz hatta bu cihaz ile mail attırabilir cep telefonunuza ekran görüntüsünün gelmesini bile sağlayabilirsiniz.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: Farukc - 04 Haziran 2015, 19:12:40
Hocam mause makroları var bu konu ile ilgili rahatça işinizi görür..

Örnek program:

[url]https://www.jitbit.com/macro-recorder/mouse-recorder/[/url
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: peko - 04 Haziran 2015, 19:16:52
Şuan uygulama değil de analiz aşaması olduğu için olabilirite yorumları içerisinde olduğumuzu varsayıyorum.. O nedenle bu kodları henüz test etmedim..

Uygulama aşamasında en iyi algoritma ve metodların kullanılmayı istememiz elbette kaçınılmaz.
Bu aşamaya gelince "en iyi" olarak nitelendirdiğimiz tecrübelerimizi kodlamaya yansıtırız. (jpeg,png vs.. )

Bu metodlar test edilir, iş görürse ve performansı da yeterli gelirse fazla üstüne düşülmez, olmazsa üstüne düşülerek @z hocam'dan geri dönüş alarak yine düzenlemeleri yapabiliriz.

Benim için bu konuda;  "Az satır kod, Az kb akabinde sonuç" önemli.

Çünkü yüksek frekanslı (thread  manage), riskli, yüksek çözünürlükte işlenmesi gereken bir veri olmadığını düşünüyorum.

Maksat @z hocam keyiflensin  8) 

Bizde hobi yapmış olalım.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: peko - 04 Haziran 2015, 21:43:13
@z Hocam,
Mouse kontrol kısmı hariç yazıp(c#) test ettiğim kod. (10kb )


using System;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Threading;
using System.Windows.Forms;
namespace ZMonitorDemo
{
    public partial class Form1 : Form
    {
        private List<Bitmap> ScreenCaptureList = new List<Bitmap>();

        public Form1()
        {
            InitializeComponent();
            Thread t = new Thread(ZMonitor);
            t.Start();
        }

        private void ZMonitor()
        {
            int monitorPeriod = 5; // Second

            Thread.Sleep(3000);

            while (true)
            {
                try
                {
                    Bitmap bmp = ScreenCapture();
                    string bmpFileName = string.Format("ZMonitor_{0: ddMMyyyy_HHmm_ss}.Png", DateTime.Now);
                    bmp.Save(bmpFileName, ImageFormat.Png);
                    ScreenCaptureList.Add(bmp);

                    if (ScreenCaptureList.Count == 2)
                    {
                        byte[] dashboardFirst = ImageToByte(ScreenCaptureList[0]);
                        byte[] dashboardSecond = ImageToByte(ScreenCaptureList[1]);

                        if (ByteArrayCompare(dashboardFirst, dashboardSecond))
                        {
                            string changeByteValues = string.Format("\nDashboard First:{0:n0}\nDashboard Second:{1:n0}",
                                dashboardFirst.Length,
                                dashboardSecond.Length
                                );

                            MessageBox.Show("- Z Monitor value has changed!! -" + changeByteValues);
                        }
                           
                       
                        ScreenCaptureList.Clear();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }

                Thread.Sleep(monitorPeriod * 1000);
            }
        }

        private Bitmap ScreenCapture()
        {
            Bitmap bmpScreenCapture = null;

            bmpScreenCapture = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
                                            Screen.PrimaryScreen.Bounds.Height);

            using (Graphics g = Graphics.FromImage(bmpScreenCapture))
            {
                g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,
                                    Screen.PrimaryScreen.Bounds.Y,
                                    0, 0,
                                    bmpScreenCapture.Size,
                                    CopyPixelOperation.SourceCopy);
            }

            return bmpScreenCapture;
        }

        private byte[] ImageToByte(Image img)
        {
            byte[] byteArray = new byte[0];
            using (MemoryStream stream = new MemoryStream())
            {
                img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
                stream.Close();
                byteArray = stream.ToArray();
            }
            return byteArray;
        }

        private bool ByteArrayCompare(byte[] a1, byte[] a2)
        {
            return !StructuralComparisons.StructuralEqualityComparer.Equals(a1, a2);
        }
    }
}
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: Klein - 05 Haziran 2015, 00:28:29

SetCursorPos(1000,500);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);


Masa üstünde belirtilen koordinta ( Koordinatlar masa üstüne göredir. Aktif pencereye göre değil) tıklar.


extern "C" __declspec(dllimport) __stdcall  ptrrettype ImageSearch(int x1, int y1, int x2, int y2, char* str);

void __fastcall TForm1::Button1Click(TObject *Sender)
{
char *x;
char arr[255];
char *res;
TImgPos pos;
AnsiString s =ExtractFilePath(Application->ExeName) + "images\\logo.bmp";
x =  s.c_str();
res = ImageSearch(0,0,1000,1000, x);
Memo1->Lines->Add(x) ;
sscanf(res, "%d|%d|%d|%d|%d",&pos.found, &pos.left, &pos.top, &pos.width, &pos.height);
Memo1->Lines->Add(IntToStr(pos.left));
}



Bu da parametre olarak verilen iajın ekran üzerinde hangi koordinatta olduğunu bulabileceğiniz kod.
"ImageSearchDLL.dll" isimli internette bulabileceğiniz bir dll kullanır.  Oyunlar için yazılan botların bazıları bu DLL'i kullanır.

Delphi'ye rahatlıkla uyarlanabilir.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: peko - 05 Haziran 2015, 09:25:36

Limit:
Alıntı YapFakat bunlar asla internetten indirilen uygulama olamaz.


Alıntı YapBu da parametre olarak verilen iajın ekran üzerinde hangi koordinatta olduğunu bulabileceğiniz kod.
"ImageSearchDLL.dll" isimli internette bulabileceğiniz bir dll kullanır.  Oyunlar için yazılan botların bazıları bu DLL'i kullanır.

@Klein
Sanırım bazı noktaları gözden kaçırıyoruz.

1- "İnternet'ten indirilien x bir şey olamaz" gibi bir limitation söz konusu.
2- Koordinatları bulunması için verilen bir imaj yok.

Benim anladığım :
Tüm masaüstünü kaplayan büyüklükte bir dashboard'u izliyoruz. Her köşede farklı göstergeler/değerler var.
Her şey yolunda gidiyor.. x sn'de bir biz bu ekranın tamamının fotoğrafını çekiyoruz. Imaj'ı o anda biz oluşturuyoruz.
Normalde yapılması gereken 2 imaj alıp x,y koordinatlarında  pixel alanında bir değişiklik var mı kontrol etmek. Ama burda istenilen o hassasiyet/çözünürlük değil.
Sadece 2 imajın birbirinden farkı olup olmadığı basitliği.
Verdiğim kodu çalıştırıp beklediğinde ekranda sağ alt köşedeki saat'in dakikası değiştiğinde bile hemen alarm üretecek.
Alarm farkının ne olduğu ile ilgili log kayıtlarına da kaydedilen imajdan kontrol edebileceksin.

Hareket farkettiğinde kayıt yapmaya başlamasını istediğin bir kamera'ya bile uygulabilirsin mesela..
Veya 2 resim değil, x sayıda resmin birbirine göre oranlarını bile hesaplatabilirsin çok basit bir şekilde.

Core bir kod yani..

Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: z - 08 Haziran 2015, 01:42:29
Şimdilik sadece buton tıklamayı yaptım bu bile büyük rahatlık oldu. En azından diğer masaya geçmeme gerek kalmadı.


implementation

function SetCursorPos(X,Y:integer):boolean ; stdcall; external 'user32.dll';


{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
      if fileexists('BuloParam.txt') then
        begin
          memo1.lines.LoadFromFile('BuloParam.txt');
          Edit1.Text:=memo1.lines[0];
          Edit2.Text:=memo1.lines[1];
          Edit3.Text:=memo1.lines[2];
        end;

end;

procedure TForm1.Button1Click(Sender: TObject);
var x,y:integer;
begin
      x:=strtoint(Edit1.text);
      y:=strtoint(Edit2.text);
      SetCursorPos(x,y);
      mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
      mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
      if form1.Color=clyellow then form1.color:=clgreen else form1.color:=clyellow;
      Timer1.Interval:=strtoint(Edit3.text)*1000;
      form1.Show;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
     if CheckBox1.Checked=true then Button1Click(Sender);
end;


mesaj birleştirme:: 08 Haziran 2015, 00:08:26

Bu arada;

Yukarıdaki örnekte olduğu gibi parametre dosyasını memo  içine okutup satırları çekip kullanıyorum.

Böyle yapmak yerine doğrudan okunacak dosyanın mesela 3.satırını edit1.text içine  2.satırını edit2.text içine yaz diyebilirmiyiz?
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: engerex - 08 Haziran 2015, 02:32:16
procedure TForm1.FormCreate(Sender: TObject);
var StringList1 : TStringList;
begin
          StringList1 := TStringList.Create;
      if fileexists('BuloParam.txt') then
        begin
          StringList1.LoadFromFile('BuloParam.txt');
          Edit1.Text:=StringList1.Strings[0];
          Edit2.Text:=StringList1.Strings[1];
          Edit3.Text:=StringList1.Strings[2];
        end;
end;
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: z - 04 Ağustos 2015, 02:33:00
Adı geçen programı yazdım ve 1 ayı geçkin zamandır kullanıyorum.

Basılması gereken butonun X,Y Koordinatlarını kutucuklara yazıyorum.

Ekranın fotosunu çekeceğim kısmın x,y koordinatlarını da kutucuklara yazıyorum.

Programım butona basıp ekran fotoğrafını çekiyor. Sonra bir önce çektiği fotoğrafla pixel pixel aynımı diye bakıyor.

Sistem süper çalışıyor Fakat işletim sisteminden kaynaklandığını sandığım bir sorun var.

Fotoğraf bazen 1 pixel kayık çekiliyor.

Yani peş peşe foto çek dediğimde fotolar arasında 1 pixel satır fark oluyor ve sistem alarm veriyor. Alarm susturup tekrar deniyorum. bazen 10 denemeden sonra sistem rayına giriyor ve hep aynı fotoyu çekmeye başlıyor.

Yazdığım kodla alakalı bir şey değil. Ama böyle bir sorun var. İki ayrı PC de denedim. Makineler aynı sadece monitörler farklı. Birinde bu sorun oluyor.

Fotolar tabiki fiziksel anlamda çekilmiyor memoryden bmp imaj kopyası alınıyor.

Neyse buna da alengirli bir karşılaştırma yöntemi ile çözüm getireceğim.


Edit: Makinelerin modelleri de farklıymış.

Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: fatih6761 - 04 Ağustos 2015, 03:53:41
@z hocam ekranı hangi yöntemle fotoğrafladığınızı bilirsek belki yardımcı olabiliriz.
Kayma bana bitmap ve stride sözcüklerini çağrıştırıyor.
Bir de hocam 1 pixel derken sola sağa bir satır veya yukarı aşağı bir sütun mu yoksa sıralı veride 1 pixel kayma mı?
Eğer en sonuncusu gibiyse o 1 pixelin nereden geldiğine bakmak lazım.
Bellekte 0 mı yoksa gerçekten ekrandan gelen bir pixel verisi mi?
Eğer 0 ise bitmap dizine indeksleme ile ilgili bir problem olabilir.
Çok değişkenli bir sorun. Fotoyu nasıl çektiğiniz, onu bellekte nasıl sakladığınız ve en nihayetinde pixelleri nasıl okuduğunuzla ilgili bir durum.
Ama en kötü ihtimal olması gereken ilk pikseli veya pikseller dizisini magic data olarak kullanıp bulunduğu yere göre tüm diziyi ofsetlersiniz.
Mesela atıyorum çektiğiniz pencerede 3. 4. 5. pixelin red değerleri 120, 130, 140 diye değişiyor. Bu seriyi bulana kadar başta tararsınız.
Zaten 1 pixel kayıyorsa çok kısa sürecektir. Kayma miktarını pixel dizisinin indislerine offset olarak eklersiniz.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: z - 04 Ağustos 2015, 03:59:01
Mesela ekrandaki goruntunun ilk 4 satırına ait pixellerin renk değerleri yerine harfler olsun

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

Bu görüntüden 3 pixel yüksekliğinde kopya aldığımı varsay.

1. foto çekimi

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC


2. foto çekimi

BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

oluyor.

Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: fatih6761 - 04 Ağustos 2015, 04:03:59
@z hocam peki bu üstteki AAA... verisi sizin için önemli kısımda mı?
Eğer öyleyse veri kaybediyoruz demektir.
Ama bu AAA.. sorun değilse siz kodu başta BBB arayacak şekilde yapılandırırsınız, her iki durumda da BBB nin başladığı yeri indeks 0 kabul ederek tarama yaparsınız.
Bu oyun programlamacıların çözümüne benzedi (çözemediysen özellik olarak sun, o da olmazsa üstünü kapat)
Pek de mühendis işi değil :)

Hocam eğer fotoyu çekme, saklama ve pixelleri okuma yönteminizden bahsederseniz belki çözüme daha çok yaklaşırız.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: z - 04 Ağustos 2015, 05:23:09

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ImgList, ComCtrls;

type
  TForm1 = class(TForm)
    Tikla: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Memo1: TMemo;
    Edit3: TEdit;
    Label4: TLabel;
    CheckBox1: TCheckBox;
    Timer1: TTimer;
    Label6: TLabel;
    Help: TButton;
    Label7: TLabel;
    Edit4: TEdit;
    Edit5: TEdit;
    Label10: TLabel;
    Label11: TLabel;
    Sustur: TButton;
    Cerceve1: TImage;
    Display: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure TiklaClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure HelpClick(Sender: TObject);
    procedure ScreenShot(Sender: TObject);
    procedure SusturClick(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Edit4Change(Sender: TObject);
    procedure Edit5Change(Sender: TObject);
    procedure Edit3Change(Sender: TObject);
    procedure Sakla();
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Alarm,IlkCalisma,Yasak:boolean;
  Bmp:TCanvas;
  MyRect, MyOther: TRect;

  MyBmp1,MyBmp2:Tbitmap;
  En,Boy,max_x,max_y,CizimRengi,ZeminRengi:integer;

  Win: HWND;
  DC: HDC;

  FileName: string;
  WinRect: TRect;
  Left, Top: Integer;
  H,W:integer;
  zaman:integer;
  Renk:integer;

implementation

function SetCursorPos(X,Y:integer):boolean ; stdcall; external 'user32.dll';

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var x,y:integer;
begin

      Timer1.Interval:=5000;

      if fileexists('BuloParam.txt') then
        begin
          memo1.lines.LoadFromFile('BuloParam.txt');
          Edit1.text:=memo1.lines[0];
          Edit2.text:=memo1.lines[1];
          Edit3.Text:=memo1.lines[2];
          Edit4.Text:=memo1.lines[3];
          Edit5.Text:=memo1.lines[4];
        end;

      IlkCalisma:=true;

      En:=Form1.Cerceve1.Width;
      Boy:=Form1.Cerceve1.Height;

      MyBmp1:=TBitmap.create;
      MyBmp1.Width := Width;
      MyBmp1.Height:= Height;
      MyBmp1.PixelFormat:=pf24bit;
      MyBmp1.Canvas.brush.color:=ZeminRengi;
      MyBmp1.Canvas.pen.color:=CizimRengi;
      MyBmp1.Canvas.FillRect(Rect(0,0,En,Boy));
      MyBmp1.Transparent := false;//True;
      MyBmp1.TransParentColor := clblack;
      MyBmp1.TransparentMode := tmFixed;

      MyBmp2:=TBitmap.create;
      MyBmp2.Width := Width;
      MyBmp2.Height:= Height;
      MyBmp2.PixelFormat:=pf24bit;
      MyBmp2.Canvas.brush.color:=ZeminRengi;
      MyBmp2.Canvas.pen.color:=CizimRengi;
      MyBmp2.Canvas.FillRect(Rect(0,0,En,Boy));
      MyBmp2.Transparent := false;//True;
      MyBmp2.TransParentColor := clblack;
      MyBmp2.TransparentMode := tmFixed;

      Form1.Hide;
      Form1.Show;

end;

procedure boya();
begin

        bitblt(Form1.Cerceve1.Canvas.Handle,0,0,En,Boy, MyBmp1.Canvas.Handle,0,0,srccopy);
        form1.refresh;
end;

procedure TForm1.TiklaClick(Sender: TObject);
var x,y:integer;
begin
        x:=strtoint(Edit1.text);
        y:=strtoint(Edit2.text);
        SetCursorPos(x,y);
        mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
        mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
        ScreenShot(Nil);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin

        Zaman:=Zaman-5;

        Display.Caption:=intTostr(Zaman);

        if Alarm=true then
          begin
            Beep();
          end;

        Display.Refresh;

        if zaman<=0 then
           begin
             Zaman:=strtoint(Edit3.text);
             if Zaman<30 then begin Zaman:=30; Edit3.Text:='30'; end;
             ScreenShot(Sender);
             if CheckBox1.Checked=false then exit;
             if Not Alarm then TiklaClick(Sender);
           end;
end;

procedure TForm1.HelpClick(Sender: TObject);
var s:string;
begin
     S:='Bla bla bla';
     application.MessageBox(Pchar(S),'Dikkat',MB_OK)
end;


procedure TForm1.ScreenShot(Sender: TObject);
label AlarmVer;
var x,y:integer;
begin

        Form1.Hide;
        Win := GetForegroundWindow;
        DC := GetDC(Win);

        x:=strtoint(Edit4.text);
        y:=strtoint(Edit5.text);

//      MyBm1'i MyBmp2'ye taşıyalım

        BitBlt(MyBmp2.Canvas.Handle, 0, 0, En, Boy, MyBmp1.Canvas.Handle, 0, 0, SRCCOPY); // MyBmp2 ye MyBmp1 kopyasını getirdik

//      Ekran görüntüsünü MyBmp1'e alalım

        BitBlt(MyBmp1.Canvas.Handle, 0, 0, En, Boy, DC, x, y, SRCCOPY); // MyBmp1'e ekranın kopyasını getirdik

        ReleaseDC(Win, DC);
        Form1.Show;
        Boya();

        if IlkCalisma=true then
          begin
             BitBlt(MyBmp2.Canvas.Handle, 0, 0, En, Boy, MyBmp1.Canvas.Handle, 0, 0, SRCCOPY); // MyBmp2 ye MyBmp1 kopyasını getirdik
             IlkCalisma:=false;
             Boya();
             exit;
          end;

        for x:=0 to En-1 do
          begin
            for y:=0 to Boy-1 do
              begin
                 if (MyBmp1.Canvas.Pixels[x,y])<>(MyBmp2.Canvas.Pixels[x,y]) then
                   begin
                     Alarm:=True;
                     Form1.color:=Clred;
                     Zaman:=5;
                     Timer1Timer(Nil);
                     exit;
                   end;
              end;
          end;
end;

procedure TForm1.SusturClick(Sender: TObject);
begin
        Alarm:=false;
        IlkCalisma:=true;
        ScreenShot(Sender);
        Form1.color:=clBtnFace;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
        Zaman:=strtoint(Edit3.text);
        if Zaman<30 then begin Zaman:=30; Edit3.Text:='30'; end;
end;

procedure Tform1.Sakla();
begin
          memo1.lines[0]:=Edit1.text;
          memo1.lines[1]:=Edit2.text;
          memo1.lines[2]:=Edit3.text;
          memo1.lines[3]:=Edit4.text;
          memo1.lines[4]:=Edit5.text;
          memo1.lines.SaveToFile('BuloParam.txt');
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
        Sakla();
end;

procedure TForm1.Edit2Change(Sender: TObject);
begin
        Sakla();
end;

procedure TForm1.Edit4Change(Sender: TObject);
begin
        Sakla();
end;

procedure TForm1.Edit5Change(Sender: TObject);
begin
        Sakla();
end;

procedure TForm1.Edit3Change(Sender: TObject);
begin
        Sakla();
end;

end.



mesaj birleştirme:: 04 Ağustos 2015, 03:25:26

Alıntı yapılan: fatih6761 - 04 Ağustos 2015, 04:03:59
@z hocam peki bu üstteki AAA... verisi sizin için önemli kısımda mı?
Eğer öyleyse veri kaybediyoruz demektir.
Ama bu AAA.. sorun değilse siz kodu başta BBB arayacak şekilde yapılandırırsınız, her iki durumda da BBB nin başladığı yeri indeks 0 kabul ederek tarama yaparsınız.
Bu oyun programlamacıların çözümüne benzedi (çözemediysen özellik olarak sun, o da olmazsa üstünü kapat)
Pek de mühendis işi değil :)

Hocam eğer fotoyu çekme, saklama ve pixelleri okuma yönteminizden bahsederseniz belki çözüme daha çok yaklaşırız.

AAAAAA zaten bir pixellik satırın renk bilgileri.

Biraz akıllı karşılaştırma rutini yazarsam hallederim sadece bu 1 pixellik sorun garibime gitti.

Dediğim gibi resim çekiyorum fark var diyip alarm veriyor. Alarmı susturuyorum bir daha resim çek diyorum böyle böyle nihayetinde hatasız aynı resmi çekiyor.
Zaten ondan sonra tanımlanan süre sonunda peryodik olarak resim çekip karşılaştırıyor. Taki ekranda geröekten değişim oluncaya kadar...
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: engerex - 04 Ağustos 2015, 10:20:13
 Acaba kayan pencere mi? Mümkünse ekran görüntüsü ve kaynak kodu proje dosyası halinde paylaşırsan inceleyelim.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: kimlenbu - 04 Ağustos 2015, 11:01:03
Selamlar z hocam,

İşleri basitleştirmek adına bir önerim olacak, eğer veriler textbox'ta tutuluyorsa ekran görüntüsü almak yerine programınız textbox'lara konumlanıp bu değerleri okuyarak size daha ayrıntılı bir rapor verebilir. Textbox'a konumlanıp 3 fare tıklaması, daha sonra ctrl+c sendkey. İstediğiniz veri neymiş, ne olmuş ayrıntılı olarak görebilirsiniz.

Zamanında ogame için yazdığım ilk botta bu yöntemi kullanmıştım. Bunun tek sıkıntısı eğer ekrana bir uyarı, hata mesajı, windows güncellemesi vs çıkarsa işler sarpa sarıyor. Daha sonra getelementbyid ve invoke yöntemleri ile daha düzgün bir hale getirmiştim.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: makdeniz - 04 Ağustos 2015, 15:02:20
Ustam mouse makroları işinize yaramıyor mu ?

(http://img.tamindir.com/ti_e_ul/BarisYanik/p/mouse-macro-recorder_1_689x500.png)

Mouse Macro Recorder 2.6.1 (http://www.tamindir.com/mouse-macro-recorder/)
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: z - 09 Ağustos 2015, 19:46:59
Aşağıdaki iki fonksiyon bazen null dönebiliyormuş. Sorun da bundan kaynaklanıyor.

        Win := GetForegroundWindow;
        DC := GetDC(Win);

satırları yerine

        DC := GetDC (GetDesktopWindow);

yazınca problemim bitti.
Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: z - 09 Ağustos 2015, 22:33:14
Alıntı yapılan: kimlenbu - 04 Ağustos 2015, 11:01:03
Selamlar z hocam,

İşleri basitleştirmek adına bir önerim olacak, eğer veriler textbox'ta tutuluyorsa ekran görüntüsü almak yerine programınız textbox'lara konumlanıp bu değerleri okuyarak size daha ayrıntılı bir rapor verebilir. Textbox'a konumlanıp 3 fare tıklaması, daha sonra ctrl+c sendkey. İstediğiniz veri neymiş, ne olmuş ayrıntılı olarak görebilirsiniz.

Zamanında ogame için yazdığım ilk botta bu yöntemi kullanmıştım. Bunun tek sıkıntısı eğer ekrana bir uyarı, hata mesajı, windows güncellemesi vs çıkarsa işler sarpa sarıyor. Daha sonra getelementbyid ve invoke yöntemleri ile daha düzgün bir hale getirmiştim.

Bu konuyu hep merak etmişimdir.

Ekranda bir program çalışıyor olsun. Mesela Keil.

Keil'in Source kodu yok.

Ben bir program yazayım keil'in bazı butonlarına bassın bazı text boxları okusun. Mükünmü? Nasıl? Çok basit bir örnek verebilirmisiniz?

Başlık: Ynt: USB mouse vs yapmam lazım. (PC yazılımcılarına uyuz oluyorum)
Gönderen: muhittin_kaplan - 10 Ağustos 2015, 20:20:09
Hocam bunun yapılabilmesi için Hedef uygulamanın hWnd numarasının bilinmesi (yada bulunması) buna bağlı olan butonun falanda bilinmesi gerekir. Bunun için çeşitli yöntemler mevcuttur. spy++ ı kullanabilirsiniz.
(http://www.vb-coder.net/b00269-11329.htm (http://www.vb-coder.net/b00269-11329.htm))
(http://www.csharpnedir.com/articles/read/?id=565 (http://www.csharpnedir.com/articles/read/?id=565))

örnek uygulama..
http://www.c-sharpcorner.com/UploadFile/SamTomato/clicking-a-button-in-another-application/ (http://www.c-sharpcorner.com/UploadFile/SamTomato/clicking-a-button-in-another-application/)