طريقة ارسال مدخلات لبرنامج او لعبة او صفحة معينة و ليس لكامل الجهاز

  • Zerious

السلام عليكم

انا مسوي بوت للعبة معينة و ابيه يضغط حبة او يرسل كلام او ينسخ كلام , الكود شغال لكن هذي المدخلات تأثر في كل جهاز , يعني اذا قلت له يلصق كلمة في المحادثة يسويها لكن اذا انا فتحت صفحة ثانية فهو بيسويها في الصفحة الي اخترتها . انا ابيه يسوي في اللعبة او البرنامج او في صفحة معينة ولا يأثر على كل الجهاز , جربت على محاكي الويندوز يضبط لكن مشكلة المحاكي بطيء و يستخدم من مصادر الجهاز.

*البوت ليس من اصل اللعبة البوت خارجي انا مسويه لارسال بعض المدخلات*

هل في طريقة اخليه يشتغل على برنامج معين و استخدم الجهاز بدون مشاكل ولا يزعجني البوت ؟


التعليق السابق

لقيت الحل :

بحثت بنفسي :)

import win32gui,win32con,win32ui,time #المكتبات المستخدمة

#اظهار جميع الصفحات و اسمائهم و الايدي الخاص بهم
def list_widndows(hwnd,ctx):
    if win32gui.IsWindowVisible(hwnd):
        print(hex(hwnd),win32gui.GetWindowText(hwnd))

win32gui.EnumWindows(list_widndows,None) #طباعة جميع النوافذ اسمائها و الايدي الخاص بها في الجهاز

hwnd=win32gui.FindWindow(None,"Untitled - Notepad")#اختيار النافذة الاساسية المحددة
print("this: ",hwnd)
time.sleep(2)#انتظار كم ثانية لتنفيذ المهام

hwndex=win32gui.FindWindowEx(hwnd,None,None,None)# تحديد child من النافذة الاسياسة
print("hwndex: ",hwndex)#معرفة الايدي الخاص بchild

# بعض البرامج يكون لها child لاستقبال المدخلات و ليس النافذة الاسياسية و هذا يأخذ child للارسال المدخلات
#بعض البرامج يتغير العنوان الخاص بها فنطبع رقم child و نستخدمه

win32gui.PostMessage(hwndex,win32con.WM_KEYDOWN,0x44,0)# ضغط حرف D يساوي 0x44 في virtual key code
win32gui.PostMessage(hwndex,win32con.WM_KEYUP,0x44,0)#رفع عن ضغط حرف D

win32gui.PostMessage(1443862,win32con.WM_KEYDOWN,0x44,0)# ضغط حرف D يساوي 0x44 في virtual key code بإستخدام الايدي الخاص بchild
win32gui.PostMessage(1443862,win32con.WM_KEYUP,0x44,0)#رفع عن ضغط حرف D