Вы должны войти, чтобы создавать сообщения и темы.

Как удалить приложение из alt-tab?

Всем вкусняшек!
Подскажите, пожалуйста, как удалить приложение из alt-tab? Если делаю так

this.FormBorderStyle = FormBorderStyle.FixedToolWindow;
this.ShowInTaskbar = false;
this.ShowIcon = false;
this.Hide();

то приложение из списка вызываемого по alt-tab исчезает, но тогда заголовок окна появляется.

Добрый🖐.
Я FormBorderStyle на "SizableToolWindow" меняю и норм, устраивает.

«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Добрый день.

[DllImport("user32.dll")]
private static extern int SetWindowLong(IntPtr window, int index, int value);

[DllImport("user32.dll")]
private static extern int GetWindowLong(IntPtr window, int index);

private const int GWL_EXSTYLE = -20;
private const int WS_EX_TOOLWINDOW = 0x00000080;

public static void HideFromAltTab(IntPtr Handle)
{
    SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle,
        GWL_EXSTYLE) | WS_EX_TOOLWINDOW);
}

И потом вызываете

HideFromAltTab(this.Handle);

 

P.S. Код не проверял. Когда-то наткнулся, добавил в закладки, но до тестов так и не дошло...

Цитата: Adler от 12.08.2021, 17:31
 
[DllImport("user32.dll")]
private static extern int SetWindowLong(IntPtr window, int index, int value);

[DllImport("user32.dll")]
private static extern int GetWindowLong(IntPtr window, int index);

private const int GWL_EXSTYLE = -20;
private const int WS_EX_TOOLWINDOW = 0x00000080;

public static void HideFromAltTab(IntPtr Handle)
{
    SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle,
        GWL_EXSTYLE) | WS_EX_TOOLWINDOW);
}

И потом вызываете СкопированоHideFromAltTab(this.Handle);

P.S. Код не проверял. Когда-то наткнулся, добавил в закладки, но до тестов так и не дошло...

Попробовал. Компилируемся без ошибок, но в альт-таб приложение так и светится(

Цитата: Mikhail от 12.08.2021, 17:28

Добрый🖐.
Я FormBorderStyle на "SizableToolWindow" меняю и норм, устраивает.

А заголовок окна куда в таком случае?

Цитата: Валерий от 12.08.2021, 17:26

то приложение из списка вызываемого по alt-tab исчезает, но тогда заголовок окна появляется.

Не понял, где заголовок окна появляется?

P.S. Проверил, работает.
Похоже этот API эквивалентен Скопированоthis.FormBorderStyle = FormBorderStyle.SizableToolWindow;

Вот часы и у них заголовка окна нет:

Что бы заголовка окна не было, нужно this.FormBorderStyle = FormBorderStyle.None;

this.ShowInTaskbar = false;
this.ShowIcon = false;
this.FormBorderStyle = FormBorderStyle.None;
HideFromAltTab(this.Handle);

На примере пустой формы - тыц.
А если его нужно перетаскивать, то по этому поводу у Хачатура видео есть (возможно по подписке).

Лайкнул Валерий
Валерий

Когда у меня где-то что-то пошло не так. Пойду спать.

Есть еще способ.
Добавить до инициализации, то есть в класс.

protected override CreateParams CreateParams
{
    get
    {
        var Params = base.CreateParams;
        Params.ExStyle |= 0x80;
        return Params;
    }
}

Убрать икноку и из панели задач.

this.ShowIcon = false;
this.ShowInTaskbar = false;

Есть минус небольшой, а мб и плюс, в списке приложений в диспетчере(процессы) тоже становится невидимый, найти можно во вкладке подробнее.

«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн
Цитата: Adler от 12.08.2021, 20:35
 
this.ShowInTaskbar = false;
this.ShowIcon = false;
this.FormBorderStyle = FormBorderStyle.None;
HideFromAltTab(this.Handle);

На примере пустой формы - тыц.
А если его нужно перетаскивать, то по этому поводу у Хачатура видео есть (возможно по подписке).

Выспался немного, переписал заного иииии... Всё взлетело! Благодарю.