Отправка событий мыши в другие окна, C # под Win 7 - PullRequest
0 голосов
/ 17 июля 2010

Есть ли способ отправить события мыши в другое окно в Window 7?
Раньше я делал это:
[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);

Но, похоже, это больше не работает в Win7.
Есть идеи ?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 17 июля 2010

Не работает, как?

Одна вещь, которая может иметь значение (это трудно, потому что вы так мало указали), это то, что приложениям без повышенных прав (под UAC) не разрешается взаимодействовать с приложениями с повышенными правами.Поэтому, если одно приложение поднято, а другое нет, вы бы сказали, что оно «не работает».Но вы не можете это исправить, изменив используемый вами API.

2 голосов
/ 24 июля 2010

Наиболее вероятной причиной того, что это не работает для вас, является тот факт, что используемая вами подпись 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);

Кроме того, вы должны учитывать точку зрения Кейт, и это также может повлиять на ваши результаты, как только подпись будет исправлена.

0 голосов
/ 17 июля 2010

SendMessage в user32.dll: поможет .

Возможно, вам также понадобятся FindWindow и WM-константы .

pinvoke.net хорош для такого рода вещей.

...