Delphi Sendkey Kullanarak Makro Yapımı

Delphi Sendkey Kullanarak Makro Yapımı

Delphi send key nedir?

Delphi, bir yazılım geliştirme ortamı ve programlama dilidir. “Send key” ise, Delphi veya diğer birçok programlama dilinde kullanılan bir işlevdir. Bu işlev, klavye girişlerini programatik olarak göndermek için kullanılır. Örneğin, bir uygulamanın otomatik olarak belirli bir tuş kombinasyonunu veya tek bir tuş vuruşunu simüle etmek için kullanılabilir.

Makro yapımı ise, genellikle tekrarlayan işlemleri otomatikleştirmek için kullanılan bir yöntemdir. Örneğin, belirli bir dizi işlemi gerçekleştirmek için sık sık aynı tuş kombinasyonlarını kullanmanız gerekiyorsa, bir makro oluşturarak bu işlemleri otomatikleştirebilirsiniz. Bu noktada, “send key” işlevi, makro oluştururken kullanılabilecek önemli bir araçtır. Makro, belirli bir diziyi programatik olarak gerçekleştirmek için bir dizi klavye veya fare girdisi içerebilir ve “send key” işlevi bu girdileri göndermek için kullanılabilir. Bu sayede, kullanıcı tekrarlayan işlemleri manuel olarak yapmak zorunda kalmaz, bunun yerine bu işlemleri otomatikleştirebilir.

Delphi Send Key kullarak mouse tıklama (makro ) programı nasıl yapılır ? 
Elbette, Delphi’de SendInput fonksiyonunu kullanarak bir fare tıklama programı oluşturabiliriz. SendInput fonksiyonu, klavye ve fare girdilerini simüle etmek için kullanılır. Aşağıda basit bir Delphi programı örneği veriyorum:

unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure DoMouseClick(X, Y: Integer);
var
Input: TInput;
begin
// Hazırla
Input.Itype := INPUT_MOUSE;
Input.mi.dx := X * (65536 div Screen.Width); // X koordinatı
Input.mi.dy := Y * (65536 div Screen.Height); // Y koordinatı
Input.mi.mouseData := 0;
Input.mi.dwFlags := MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN or MOUSEEVENTF_LEFTUP; // Sol tıklama
Input.mi.time := 0;
Input.mi.dwExtraInfo := 0;

// Tıklama gönder
SendInput(1, Input, SizeOf(TInput));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
// Mouse’un tıklanacağı koordinatları belirleyin
DoMouseClick(100, 100); // Örneğin (100, 100) koordinatlarında tıklama yapacak
end;

end.

Bu örnekte, DoMouseClick adında bir prosedür tanımlanmıştır. Bu prosedür, belirli bir X ve Y koordinatında fare tıklamasını simüle eder. TForm1.Button1Click olayı, bir düğmeye tıklandığında bu prosedürü çağırır. SendInput fonksiyonu, fare tıklamasını gerçekleştirmek için kullanılır.

Bu kodu bir Delphi projesine ekleyebilir ve formda bir düğme ekleyerek fare tıklamasını tetiklemek için kullanabilirsiniz. Düğmeye tıklandığında belirlediğiniz koordinatlarda fare tıklaması gerçekleşecektir.

Programı biraz daha geliştirecek olursak ;

Koordinatları program içerisinden nasıl bulurum ?

Delphi mouse koordinatlarını nasıl bulurum ?

