كيفية اختيار برمجيا عنصر قائمة السياق في التطبيق آخر؟
-
06-07-2019 - |
سؤال
ويتم كتابة التطبيق الهدف في دلفي (WIN32 لا .NET) وغير مغلقة المصدر.
ويسمى العمل أريد أن استدعاء نسخ، ولكن لا يوجد طريق مختصر لوحة المفاتيح واضح. (السيطرة + إدراج يفعل شيئا خاطئا والسيطرة + C لا يفعل شيئا)
ويمكن أن أجد HWND
هدفي واقناعها لفتح قائمة السياق (فإنه يستجيب لWM_RBUTTONDOWN/UP
لا WM_CONTEXTMENU
). من HWND
القائمة يمكنني حتى الحصول على مقبض القائمة عبر MN_GETHMENU
والعثور على عنصر القائمة أريد. أنا لا أعرف تفاصيل عن كيفية "اختيار" هذا البند. ولا ينفع أن القائمة هي "غير مشروط"، أي. ليست ملكا HWND
، لذلك أنا لا أعرف أي من العديد من النوافذ TPUtilWindow
الخفية هو المالك الحقيقي - وإلا لكنت قد يكون مجرد إرساله إلى WM_COMMAND
وحتى لا يطفو على السطح القائمة، والتي ستكون الأفضل
وعلى الرغم من أنني متأكد من أنها تسهل جميع أنواع الخارقة، ويفضل عدم ضخ الشفرة في عملية الهدف.
وأجوبة مقبولة في أي لغة.
المحلول
ويبدو أن كنت قادرا على إرساله WM_RBUTTONDOWN/UP
الرسائل ويستجيب. إذا كان الأمر كذلك، يمكنك أيضا إرسال رسائل WM_KEYDOWN/UP
؟ طالما كنت تعرف بنية القائمة وأنها لا تتغير، محاولة قول التطبيق الذي شخص ما تضغط على السهم لأسفل X عدد مرات ثم ضرب ENTER. هذا يبدو وكأنه أبسط حل بالنسبة لي ...