Отправить пользовательский ввод через форму Windows - PullRequest
2 голосов
/ 22 января 2010

Я ищу способ передачи событий мыши через winform без использования Form.TransparencyKey. Если не существует простого способа сделать это, есть ли способ отправить событие мыши в заданный дескриптор окна, используя Win32 API?

Редактировать Под проходом через winform я не имею в виду родительское окно, я имею в виду другие приложения, которые находятся позади моего.

Ответы [ 2 ]

2 голосов
/ 22 января 2010

Это может показаться излишним, так как я видел ответ SLaks ..

Вам понадобится

  1. Дескриптор окна, использующий свойство Handle
  2. Используйте pinvoke на SendMessage Win32API
  3. Одним из параметров SendMessage является WM_LBUTTONDOWN

Вот декларация для SendMessage

[DllImport("user32")] static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);

Вот используемые константы:

public const int WM_LBUTTONDOWN = 0x201;
public const int WM_LBUTTONUP = 0x202;

Типичный вызов:

SendMessage(someWindow.Handle, WM_LBUTTONDOWN, IntPtr.Zero, IntPtr.Zero);
SendMessage(someWindow.Handle, WM_LBUTTONUP, IntPtr.Zero, IntPtr.Zero);

Вызов является примером того, как отправить щелчок левой кнопкой мыши в указанное окно.

Я использовал pinvoke.net для получения правильного API.

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

1 голос
/ 28 января 2010

Ответ на самом деле намного проще, чем я думал. Этот ТАК ответ дал мне, где я должен был быть: Прозрачное окно (или рисование на экране) Нет захвата мыши Также найдено то, что выглядит как реализация C ++, если вы хотите некоторый рабочий код: Прозрачное окно (или рисование на экране) Нет захвата мыши

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...