mouse kontrolu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
lodos
Üye
Mesajlar: 28
Kayıt: 29 Ara 2006 10:32

mouse kontrolu

Mesaj gönderen lodos »

konulara baktım ama bulamadım eger gözum kacırmıs ise şimdiden özr diliyorum ve konuya giriyorum

benım amacım delphi ile farenin imlecini verilen kordinatlara yollamak ve sol clik yaptırmak örn

560*120 de bir edit var oraya getirip sol clik yaptırıp kalvyedende programdaki edit1 teki yazıyı yazdırmam mumkun mu ?umarım anlamısınızdır
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

kordinatları ayarlamak kolay.

Kod: Tümünü seç


  Mouse.CursorPosition.X:=560;
  Mouse.CursorPosition.Y:=120;

ile mouse u belirttiğin kordinatlara alırsın. fakat mouse click olayını ben de bilmiyorum. bi ara lazım olmuştu. biraz araştırdım, sanırım windows mesajlarıyla yapılacak fakat tam net birşey bulamadım.

bilen arkadaş varsa paylaşırsa seviniriz
hgunes
Üye
Mesajlar: 27
Kayıt: 01 Nis 2007 03:40
Konum: Çorum

Mesaj gönderen hgunes »

Koordinatları ayarlamanın diğer bir yolu

Kod: Tümünü seç

procedure SetMousePos(x, y: longint) ;
//x ve y form üzerindeki koordinatlar
var pt: TPoint;
begin
   pt := ClientToScreen(point(x, y)) ;
   SetCursorPos(pt.x, pt.y) ;
end;
hgunes
Üye
Mesajlar: 27
Kayıt: 01 Nis 2007 03:40
Konum: Çorum

Mesaj gönderen hgunes »

s.a

İnternette biraz araştırınca çözüme hemen ulaştım. İşte link :
http://delphi.about.com/od/vclusing/a/mouseadvanced.htm

Bu işlem için Mouse_Event() api'si kullanılması gerekiyor. Fareyi hem hareket ettirmek hem de tıklama simulasyonu için gerekiyor. Örnek şöyle :
Form üzerindeki bir butona tıklandığında ikinci bir butona tıklanmış efekti veriyor. Hatta efekt demeyelim tıklamanın kendisi.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject) ;
var
   Pt : TPoint;
begin
   Application.ProcessMessages;
   {Get the point in the center of Button 2}
   Pt.x := Button2.Left + (Button2.Width div 2) ;
   Pt.y := Button2.Top + (Button2.Height div 2) ;
  {Convert Pt to screen coordinates and Mickeys}
   Pt := ClientToScreen(Pt) ;
   Pt.x := Round(Pt.x * (65535 / Screen.Width)) ;
   Pt.y := Round(Pt.y * (65535 / Screen.Height)) ;
  {Simulate the mouse move}
   Mouse_Event(MOUSEEVENTF_ABSOLUTE or
               MOUSEEVENTF_MOVE,
               Pt.x, Pt.y, 0, 0) ;
  {Simulate the left mouse button down}
   Mouse_Event(MOUSEEVENTF_ABSOLUTE or
               MOUSEEVENTF_LEFTDOWN,
               Pt.x, Pt.y, 0, 0) ;;
  {Simulate the left mouse button up}
   Mouse_Event(MOUSEEVENTF_ABSOLUTE or
               MOUSEEVENTF_LEFTUP,
               Pt.x, Pt.y, 0, 0) ;;
end;
Her şey iyi güzel düzgün de çalışıyor ama anlayamadığım bi kaç satır var

Kod: Tümünü seç

   Pt.x := Round(Pt.x * (65535 / Screen.Width)) ;
   Pt.y := Round(Pt.y * (65535 / Screen.Height)) ;
Çözen olursa lütfen paylaşsın.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

koddaki açıklamada
{Convert Pt to screen coordinates and Mickeys}
geçiyor. "Mickeys" nedir acep dedim;
delphi about da açıklama olarak
Mouse coordinates given are in "Mickeys", where their are 65535 "Mickeys" to a screen's width.
denmiş.

google codesearch den de
Return the number of mickeys in each centimeter for the installed mouse
driver.
Number of physical mouse motion units (mickeys) in each centimeter (a constant
based upon the attached mouse device) returned in MickeyCnt, MouHandle is
the mouse device handle from a previous MouOpen call.
çıktı.

anladığım kadarıyla mouse hareketinin birimi gibi bişi

:? :?:
lodos
Üye
Mesajlar: 28
Kayıt: 29 Ara 2006 10:32

Mesaj gönderen lodos »

cok sagolun verdiginiz bilgiler için fakat benim olay şöle bişi

programmda 1button 1 edit olsun

button1 e tıkladıgında bir baska program acıcak ve o programdaki atıuyorum yine 500*120 de bir yer var oraya getirip tıklatıp klavyedende benım programımdaki edit1deki yazıyı yazmasını istiyorum

yani fare benım formda ,işlem yapmıcak baska form a gidicek
hgunes
Üye
Mesajlar: 27
Kayıt: 01 Nis 2007 03:40
Konum: Çorum

Mesaj gönderen hgunes »

s.a

O zaman işin şekli değişti. Bu daha önce forumda defalarca konuşulmuştu. SendKey olayı. Bi göz atın isterseniz.

viewtopic.php?t=1587&highlight=sendkey

1. Önce tuş göndereceğiniz uygulamayı çalışmıyorsa çalıştır
2. SendKey olayı ile istediğin metni edite yazdır.
Cevapla