2011-11-25 15 views
32

मैं माउस को हेरफेर करना चाहता हूं। यह मेरे अपने उद्देश्यों के लिए एक साधारण मैक्रो होगा। तो यह मेरे माउस को स्क्रीन पर कुछ स्थिति में ले जायेगा और क्लिक करें जैसे कि मैं कुछ अंतराल पर क्लिक कर रहा हूं।मैं स्क्रीन पर किसी निश्चित स्थिति पर माउस क्लिक कैसे अनुकरण कर सकता हूं?

+1

क्या [यह] (http://stackoverflow.com/questions/8242409/simulate-mouse-clicks-at-a-certain-position-on-inactive-window-in-c-sharp/8242484#8242484) क्या आपको चाहिए साथ ही, जैसा कि किसी ने टिप्पणी में सुझाव दिया है, आप UIAutomation का उपयोग करना चाह सकते हैं। – Nasreddine

+1

धन्यवाद काम कर रहा है :) – MonsterMMORPG

+1

ठीक से काम नहीं कर रहा है। मैं क्लिक अवधि कैसे सेट कर सकता हूं। 100 एमएस की तरह माउस दबाकर – MonsterMMORPG

उत्तर

43

यहाँ एक कोड है कि अप्रबंधित कार्यों उपयोग कर रहा है माउस क्लिक अनुकरण करने के लिए है::

windows.Forms.Cursor.Position = New System.Drawing.Point(Button1.Location.X + Me.Location.X + 50, Button1.Location.Y + Me.Location.Y + 30) 

क्लिक के लिए, आप नीचे दिए गए कोड का उपयोग कर सकते

//This is a replacement for Cursor.Position in WinForms 
[System.Runtime.InteropServices.DllImport("user32.dll")] 
static extern bool SetCursorPos(int x, int y); 

[System.Runtime.InteropServices.DllImport("user32.dll")] 
public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo); 

public const int MOUSEEVENTF_LEFTDOWN = 0x02; 
public const int MOUSEEVENTF_LEFTUP = 0x04; 

//This simulates a left mouse click 
public static void LeftMouseClick(int xpos, int ypos) 
{ 
    SetCursorPos(xpos, ypos); 
    mouse_event(MOUSEEVENTF_LEFTDOWN, xpos, ypos, 0, 0); 
    mouse_event(MOUSEEVENTF_LEFTUP, xpos, ypos, 0, 0); 
} 

माउस को एक विशिष्ट अवधि के लिए दबाए रखने के लिए आपकर सकते हैंधागा है कि इस समारोह को क्रियान्वित किया जाता है, उदाहरण के लिए:

mouse_event(MOUSEEVENTF_LEFTDOWN, xpos, ypos, 0, 0); 
System.Threading.Thread.Sleep(1000); 
mouse_event(MOUSEEVENTF_LEFTUP, xpos, ypos, 0, 0); 

ऊपर कोड माउस 1 सेकंड के लिए दबाया रखना होगा जब तक कि उपयोगकर्ता विज्ञप्ति माउस बटन दबाता है। साथ ही, यह सुनिश्चित करें कि इस कोड को मुख्य यूआई थ्रेड पर निष्पादित न करें क्योंकि इससे लटका होगा।

+1

पर काम नहीं करेगा, यह मेरे द्वारा यहां देखे गए अन्य समाधानों की तुलना में एफएआर सरल है। धन्यवाद – Yablargo

+0

यह कोड स्क्रीन पर वांछित निर्देशांक में सूचक लाने के लिए ठीक काम करता है लेकिन किसी कारण से क्लिक मेरे लिए काम नहीं करता है। कोई विचार क्यों? – john

+0

यहां आपके पास अन्य माउस बटन के लिए कोड हो सकते हैं: https://msdn.microsoft.com/en-us/library/windows/desktop/ms646260(v=vs.85).aspx – Li3ro

7

आप XY स्थिति से स्थानांतरित कर सकते हैं। उदाहरण नीचे:

using System.Runtime.InteropServices; 

private const UInt32 MOUSEEVENTF_LEFTDOWN = 0x0002; 
private const UInt32 MOUSEEVENTF_LEFTUP = 0x0004; 
[DllImport("user32.dll")] 
    private static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData,    uint dwExtraInf); 
private void btnSet_Click(object sender, EventArgs e) 
    { 
     int x = Convert.ToInt16(txtX.Text);//set x position 
     int y = Convert.ToInt16(txtY.Text);//set y position 
     Cursor.Position = new Point(x, y); 
     mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);//make left button down 
     mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);//make left button up 
    } 

क्रेडिट JOHNYKUTTY को

+1

सवाल WPF पर है, फॉर्म नहीं। – Vlad

+1

काम नहीं करता है: windows.Forms.Cursor.Position = नई प्रणाली। ड्रॉइंग.पॉइंट (बटन 1। स्थान .X + Me.Location.X + 50, बटन 1। स्थान। वाई + मी। स्थान। वाई +30)। मैंने यह भी फॉर्मों पर कोशिश की है जो wpf – MonsterMMORPG

संबंधित मुद्दे