سؤال

هل من الممكن أن يظهر للنظام أنه تم الضغط على مفتاح، على سبيل المثال أحتاج إلى القيام بذلك أ يتم الضغط على المفتاح آلاف المرات، ويستغرق القيام بذلك يدويًا وقتًا طويلاً، وأود أن أكتب شيئًا للقيام بذلك من أجلي، والشيء الوحيد الذي أعرفه جيدًا هو بايثون.

بطريقة أفضل، أحتاج إلى محاكاة الضغط على المفاتيح، أي.لا التقاط الصحافة الرئيسية.

مزيد من المعلومات (حسب الطلب):أستخدم نظام التشغيل Windows XP وأحتاج إلى إرسال المفاتيح إلى تطبيق آخر.

هل كانت مفيدة؟

المحلول

تحميل هذا pywin32 ملحقات.ثم يمكنك القيام بما يلي:

import win32com.client as comclt
wsh= comclt.Dispatch("WScript.Shell")
wsh.AppActivate("Notepad") # select another application
wsh.SendKeys("a") # send the keys you want

ابحث عن وثائق كائن WScript.Shell (أعتقد أنه تم تثبيته افتراضيًا في كافة عمليات تثبيت نظام التشغيل Windows XP).يمكنك البدء هنا, ، ربما.

يحرر: إرسال F11

import win32com.client as comctl
wsh = comctl.Dispatch("WScript.Shell")

# Google Chrome window title
wsh.AppActivate("icanhazip.com")
wsh.SendKeys("{F11}")

نصائح أخرى

يمكنك أيضًا استخدام PyAutoGui لإرسال ضغطات المفاتيح الافتراضية.

وهنا الوثائق: https://pyautogui.readthedocs.org/en/latest/

import pyautogui


pyautogui.press('Any key combination')

يمكنك أيضًا إرسال مفاتيح مثل مفتاح Shift أو مفتاح الإدخال باستخدام:

import pyautogui

pyautogui.press('shift')

يمكن لـ Pyautogui أيضًا إرسال نص مباشر مثل:

import pyautogui

pyautogui.typewrite('any text you want to type')

أما الضغط على المفتاح "A" 1000 مرة فيكون كالتالي:

import pyautogui

for i in range(999):
    pyautogui.press("a")

alt-tab أو المهام الأخرى التي تتطلب الضغط على أكثر من مفتاح في نفس الوقت:

import pyautogui

# Holds down the alt key
pyautogui.keyDown("alt")

# Presses the tab key once
pyautogui.press("tab")

# Lets go of the alt key
pyautogui.keyUp("alt")

AutoHotKey مثالي لهذا النوع من المهام (أتمتة لوحة المفاتيح / إعادة تعيين الخرائط)

البرنامج النصي لإرسال "A" 100 مرة:

Send {A 100}

هذا كل شئ

يحرر:لإرسال المفاتيح إلى تطبيق معين:

WinActivate Word
Send {A 100}

تحقق من هذه الوحدة لوحة المفاتيح مع العديد من الميزات. قم بتثبيته، ربما باستخدام هذا الأمر:

pip3 install keyboard

ثم استخدم هذا الكود:

import keyboard
keyboard.write('A',delay=0)

إذا كنت تريد كتابة "A" عدة مرات، فما عليك سوى استخدام حلقة.
ملحوظة:
سيتم الضغط على المفتاح "A" للنوافذ بأكملها. يعني أن البرنامج النصي قيد التشغيل وانتقلت إلى المتصفح، وسيبدأ البرنامج النصي في الكتابة هناك.

إذا كان نظامك الأساسي هو Windows، فلا أوصي بـ Python في الواقع.بدلا من ذلك، النظر في مفتاح التشغيل السريع.صدقني، أنا أحب لغة بايثون، ولكن في هذه الظروف، يعد برنامج الماكرو هو الأداة المثالية لهذه المهمة.تعد البرمجة النصية لـ Autohotkey مناسبة فقط (في رأيي)، ولكن سهولة محاكاة الإدخال ستوفر لك ساعات لا حصر لها.يمكن أيضًا "تجميع" البرامج النصية لمفتاح التشغيل التلقائي بحيث لا تحتاج إلى مترجم لتشغيل البرنامج النصي.

وأيضًا، إذا كان هذا لشيء ما على الويب، فإنني أوصي به iMacros.إنه مكون إضافي لمتصفح فايرفوكس وبالتالي فهو يتمتع بتكامل أفضل مع مواقع الويب.على سبيل المثال، يمكنك أن تقول "اكتب 1000 'a's بهذا النموذج" بدلاً من "محاكاة النقر بالماوس على (319,400) ثم الضغط على 'a' 1000 مرة".

بالنسبة لنظام التشغيل Linux، لم أتمكن للأسف من العثور على طريقة جيدة لإنشاء وحدات ماكرو للوحة المفاتيح/الماوس بسهولة.

طريقة بديلة لتعيين النافذة المفضلة في المقدمة قبل إرسال حدث الضغط على المفتاح.

hwnd = win32gui.FindWindowEx(0,0,0, "App title")
win32gui.SetForegroundWindow(hwnd)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top