C# ile tek tıklamalı makro türevi yazılım yapmak

Varona

Megapat
Katılım
16 Ekim 2016
Mesajlar
431
Çözümler
10
Şöyle basit bir program var, ayarlanan tuşa basılı tuttuğumda fareyi ayarlanan değerde hareket ettirmeye yarayan. Macro türevi de diyebiliriz. Asıl size sormak istediğim şu ki bu program bahsettiğim işlemi yaparken fareyle seri tıklamalar yaparak yapıyor. Ben tek tıklamada yapmasını istiyorum, yani belirlenen tuşa basılı tuttuğum sürece sol tık tuşuna basılı tutarak işlemini yapacak ve tuşu bıraktığım zaman sol tık tuşunu da bırakacak. Aşağıdaki fonksiyonda PRGClass.LeftClickUp(); satırını sildiğimde istediğim oluyor ama ayarlanan tuşu bıraktığımda sol tık tuşu hâlâ basılı kalıyor. Konu hakkında bana yardım edebilir misiniz?

C#:
        private void PollLButton()
        {
            this.shootTimer.Interval = this._shotInterval;
            Keys LKey = Keys.MButton; //Varsayılan tuş mouse orta tuşu
            LKey = PRGFunctions.GetFireKeyFromString(this._LButton);
            short gaks = GetAsyncKeyState(LKey);
            if ((gaks & 0b10000000_00000000) > 0) //tuş basılı tutuluyorsa
            {
                PRGClass.LeftClickDown();
                PRGClass.LeftClickUp();

                this.firingState = true;

            }
            else
            {
                this.firingState = false;
            }
        }

        private void PullDownMouse()
        {

            Keys LKey = PRGFunctions.GetFireKeyFromString(this._LButton);
            short gaks = GetAsyncKeyState(LKey);
            bool fireKeyPressed = (gaks & 0b10000000_00000000) > 0;

            while (this.Activated && this.PerformRecoilCompensation && LKeyPressed)
            {
                PRGClass.MouseMove(this._dy, this._pullDelay);

                LKey = PRGFunctions.GetFireKeyFromString(this._LButton);
                gaks = GetAsyncKeyState(LKey);
                fireKeyPressed = (gaks & 0b10000000_00000000) > 0;
            }

            this.pullDownMouseTimer.Start();
 
Son düzenleyen: Moderatör:
Şöyle basit bir program var, ayarlanan tuşa basılı tuttuğumda fareyi ayarlanan değerde hareket ettirmeye yarayan. Macro türevi de diyebiliriz. Asıl size sormak istediğim şu ki bu program bahsettiğim işlemi yaparken fareyle seri tıklamalar yaparak yapıyor. Ben tek tıklamada yapmasını istiyorum, yani belirlenen tuşa basılı tuttuğum sürece sol tık tuşuna basılı tutarak işlemini yapacak ve tuşu bıraktığım zaman sol tık tuşunu da bırakacak. Aşağıdaki fonksiyonda PRGClass.LeftClickUp(); satırını sildiğimde istediğim oluyor ama ayarlanan tuşu bıraktığımda sol tık tuşu hâlâ basılı kalıyor. Konu hakkında bana yardım edebilir misiniz?

C#:
 private void PollLButton()
 {
 this.shootTimer.Interval = this._shotInterval;
 Keys LKey = Keys.MButton; //Varsayılan tuş mouse orta tuşu.
 LKey = PRGFunctions.GetFireKeyFromString(this._LButton);
 short gaks = GetAsyncKeyState(LKey);
 if ((gaks & 0b10000000_00000000) > 0) //tuş basılı tutuluyorsa.
 {
 PRGClass.LeftClickDown();
 PRGClass.LeftClickUp();

 this.firingState = true;

 }
 else.
 {
 this.firingState = false;
 }
 }

 private void PullDownMouse()
 {

 Keys LKey = PRGFunctions.GetFireKeyFromString(this._LButton);
 short gaks = GetAsyncKeyState(LKey);
 bool fireKeyPressed = (gaks & 0b10000000_00000000) > 0;

 while (this.Activated && this.PerformRecoilCompensation && LKeyPressed)
 {
 PRGClass.MouseMove(this._dy, this._pullDelay);

 LKey = PRGFunctions.GetFireKeyFromString(this._LButton);
 gaks = GetAsyncKeyState(LKey);
 fireKeyPressed = (gaks & 0b10000000_00000000) > 0;
 }

 this.pullDownMouseTimer.Start();

Python'da bu dediğiniz işlevi sadece tek satır kodla yapabiliyorsunuz. Pyautogui kütüphanesi ile yanlış hatırlamıyorsam drag fonksiyonuydu.
 
Bu otomatik algılanıyor. Keylogger falan sanıyor. Fazla takmayın.
Teşekkür ederim bilgilendirdiğiniz için.
Normalde o fonksiyon ile çalışması lazım.
Dediğim gibi verdiğim fonksiyonla seri tıklamalı şekilde çalışıyor. Tuşa basılı tuttuğum sürece sol tık yapıp tuşu bıraktığım zaman da sol tuşu bırakacak şekilde ayarlamak istiyorum ancak hâlâ bir çözüm yolu bulabilmiş değilim.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı