Прозрачное окно приложения для наложения в Windows - PullRequest
5 голосов
/ 29 февраля 2012

Я хочу написать приложение для обработки определенных действий пользователя.

Приложение всегда будет прозрачным и должно быть кликнуто. Итак, окно позади будет видно, и, когда прозрачное приложение щелкает, я смогу щелкнуть окно позади. Только определенные пользовательские действия (например, двойной щелчок) я хочу обработать в своем прозрачном приложении.

Возможно ли этого добиться? Любые рекомендации приветствуются.

Ответы [ 2 ]

3 голосов
/ 29 февраля 2012

Вы можете сделать поддельный щелчок окна из своего приложения:

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

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

private void Form_MouseClick(object sender, MouseEventArgs e)
{
   this.Hide();
   Point p = this.PointToScreen(e.Location);
   mouse_event(MOUSEEVENTF_LEFTDOWN , p.X, p.Y, 0, 0);
   mouse_event(MOUSEEVENTF_LEFTUP, p.X, p.Y, 0, 0);
   this.Show();//since this.opacity = 0; form will never be really visible
}

Теперь двойным щелчком мыши вы можете установить то, что вы хотите.

1 голос
/ 29 февраля 2012

Вы можете сделать прозрачное окно и щелкнуть по нему. Однако это все или ничего. Вы не можете проходить клики, кроме двойного щелчка.

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

На самом деле, если подумать, зачем вообще нужен прозрачный клик через окно?

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