Нужно создать окно для эффекта водяного знака на экране. Вывести его поверх других окон и задать прозрачность получилось, но все события клика мышки уходят в него. Как добиться полной прозрачности окна для системы?
Используйте IntPtr для вашего окна. Например, создайте статический класс для DllImport:
public static class DllImporter
{
const int WS_TRANSPARENT = 0x00000020;
const int GWL_STYLE = (-20);
[DllImport("user32.dll")]
static extern int GetWindowLong(IntPtr hwnd, int index);
[DllImport("user32.dll")]
static extern int SetWindowLong(IntPtr hwnd, int index, int newStyle);
public static void SetWindowTransparent(IntPtr hwnd)
{
var style = GetWindowLong(hwnd, GWL_STYLE);
SetWindowLong(hwnd, GWL_STYLE, extendedStyle | WS_TRANSPARENT);
}
}
И в code-behind вашего прозрачного окна перепишите событие OnSourceInitialized:
protected override void OnSourceInitialized(EventArgs e)
{
base.OnSourceInitialized(e);
var hwnd = new WindowInteropHelper(this).Handle;
DllImporter.SetWindowTransparent(hwnd);
}
После этого ваше окно не будет перехватывать события.
UPD:
Для вашего окна необходимы атрибуты в XAML: WindowStyle="None" Topmost="True" AllowsTransparency="True"
Для проверки - полупрозрачное окно с
<Window.Background>
<SolidColorBrush Opacity="0.5" Color="Red"/>
</Window.Background>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Настроил IIS на аутентификацию по смарт-карте по данной статье https://blogjayway
Нужно, чтобы значения из массива всегда выводились в случайном порядкеПробовал array_rand, но эта функция перемешивает только ключи массива