Предотвратить форму от кражи фокуса - PullRequest
1 голос
/ 10 марта 2009

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

Каков наилучший способ сделать это?

Ответы [ 3 ]

4 голосов
/ 11 марта 2009

Вот что я сделал, чтобы заставить это работать:

Я добавил следующий код в мой файл Form1.vb:

Protected Overloads Overrides ReadOnly Property ShowWithoutActivation() As Boolean  
    Get  
        Return True  
    End Get  
End Property

Но все равно безуспешно.

Затем я снял флажок Включить Application Framework на вкладке Приложение в свойствах проекта.

Успех !!!

1 голос
/ 27 марта 2018

На самом деле ShowWithoutActivation работает и без необходимости отключения фреймворка. Я думал, что моя проблема не работает, пока я не понял, что скрытие основной формы заставляло ее снова фокусироваться на всплывающей форме. Таким образом, отвлекаясь от других моих приложений, с которыми я работал. Если вы сталкиваетесь с подобной ситуацией, используйте непрозрачность вместо скрытия. Просто установите 0, чтобы скрыть форму, и 100, чтобы вернуть ее. Это позволяет функции работать как описано.

0 голосов
/ 10 марта 2009

В приведенном вами примере некоторые константы объявлены вне области действия метода. Вот еще одна версия, которая должна работать для вас:

protected CreateParams CreateParams {
  get {
    CreateParams baseParams = base.CreateParams;
    const int WS_EX_NOACTIVATE = 0x08000000;   
    const int WS_EX_TOOLWINDOW = 0x00000080;    
    baseParams.ExStyle |= (int) (WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW); 
    return baseParams;
  }
}
...

Тебе придется перевести его на VB.Net, хотя ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...