powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Клики сквозь форму
25 сообщений из 42, страница 1 из 2
Клики сквозь форму
    #39728880
MrKoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Посоветовали ваш форум, сказали, что здесь есть люди, которые могут помочь в решении следующей задачи.
В моей программе требуется сделать так, чтобы клики проходили сквозь форму. Т.е. есть приложение, при нажатии на кнопку на первом окне открывается второе окно сквозь которое должны проходить клики (например, если за окном ярлык - то клик идет по ярлыку, если мы смотрим фильм и жмем на плеер сквозь то же самое окно - ставится пауза). Т.е. это окно должно быть просто информационным. Оно не должно даже активироваться при клике по нему.

Я пишу код в C#, а сами формы делаю в WPF. Все дело в том, что здесь не обойтись без API, а я в этом абсолютно не шарю. Поэтому очень прошу помочь!
Буду очень благодарен за помощь!
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39728890
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А такое не подойдет?
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<Window x:Class="WpfApp2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp2"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525" Background="Transparent"
        WindowStyle="None" AllowsTransparency="True">

  <Border BorderThickness="2" BorderBrush="Blue">
    <TextBlock Text="BlaBla" FontSize="20" Foreground="Aqua" />
  </Border>


</Window>


правда, тут клики проходят только сквозь прозрачные места - сквозь текст не проходят и IsHitTestVisible=False не помогает
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39728892
MrKoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такое я уже пробовал делать. Суть в том, что на форме будет изображение и клики должны проходить сквозь него в том числе

Я находил вот такой код, но во-первых, это C++, во-вторых, я не понимаю, что в нем и как работает (и должно ли вообще работать)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
public enum GWL
{
    ExStyle = -20
}

public enum WS_EX
{
    Transparent = 0x20,
    Layered = 0x80000
}

public enum LWA
{
    ColorKey = 0x1,
    Alpha = 0x2
}

[DllImport("user32.dll", EntryPoint = "GetWindowLong")]
public static extern int GetWindowLong(IntPtr hWnd, GWL nIndex);

[DllImport("user32.dll", EntryPoint = "SetWindowLong")]
public static extern int SetWindowLong(IntPtr hWnd, GWL nIndex, int dwNewLong);

[DllImport("user32.dll", EntryPoint = "SetLayeredWindowAttributes")]
public static extern bool SetLayeredWindowAttributes(IntPtr hWnd, int crKey, byte alpha, LWA dwFlags);

protected override void OnShown(EventArgs e)
{
    base.OnShown(e);
    int wl = GetWindowLong(this.Handle, GWL.ExStyle);
    wl = wl | 0x80000 | 0x20;
    SetWindowLong(this.Handle, GWL.ExStyle, wl);
    SetLayeredWindowAttributes(this.Handle, 0, 128, LWA.Alpha);
}
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39728894
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProА такое не подойдет?
правда, тут клики проходят только сквозь прозрачные места - сквозь текст не проходят и IsHitTestVisible=False не помогаетЭто я посоветовал сюда обратиться. Автору нужно полностью "сквозное" для кликов. Или чтобы пр приближении к окну курсора, окно исчезало и появлялось когда курсор отдаляется.
Я не знаю такое, вообще, возможно без API ? Ведь распределение событий между приложениями это работа OC и, кажется, выходит за рамки Net.
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39728897
MrKoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Eld Hasp абсолютно прав!)
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39728906
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такое ощущение, что этот сишный код делает то же, что и мой XAML, то есть устанавливает прозрачность окна.
Но дело в том, что содержимое окна в WPF отрисовывается через DirectX, а не через GDI
Прозрачность окна WPF отрабатывает нормально, почему не отрабатывает IsHitTestVisible - непонятно.
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39728907
MrKoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насколько я понял, IsHitTestVisible просто убирает клик по окну. Т.е. если щелкнуть левой кнопкой мыши по окну - клик просто не будет воспринят, но окно все равно будет активировано
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39728914
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrKoderНасколько я понял, IsHitTestVisible просто убирает клик по окну. Т.е. если щелкнуть левой кнопкой мыши по окну - клик просто не будет воспринят, но окно все равно будет активированоНет, у меня как раз клик проходит сквозь окно и активирует то, на что было кликнуто за ним.
Но я про тот же текст. Клик на тексте как раз-таки активирует окно, даже если на текстблоке IsHitTestVisible=False
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39728917
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProНет, у меня как раз клик проходит сквозь окно и активирует то, на что было кликнуто за ним.По моему дело в прозрачности. Если окно прозрачно то клик проходит не зависимо от установок IsHitTestVisible. Это ещё, если правильно помню, появилось в WinXP - так делали окна не прямоугольной формы. Shocker.ProНо я про тот же текст. Клик на тексте как раз-таки активирует окно, даже если на текстблоке IsHitTestVisible=FalseIsHitTestVisible - оно по-моему действует только в рамках приложения. Или даже окна.
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39728921
MrKoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, клики сквозь прозрачную форму проходят и без указания этого свойства
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39728924
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrKoder, прочитайте https://stackoverrun.com/ru/q/6061756
Может можно получить координаты курсора на экране и если они близки координатам окна скрыть его.
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39728926
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrKoder, И это тоже посмотрите http://vsokovikov.narod.ru/New_MSDN_API/Cursor/fn_getcursorpos.htm
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39728932
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Haspтак делали окна не прямоугольной формы. там в дырках-вырезах не было ничего.
Вы же хотите сверху нарисовать, а под ним кликнуть то что не видно?
Ничего не понял.
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39728933
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrKoderТ.е. это окно должно быть просто информационным. делают balloonhint привязанный к курсору.
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39728937
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123там в дырках-вырезах не было ничего.
Вы же хотите сверху нарисовать, а под ним кликнуть то что не видно?
Ничего не понял.Да, я и пишу о прозрачных областях в которых ничего нет. Такое возможно.
Но автору нужно "сквозной" клик через непрозрачную или полупрозрачную область.
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39728944
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspНо автору нужно "сквозной" клик через непрозрачную или полупрозрачную область.
так и представил, иконку 64 на 64 и при клике "на ней\ под ней" запустился почтовый клиент с зависанием на 5 минут))
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39728954
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Eld HaspНо автору нужно "сквозной" клик через непрозрачную или полупрозрачную область.
так и представил, иконку 64 на 64 и при клике "на ней\ под ней" запустился почтовый клиент с зависанием на 5 минут))Как я понял из разъяснений автора, он делает какое-то информационное окошко которое нужно во время какой-то игры. А так как оно заслоняет поле игры, то надо чтобы клики через него попадали в окно игры.
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39728992
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp,
В играх окна рукописные и могут не иметь хэндла.
Т.е.игра рисуется слоями на экране.... Сцена.
И такой проблемы автора там не будет.
2. В играх уже есть движок с окнами. Без движка как то странно.
3. В играх специфика. На ресурс https://gamedev.ru/forum/
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39729002
MrKoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я делаю, пот сути, оверлей, плагин для игр. Это будет просто прицел по центру экрана (в виде точки, крестика, треугольника и т.д.). Он не привязывается к какой-либо конкретной игре
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39729007
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrKoderЯ делаю, пот сути, оверлей, плагин для игр. Это будет просто прицел по центру экрана (в виде точки, крестика, треугольника и т.д.). Он не привязывается к какой-либо конкретной игренельзя было сразу это написать?
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39729010
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrKoder,
Приложение должно выводить для плагинов onPaint событие.
И рисуй там хоть прицел, хоть меридианы координат.
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39729013
MrKoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прицел то будет в виде картинки, а не рисованный пикселями "от руки"
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39729014
MrKoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И вопрос опять же в том, как это реализовать
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39729031
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrKoderПрицел то будет в виде картинки, а не рисованный пикселями "от руки"в смысле?
В onPaint ты копируешь картинку на Canvas, сохраняя прозрачность.
Что не так?
...
Рейтинг: 0 / 0
Клики сквозь форму
    #39729042
MrKoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно, пожалуйста, пример
Я не так давно работаю с c# и wpf, еще не сталкивался с onPaint
...
Рейтинг: 0 / 0
25 сообщений из 42, страница 1 из 2
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Клики сквозь форму
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]