كيفية اختيار برمجيا عنصر قائمة السياق في التطبيق آخر؟

StackOverflow https://stackoverflow.com/questions/827648

سؤال

ويتم كتابة التطبيق الهدف في دلفي (WIN32 لا .NET) وغير مغلقة المصدر.

ويسمى العمل أريد أن استدعاء نسخ، ولكن لا يوجد طريق مختصر لوحة المفاتيح واضح. (السيطرة + إدراج يفعل شيئا خاطئا والسيطرة + C لا يفعل شيئا)

ويمكن أن أجد HWND هدفي واقناعها لفتح قائمة السياق (فإنه يستجيب لWM_RBUTTONDOWN/UP لا WM_CONTEXTMENU). من HWND القائمة يمكنني حتى الحصول على مقبض القائمة عبر MN_GETHMENU والعثور على عنصر القائمة أريد. أنا لا أعرف تفاصيل عن كيفية "اختيار" هذا البند. ولا ينفع أن القائمة هي "غير مشروط"، أي. ليست ملكا HWND، لذلك أنا لا أعرف أي من العديد من النوافذ TPUtilWindow الخفية هو المالك الحقيقي - وإلا لكنت قد يكون مجرد إرساله إلى WM_COMMAND وحتى لا يطفو على السطح القائمة، والتي ستكون الأفضل

وعلى الرغم من أنني متأكد من أنها تسهل جميع أنواع الخارقة، ويفضل عدم ضخ الشفرة في عملية الهدف.

وأجوبة مقبولة في أي لغة.

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

المحلول

ويبدو أن كنت قادرا على إرساله WM_RBUTTONDOWN/UP الرسائل ويستجيب. إذا كان الأمر كذلك، يمكنك أيضا إرسال رسائل WM_KEYDOWN/UP؟ طالما كنت تعرف بنية القائمة وأنها لا تتغير، محاولة قول التطبيق الذي شخص ما تضغط على السهم لأسفل X عدد مرات ثم ضرب ENTER. هذا يبدو وكأنه أبسط حل بالنسبة لي ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top