WPF выдает PInvokeStackImbalance при вызове mouse_event - PullRequest
0 голосов
/ 19 октября 2010

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

    [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 Ответ

1 голос
/ 19 октября 2010

Параметры события мыши должны быть uint в соответствии с PInvoke.Net и не длинными

[DllImport("user32.dll")]
static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData,
   UIntPtr dwExtraInfo);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...