С# - показать форму в других приложениях

Можно ли создать форму, которая всегда остается под другими приложениями?

Поскольку существует следующее свойство:

this.TopMost = true;

но нет такого свойства, как:

this.BottomMost = true;

Каждый раз, когда пользователь нажимает на форму, она не позиционируется на верхнем уровне, как это обычно бывает, а остается ниже других приложений. Однако, когда пользователь нажимает «Показать рабочий стол» или «Win + D», отображается рабочий стол, но с формой сверху.

Форма отображается как своего рода гаджет Windows, но это не гаджет, так как в Windows 10 их сложно активировать.


person Insider Interno    schedule 18.08.2020    source источник
comment
Вероятно, вы можете сделать самый нижний zorder окна SetWindowPos. Однако я думаю, что позволить ему оставаться отображаемым при отображении рабочего стола, может быть, немного сложнее, хотя это может сработать для вас desktop-wind" title="сохранение окна видимым через show desktop wind">stackoverflow.com/questions/10009623/   -  person TheGeneral    schedule 18.08.2020


Ответы (1)


Если форму не нужно показывать постоянно, просто используйте этот код:

       public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.Activated += Form1_Activated;
        this.KeyDown += Form1_KeyDown;
    }

    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.D && e.Control)
        {
            Shell32.ShellClass shell = new Shell32.ShellClass();
            shell.MinimizeAll();
            this.Show();
        }
    }

    private void Form1_Activated(object sender, EventArgs e)
    {
        this.Hide();
    }
}

Однако вам нужно добавить ссылку COM с именем Microsoft Shell Controls And Automation. Также вам нужно будет изменить Form1_KeyDown на что-то из этого: Глобальный захват клавиатуры в приложении C#

person Haverka    schedule 25.08.2020