Ekranın herhangi bir noktasının koordinatlarını bulmanın birkaç yolu vardır. İşte bunlardan bazıları:

  1. Ekran Koordinatları İle Fare İmlecini Kullanmak: Fare imlecinizi belirli bir noktaya getirin ve ekranın üst kısmındaki pencerenin başlığında bulunan x ve y koordinatlarını not alın. Bunu yapmak için, ekranın üst kısmında bulunan pencerenin başlığına gelin ve fareyi istediğiniz noktaya getirdiğinizde pencerenin başlığında görünen x ve y koordinatlarını kaydedin.
  2. Ekran Yakalama Araçları Kullanmak: Birçok işletim sistemi, ekran yakalama araçlarına sahiptir. Bu araçları kullanarak ekranın belirli bir noktasının koordinatlarını görebilirsiniz. Örneğin, Windows’ta “Snipping Tool” gibi bir ekran yakalama aracı kullanabilirsiniz.
  3. Delphi ile Kod Yardımıyla Bulmak: Delphi’de, fare imlecinin mevcut konumunu almak için GetCursorPos fonksiyonunu kullanabilirsiniz. Bu fonksiyon, bir TPoint yapısal türüne fare imlecinin X ve Y koordinatlarını döndürür.

var
MousePos: TPoint;
begin
GetCursorPos(MousePos);
ShowMessage(Format(‘X: %d, Y: %d’, [MousePos.X, MousePos.Y]));
end;

Bu kodu Delphi projenize ekleyebilir ve çalıştırdığınızda fare imlecinin mevcut X ve Y koordinatlarını gösteren bir iletişim kutusu açacaktır. Bu iletişim kutusu, fare imlecinin bulunduğu yeri işaret eder.

Bir konumuzu ve kodlarımı biraz daha geliştirip bunların hepsini tek program içerisinde yapalım..

O zaman şöyle yapalım , uygulamada ilk olarak mouse koordinatını belirleyelim , o koordinatları edit1 ve edit2 olarak 2 texte yazdıralım , sonrasında o koordinatlara tıklama makrosu yapalım.

unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
TForm1 = class(TForm)
ButtonStart: TButton;
ButtonStop: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure ButtonStartClick(Sender: TObject);
procedure ButtonStopClick(Sender: TObject);
private
{ Private declarations }
FIsRunning: Boolean;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure DoMouseClick(X, Y: Integer);
var
Input: TInput;
begin
// Hazırla
Input.Itype := INPUT_MOUSE;
Input.mi.dx := X * (65536 div Screen.Width); // X koordinatı
Input.mi.dy := Y * (65536 div Screen.Height); // Y koordinatı
Input.mi.mouseData := 0;
Input.mi.dwFlags := MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN or MOUSEEVENTF_LEFTUP; // Sol tıklama
Input.mi.time := 0;
Input.mi.dwExtraInfo := 0;

// Tıklama gönder
SendInput(1, Input, SizeOf(TInput));
end;

procedure TForm1.ButtonStartClick(Sender: TObject);
var
MousePos: TPoint;
begin
// Fare imlecinin mevcut konumunu al
GetCursorPos(MousePos);

// Koordinatları Edit1 ve Edit2 alanlarına yazdır
Edit1.Text := IntToStr(MousePos.X);
Edit2.Text := IntToStr(MousePos.Y);

// Makro işlemini başlat
FIsRunning := True;

// Belirtilen koordinatlara tıklama yapmak için özel prosedürü çağır
repeat
if not FIsRunning then Break;
DoMouseClick(MousePos.X, MousePos.Y);
until False;
end;

procedure TForm1.ButtonStopClick(Sender: TObject);
begin
// Makro işlemini durdur
FIsRunning := False;
end;

end.

Bu kod, bir Delphi formunda iki metin düzenleyici (Edit) ve bir düğme (Button) içerir. Düğmeye tıklandığında, fare imlecinin mevcut konumunu alır, bu koordinatları Edit1 ve Edit2 alanlarına yazar ve ardından belirtilen koordinatlara bir fare tıklaması göndermek için DoMouseClick prosedürünü çağırır.

Bu kodu Delphi projesine ekleyebilir ve formdaki düğmeye tıkladığınızda fare imlecinin konumunu alabilir, bu konumu Edit alanlarına yazdırabilir , ardından o koordinatlara bir tıklama gönderebilir ve durdur butonu ile işlemi durdurabilirsiniz.

You may also like...

Bir yanıt yazın