Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 14.03.2023
Сообщений: 6
1

Как сделать клик сквозь окно

14.03.2023, 10:48. Показов 548. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня есть программка, которая выводит гифку поверх всех окон, как сделать так, чтобы оно пропускало и не реагировало на клики, когда оно неактивно
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2023, 10:48
Ответы с готовыми решениями:

Прозрачное для кликов окно. Клик должен проходить сквозь Форму в Окна других приложений
Привет всем! Необходимо на WindowsForms создать полупрозрачное окно так, чтобы оно было...

Как в compiz сделать так, чтобы окно получало фокус за один клик?
Здравствуйте. ОС Kubuntu 12.04. Стандартный менеджер окон заменен на compiz. На некоторых...

Клик сквозь объект
Объект (текст) должен быть поверх кнопки, но в таком случае клик на кнопку невозможен в некоторой...

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

Fragment пропускает клик сквозь себя
Доброго времени суток!!! Может не совсем корректно ситуацию опишу, но попытаюсь (строго не...

10
Эксперт .NET
11067 / 6984 / 1571
Регистрация: 25.05.2015
Сообщений: 21,060
Записей в блоге: 14
14.03.2023, 11:18 2
Окну с гифкой добавьте атрибут WS_EX_LAYERED
1
0 / 0 / 0
Регистрация: 14.03.2023
Сообщений: 6
14.03.2023, 11:25  [ТС] 3
А его можно присвоить и Form1, и pictureBox1?
0
Эксперт .NET
11067 / 6984 / 1571
Регистрация: 25.05.2015
Сообщений: 21,060
Записей в блоге: 14
14.03.2023, 11:27 4
Окну (форме). Насчёт бокса не уверен. Но прозрачность окна и так должна передаться всем дочерним контролам.

Добавлено через 1 минуту
Стиль WS_EX_LAYERED и отображение контролов формы

Возможно, придётся рисунок выводить самостоятельно...
1
0 / 0 / 0
Регистрация: 14.03.2023
Сообщений: 6
14.03.2023, 11:31  [ТС] 5
Сори, уточню, так я смогу, тыкая по гивке, взаимодействовать с совершенно другим приложением (например открывать ярлыки через гифку)?
0
Эксперт .NET
11067 / 6984 / 1571
Регистрация: 25.05.2015
Сообщений: 21,060
Записей в блоге: 14
14.03.2023, 11:37 6
С этим атрибутом окно будет прозрачно для кликов.
Возможно, контролы на окне сами рисоваться не будут.
0
0 / 0 / 0
Регистрация: 14.03.2023
Сообщений: 6
14.03.2023, 16:10  [ТС] 7
C#
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
using System.Collections.Generic;
using System.Reflection.Metadata;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
 
 
namespace GIFOnScreen
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
 
 
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
            this.FormBorderStyle = FormBorderStyle.None;
            this.AllowTransparency = true;
            this.BackColor = Color.AliceBlue;
            this.TransparencyKey = this.BackColor;
            TopMost = true;
            long style = CreateParams.ExStyle;
            style = Window.WS_EX_LAYERED;
            long style = CreateParams.ExStyle; //тут
            style |= Windows.WS_EX_LAYERED; //и тут
 
 
        }
что то не работает, мб надо что-то еще подключить?
0
Эксперт .NET
11067 / 6984 / 1571
Регистрация: 25.05.2015
Сообщений: 21,060
Записей в блоге: 14
14.03.2023, 16:36 8
Ну вы бы хоть почитали тему по ссылке, а? Каким образом изменение локальной переменной может на что-то повлиять?
Если код не удалось скомпилить, то давайте его выкинем, и так сойдёт........................

Вот ещё: Как сделать прицел?
И вот Альфа прозрачность в Win Form на C#

Проанализируйте и соберите нужный код для себя.
0
0 / 0 / 0
Регистрация: 14.03.2023
Сообщений: 6
14.03.2023, 19:38  [ТС] 9
читал я это
посмотрите пожалуйста первая картинка - окно активно, вторая - нет(в этом случае надо чтобы окно не мешало работать с окном под ним) извиняюсь за беспокойство :
C#
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
using System.Collections.Generic;
using System.Reflection.Metadata;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace GIFOnScreen
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            string curFile = @"./GIF/mainGIF.gif";
            if (File.Exists(curFile))
            {
                pictureBox1.Image = Image.FromFile("./GIF/mainGIF.gif");
            }
            else
            {
                altWay.Visible = true;
            }
            this.AllowTransparency = true;
            this.BackColor = Color.AliceBlue;
            this.TransparencyKey = this.BackColor;
            TopMost = true;
        }
        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                contextMenuStrip1.Show(MousePosition, ToolStripDropDownDirection.Right);
            }
        }
        private void поставитьGIFToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult im = openFileDialog1.ShowDialog();
 
            if (im == DialogResult.OK)
            {
                pictureBox1.Image = null;
                pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
                altWay.Visible = false;
            }
            else
            {
                altWay.Visible = true;
            }
        }
        private void Form1_Activated(object sender, EventArgs e)
        {
            this.FormBorderStyle = FormBorderStyle.Sizable;
        }
        private void Form1_Deactivate(object sender, EventArgs e)
        {
            this.FormBorderStyle = FormBorderStyle.None;
        }
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (pictureBox1.Image != null)
            {
                pictureBox1.Image.Save("./GIF/mainGIF.gif");             
            }
        }      
    }
}
Миниатюры
Как сделать клик сквозь окно   Как сделать клик сквозь окно  
0
0 / 0 / 0
Регистрация: 14.03.2023
Сообщений: 6
14.03.2023, 20:15  [ТС] 10
получилось! но как сделать это же, но только когда окно неактивно?
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;

cp.ExStyle |= 0x80000| 0x20;
return cp;
}
}
0
Эксперт .NET
11067 / 6984 / 1571
Регистрация: 25.05.2015
Сообщений: 21,060
Записей в блоге: 14
14.03.2023, 20:18 11
Создайте 2 экземпляра одного класса окна. Один с этим флагом, другой без.
0
14.03.2023, 20:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.03.2023, 20:18
Помогаю со студенческими работами здесь

Как сделать чтобы персонаж не проходил сквозь объект?
Есть персонаж и tilemap на обоях есть колайдеры, также rigidbody2d на персонаже Body Type...

Как сделать так, чтоб клики не проходили сквозь UI?
Есть проблема большая. У меня есть UP Panel и на ней разные объекты. Когда я кликаю, то клик...

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

Как сделать так, чтобы нажатия проходили сквозь форму
Есть программа, в ней image с изображением (*.PNG) круга.Как сделать так, чтобы нажатия проходили...

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

Как программно сделать клик по кнопке на сайте, чтоб выпало меню? Не получается сделать click(), как обычно
Здравствуйте! Помогите, люди добрые! Не могу понять, куда мне копать. Сделали новый интерфейс на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru