Наиболее вероятной причиной того, что это не работает для вас, является тот факт, что используемая вами подпись P / Invoke неверна.Вы указали аргументы как long
, что в .NET представляет 64-битное целое число. Декларация Win32 API имеет аргументы, определенные как DWORD, что представляет 32-разрядные целые числа, что приведет к дисбалансу стека.Измените свою подпись на следующую, и вам повезет больше.
[DllImport("user32.dll")]
public static extern void mouse_event(Int32 dwFlags, Int32 dx, Int32 dy, Int32 cButtons, Int32 dwExtraInfo);
Кроме того, вы должны учитывать точку зрения Кейт, и это также может повлиять на ваши результаты, как только подпись будет исправлена.