2010-10-18 2 views
0

Вот мой код, как только я вызываю mouse_event (MOUSEEVENTF_LEFTDOWN, x, y, (long) 0, (long) 0); Я получаю исключение PInvokeStackImbalance. Кто-нибудь знает, почему?WPF выбрасывает PInvokeStackImbalance при вызове mouse_event

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] 
    public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo); 

    [DllImport("user32.dll")] 
    internal extern static int SetCursorPos(int x, int y); 

    private const long MOUSEEVENTF_LEFTDOWN = 0x02; 
    private const long MOUSEEVENTF_LEFTUP = 0x04; 
    private const long MOUSEEVENTF_RIGHTDOWN = 0x08; 
    private const long MOUSEEVENTF_RIGHTUP = 0x10; 

    public void dragTest() 
    { 
     long x = 400; 
     long y = 400; 

     SetCursorPos((int)x, (int)y); 

     mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, (long)0, (long)0); 

     x += 100; 
     y += 100; 

     SetCursorPos((int)x, (int)y); 
     mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0); 
    } 

ответ

1

параметры события мыши должны быть UINT согласно PInvoke.Netи не долго

[DllImport("user32.dll")] 
static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData, 
    UIntPtr dwExtraInfo); 
Смежные вопросы