क्या किसी अन्य विंडो में प्रोग्रामेटिक रूप से उस स्थान पर माउस को स्थानांतरित किए बिना किसी स्थान पर क्लिक करना संभव है और यहां तक कि यदि विंडो शीर्ष पर नहीं है? मैं किसी स्थान पर माउस क्लिक को अनुकरण करने के लिए किसी अन्य विंडो पर एक प्रकार का संदेश भेजना चाहता हूं।प्रोग्रामेटिक माउस एक और विंडो में क्लिक करें
मैं PostMessage साथ यह पूरा करने की कोशिश की:
private static IntPtr CreateLParam(int LoWord, int HiWord)
{
return (IntPtr)((HiWord << 16) | (LoWord & 0xffff));
}
समस्या यह है कि खिड़की उसके स्थान पर बंद कर दिया जाता है:
PostMessage(WindowHandle, 0x201, IntPtr.Zero, CreateLParam(300,300));
PostMessage(WindowHandle, 0x202, IntPtr.Zero, CreateLParam(300,300));
मैं CreateLParam समारोह इस तरह से बनाया है। मुझे लगता है कि मेरा आवेदन (1,1) समन्वय पर क्लिक करता है। क्या कुछ इस समस्या के साथ मेरी मदद कर सकते हैं?
संपादित करें:
[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("user32.dll")]
public static extern bool PostMessage(IntPtr WindowHandle, int Msg, IntPtr wParam, IntPtr lParam);
और 0x201 और 0x202 WM_LBUTTONDOWN और WM_LBUTTONUP प्राधिकरण हैं: यह PostMessage है।
क्या यह एक और विंडो है जिसे आप नियंत्रित करते हैं? यदि नहीं, तो यह एक बहुत ही अजीब अनुरोध की तरह लगता है। – Tejs
आप किस प्रोग्राम पर क्लिक करने की कोशिश कर रहे हैं? कुछ कार्यक्रम (ज्यादातर गेम) में आप जो करने की कोशिश कर रहे हैं उसे अनदेखा करने के लिए तंत्र हैं और इसे अनदेखा करते हैं। उस मामले में आपका सबसे अच्छा मौका, गेम को सबसे ज्यादा बनाने के लिए WinApi का उपयोग कर रहा है, माउस को ले जाएं, क्लिक करें, माउस को वापस ले जाएं, गेम को पिछले जेड ऑर्डर पर वापस ले जाएं। – SimpleVar
इसके अलावा, 'HiWord' को' uint' 'करने से पहले '<< 16' – SimpleVar