logo

كيفية إنشاء الفرس التلقائي بايثون

ما هو الفرس التلقائي؟

النقر التلقائي هو برنامج يتم فيه كتابة بعض البرامج النصية للتعليمات البرمجية، واستنادًا إلى الكود، إذا قام بعض المستخدمين بتحديد مفتاح ما، فسيتم النقر فوق الماوس تلقائيًا. في بايثون، يمكننا إنشاء مشروع نقر تلقائي باستخدام وحدة pynput التي يمكن تثبيتها بواسطة أمر pip.

يمكننا تقسيم رمز النقر التلقائي إلى الخطوات التالية:

1. استيراد الوحدات المطلوبة

سنقوم باستيراد وحدة الوقت والخيط، وسنستورد الزر ووحدة التحكم من وحدة الماوس الفرعية لـ pynput. بنفس الطريقة، سوف نقوم باستيراد وحدات المستمع والرمز المفتاحي من الوحدة الفرعية للوحة المفاتيح الخاصة بـ pynput.

مثال:

 import time import threading from pynput.mouse import Button, Controller from pynput.keyboard import Listener, KeyCode 

2. تهيئة المتغيرات

في هذا القسم، سنقوم بتهيئة أربعة متغيرات مفيدة جدًا لتنفيذ البرنامج.

    ButtonDirection: سيحدد هذا المتغير جانب الزر الذي نريد النقر عليه (الأيمن أو الأيسر أو الأوسط).وقت التأخير: يحدد هذا المتغير الوقت بين نقرتين متتاليتين.startStopButton: يحدد هذا المتغير المفتاح أو الزر الذي سيتم استخدامه لبدء مشروع النقر التلقائي وإيقافه.زر إنهاء: يحدد هذا المتغير الزر الذي سيتم استخدامه لإنهاء البرنامج.

مثال:

 buttonDirection= Button.right delayTime= 0.001 startStopButton = KeyCode(char='s') terminateButton= KeyCode(char='x') 

3. إنشاء الفصل

في هذا القسم، سنقوم بإنشاء فئة تعمل على توسيع فئة مؤشر الترابط للتحقق مما إذا تم تنفيذ النقر بالماوس أم لا.

مثال:

 class ClickTheMouse(threading.Thread): def __init__(self, delayTime, buttonDirection): super(ClickTheMouse, self).__init__() self.delayTime = delayTime self.buttonDirection = buttonDirection self.running = False self.program_running = True 

4. في هذا القسم سوف نحدد بعض الطرق للتحكم في نقرات الفأرة باستخدام المواضيع خارجيا.

مثال:

 def startMouseClick(self): self.running = True def stopMouseClick(self): self.running = False def exitScript(self): self.stopMouseClick() self.program_running = False 

5. في هذا القسم، قمنا بتعريف الطريقة التي سيتم بها تنفيذ التعليمات البرمجية الكاملة باستخدام حلقتين متداخلتين. سيتم إنهاء هذه الحلقات عندما يتم تعيين المتغيرات على خطأ. وإلا فإنهم سيواصلون البرنامج.

مثال:

 def run(self): while self.program_running: while self.running: mouse.click(self.buttonDirection) time.sleep(self.delayTime) time.sleep(0.1) 

6. في هذا القسم، سنقوم بإنشاء موضوع للنقر بالماوس ثم سنبدأ الموضوع.

مثال:

 mouse = Controller() clickThread = ClickTheMouse(delayTime, buttonDirection) clickThread.start() 

7. هذا هو القسم الأخير الذي نحدد فيه وظيفة النقر على لوحة المفاتيح. إذا تم الضغط على أي مفتاح، فسيتم تمريره كوسيطة في هذه الوظيفة والتحقق من حالات مختلفة.

إذا كان هذا هو مفتاح startStop، فسيتم تشغيل البرنامج أو إيقافه. إذا كان هو مفتاح الإنهاء، فسيتم إنهاء البرنامج.

ب زائد شجرة

مثال:

 def on_press(key): if key == startStopButton: if clickThread.running: clickThread.stopMouseclick() else: clickThread.startMouseclick() elif key == terminateButton: clickThread.exitScript() listener.stop() with Listener(on_press=on_press) as listener: listener.join() 

مثال كامل:

 import time import threading from pynput.mouse import Button, Controller from pynput.keyboard import Listener, KeyCode delayTime = 0.001 buttonDirection = Button.right startStopButton = KeyCode(char='s') terminateButton = KeyCode(char='x') class ClickTheMouse(threading.Thread): def __init__(self, delayTime, buttonDirection): super(ClickTheMouse, self).__init__() self.delayTime = delayTime self.buttonDirection = buttonDirection self.running = False self.program_running = True def startMouseclick(self): self.running = True def stopMouseClick(self): self.running = False def exitScript(self): self.stopMouseClick() self.program_running = False def run(self): while self.program_running: while self.running: mouse.click(self.buttonDirection) time.sleep(self.delayTime) time.sleep(0.1) mouse = Controller() clickThread = ClickTheMouse(delayTime, buttonDirection) clickThread.start() def on_press(key): if key == startStopButton: if clickThread.running: clickThread.stopMouseClick() else: clickThread.startMouseclick() elif key == terminateButton: clickThread.exitScript() listener.stop() with Listener(on_press=on_press) as listener: listener.join() 

توضيح:

في الكود أعلاه، قمنا بتهيئة مفتاحي البداية والإيقاف كـ 's' ومفتاح الإنهاء كـ 'x'. عندما نقوم بتشغيل البرنامج النصي python وإذا أدخلنا 's'، فسيتم النقر بزر الماوس الأيمن عليه تلقائيًا، كلما حركنا الماوس على الشاشة، مع تأخير قدره 0.001 ثانية أو ميلي ثانية واحدة.

يمكننا تغيير وظيفة النقر بالماوس في القسم 2، حيث يمكننا استخدام إما Button.left أو Button.center لتغيير اتجاه النقر بالماوس.

إذا أردنا رؤية النقر بالماوس بسهولة، فيمكننا تغيير وقت التأخير إلى أعلى لرؤية النقرة الفعلية. في هذا الكود، عندما لا نحرك مؤشر الماوس على الشاشة، فلن ينقر. سيعمل فقط عندما نحرك المؤشر على الشاشة.