Isletim sisteminde mouse rutinlerine mudahale

Başlatan z, 09 Mart 2014, 13:51:27

fatih6761

Alıntı yapılan: z - 09 Mart 2014, 18:18:51
Benim anlamadigim konu su;

Mouse pozisyonu degistiginde ilk calisacak program sizin yazacaginiz program olamiyormu?

Siz mouse verisini okursunuz, cikarken, okudugunuz x degeri ne olursa olsun bu degeri en son kilitlenen x degeri olarak degistirirsiniz.

Olmuyormu boyle?

Hocam hangi dil ile yazarsanız yazın Mouse verisinin işletim sistemi fonskiyonlarıyla okuyup modifiye ediyorsunuz. Dolayısıyla veriler size gelmeden önce sürücüden geçiyor ve gerekli cursor değişiklikleri yapılıp size bildiriliyor. Hook atmış olsanız da bu böyle. Bunun önüne geçmenin yazılımsal olarak tek yolu sürücü yazmaktır. Windows Driver Kit içinde eğer herhangi bir fareyle ilgili sample var ise modifiye edilebilir.

engerex

 Klavyede keypad mouse yerine kullanılıyor. Shift+Alt+Numlock

Icarus

@z: Hocam sizin işletim sistemi kaç bit ? 32, x64, 64 ?

engerex

 Bu soru geldiğine göre derinlere inilecek. XP olduğuna göre 32 bittir.

Icarus

#34
Yapmak istediğim şey aslında basit, hedef process'in "gerçek" mouse konumu okumasını engellemek. Ufak bir self-relocatable kod parçasını process'e enjekte etmek bunu yapabilir.
Hedef program daima atıyorum "X = Gerçek konum ve Y = 300" okur. Böylece çizdiğiniz çizgiler hep tam doğru olur :)

muhittin_kaplan

#35
bir zamanlar sendinput adında bir api ile çalışmıştım ama uzun zaman oldu.
(istediğim noktaya gönderiyordum)

http://msdn.microsoft.com/en-us/library/ms646310.aspx

mesaj birleştirme:: 09 Mart 2014, 22:24:18

http://msdn.microsoft.com/en-us/library/windows/desktop/ms648394(v=vs.85).aspx

mesaj birleştirme:: 09 Mart 2014, 22:30:08

hocam setcursorpos api si ni kontrol eden bir programcık ile (ki bunu bir klavye kısayolu ile aktif hale gatirirsiniz) yapabilirsiniz

VBA マウスカーソル 位置 指定 で SetCursorPosを使ってみた

kutahyaspor

mesajımın yapılmak istenen ile direkt bağlantısı yok, belki ipucu olur diye yazıyorum. iki monitör bağlı bir bilgisayarda ihtiyaç duyulunca aşağıdaki programı kullanmıştım. program parametreli çalıştırılıyor. farenin çalışacağı alanı belirliyorsunuz dışarıya çıkamıyor. driver yazmaya gerek yok ayni. her defasında komutsatırından çalışmaktansa aynı dizine bat dosyası koyarak çalıştırmıştım.

http://www.softpedia.com/get/Desktop-Enhancements/Other-Desktop-Enhancements/Adjust-Work-Area.shtml


kolay gelsin.

muhterem

#37
Alıntı yapılan: z
Tam yatay yada tam dikey bir cizgi ciziyor olun,  eliniz hafif titrese kursor oynar bazen bu sinir bozucu bir hal alir.
Halbuki X eksenindeki degisimleri yok say secenegi aktif edilirse artik mousu sadece dusey yonde hareket ettirmeniz yeterli olur.

Alıntı yapılan: z
Bu ozellige en cok PaintBrush ve Eagle pcb cizim programinda ihtiyac duyuyorum.

Niçin SHIFT tuşuna basılı tutarak çizim yapmak yerine böyle bir arayışa girdiniz ?

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhterem

Alıntı yapılan: z - 09 Mart 2014, 23:02:04
Eagle ve paintte ise yariyorsa super.

Neredeyse tüm çizim programları tarafından desteklenen bir standart haline gelmiştir ve yatay/dikey dışında 45 derecelik hatta daha küçük açılarda ve yön değiştirerekte kullanabilirsiniz.

engerex

Alıntı yapılan: z - 09 Mart 2014, 23:02:04
Eagle ve paintte ise yariyorsa super.

Bir önceki sayfada paint dahil bir kaç program için bu durumdan bahsetmiştim.

mistek

Alıntı yapılan: muhterem - 09 Mart 2014, 22:40:47
Niçin SHIFT tuşuna basılı tutarak çizim yapmak yerine böyle bir arayışa girdiniz ?

@muhterem şimdiye kadar neden bahsetmediniz bu konudan onca zaman boşuna hizalamaya uğraşmışım.

Çok teşekkürler.
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

z

Paintte denedim hiç yoktan iyiymiş fakat bahsettiğim sorunun çözümü için hâla mouse kitleme şart görünüyor.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Icarus

#43
@z: sanırım yaptım
http://wikisend.com/download/329578/icm.rar
Şuan "mspaint.exe"'i arıyor ve onun processine enjekte oluyor.
Ctrl + F1 = X'i kilitle
Ctrl + F2 = Y'i kilitle
Ctrl + F3 = Serbest
Ctrl + F12 = Çık

Önce Paint.exe'i çalıştır ardından icm.exe'i çalıştır. Eğer sistemin mesajlarını görmek istersen DbgView.exe'i çalıştırıp bakabilirsin.

Eğer sende de normal çalışıyorsa güzel GUI yazarım.
Bir test et.

barisertekin

Windows 8'de çalışmıyor.
Windows 7'de çalıştı. Fırçanın noktasını başarılı bir şekilde kilitliyor doğru ama çizerken o noktayı değil mouse imlecini dikkate alıyor.

Bir bakıma çözüme yaklaşılmış denilebilir. Hangi dil ile yazdınız. Kodları paylaşırsanız yaptığınız yönteme bakmak isterim.