Скрытие формы при запуске
От: trick  
Дата: 18.10.04 11:03
Оценка:
Вообщем мне нужно, чтобы приложение сразу же после запуска скрывало главную форму и было видно только в трее, и при этом чтобы его не было видно по Alt-Tab ... прошу прощения если такой вопрос уже задавался
Скрытие формы при запуске
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.10.04 14:16
Оценка: +1
#Имя: FAQ.winforms.tray
Здравствуйте, trick, Вы писали:

T>Вообщем мне нужно, чтобы приложение сразу же после запуска скрывало главную форму и было видно только в трее, и при этом чтобы его не было видно по Alt-Tab ... прошу прощения если такой вопрос уже задавался


Выставляешь у формы следующие свойства:
FormBorderStyle = FormBorderStyle.FixedToolWindow;
ShowInTaskbar = false;
WindowState = FormWindowState.Minimized;

и будет тебе счастье.

Хотя не очень ясно зачем вообще тебе понадобилась форма? Пишеш себе:
static void Main()
{
    NotifyIcon notifyIcon1 = new NotifyIcon();
    notifyIcon1.Icon = здесь грузишь картинку;
    notifyIcon1.Visible = true;

    Application.Run();
}

и все ОК.
... << RSDN@Home 1.1.4 beta 3 rev. 204>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Скрытие формы при запуске
От: orangy Россия
Дата: 18.10.04 14:46
Оценка: +1
Здравствуйте, VladD2, Вы писали:

T>>Вообщем мне нужно, чтобы приложение сразу же после запуска скрывало главную форму и было видно только в трее, и при этом чтобы его не было видно по Alt-Tab ... прошу прощения если такой вопрос уже задавался


VD>Выставляешь у формы следующие свойства:

VD>
VD>FormBorderStyle = FormBorderStyle.FixedToolWindow;
VD>ShowInTaskbar = false;
VD>WindowState = FormWindowState.Minimized;
VD>

VD>и будет тебе счастье.

В некоторых случаях — не будет счастья. При этом не создастся хэндл окна, а значит некоторые вещи работать не будут, например Control.Invoke/BeginInvoke. Я в свое время на этом много времени потерял. Там тоже сплошные глюки в WinForms
... << RSDN@Home 1.1.4 beta 3 rev. 205>>
"Develop with pleasure!"
Re[3]: Скрытие формы при запуске
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.10.04 15:02
Оценка:
Здравствуйте, orangy, Вы писали:

O>В некоторых случаях — не будет счастья. При этом не создастся хэндл окна, а значит некоторые вещи работать не будут, например Control.Invoke/BeginInvoke.


А зачем они нужны в приложении без окон?
... << RSDN@Home 1.1.4 beta 3 rev. 204>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Скрытие формы при запуске
От: trick  
Дата: 18.10.04 15:05
Оценка:

Хотя не очень ясно зачем вообще тебе понадобилась форма? Пишеш себе:

static void Main()
{
    NotifyIcon notifyIcon1 = new NotifyIcon();
    notifyIcon1.Icon = здесь грузишь картинку;
    notifyIcon1.Visible = true;

    Application.Run();
}

млин ... эврика! пасиба ... я новичок в C# ... как то не подумал об этом
Re[4]: Скрытие формы при запуске
От: orangy Россия
Дата: 19.10.04 03:21
Оценка:
Здравствуйте, VladD2, Вы писали:

O>>В некоторых случаях — не будет счастья. При этом не создастся хэндл окна, а значит некоторые вещи работать не будут, например Control.Invoke/BeginInvoke.

VD>А зачем они нужны в приложении без окон?
В данной теме речь не идет о приложении без окон. Речь идет о том, что форма не показывается при старте, а конкретнее — приложение стартует с одной только иконой в system tray. Однако потом вполне себе может показаться. Такие приложения обычно выполняют некую фоновую задачу, а следовательно — наверняка имеют несколько потоков выполнения. Для отображения текущего статуса этого псевдо-сервиса вполне себе может понадобиться Control.Invoke.
... << RSDN@Home 1.1.4 beta 3 rev. 205>>
"Develop with pleasure!"
Re[5]: Скрытие формы при запуске
От: trick  
Дата: 19.10.04 10:34
Оценка:

В данной теме речь не идет о приложении без окон. Речь идет о том, что форма не показывается при старте, а конкретнее — приложение стартует с одной только иконой в system tray. Однако потом вполне себе может показаться. Такие приложения обычно выполняют некую фоновую задачу, а следовательно — наверняка имеют несколько потоков выполнения. Для отображения текущего статуса этого псевдо-сервиса вполне себе может понадобиться Control.Invoke.

ну вообще главной формы у этого приложения может и не быть ... я всетки сделал через
FormBorderStyle = FormBorderStyle.FixedToolWindow;
ShowInTaskbar = false;
WindowState = FormWindowState.Minimized;

проложение просто висит в трее и следит за Vypress Chat ... если повявляется новое сообщение и чат не активен, выводится в каком то углу экрана окошоко с содержимым мессаги и через некоторое время исчезает, если за это время пришло еще одно сообщение, такое же окошко появляется на этим окошком и т.д.
Я уже такое делал на с++, хочу сделать на с#, но т.к. только-только начал в нем работать, то еще просто не знаю где што искать
Например не знаю, как сделать перечисление окон в системе и найти чат, а потом в нем сделать перечисление дочерних окон и найти окошко за которым нужно следать ... плиз подскажите
Re[6]: Скрытие формы при запуске
От: orangy Россия
Дата: 19.10.04 11:25
Оценка:
Здравствуйте, trick, Вы писали:

T>Например не знаю, как сделать перечисление окон в системе и найти чат, а потом в нем сделать перечисление дочерних окон и найти окошко за которым нужно следать ... плиз подскажите

Через pinvoke
Автор: orangy
Дата: 30.08.04
.
... << RSDN@Home 1.1.4 beta 3 rev. 205>>
"Develop with pleasure!"
Re[2]: Скрытие формы при запуске
От: Tony_K  
Дата: 29.07.05 11:34
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, trick, Вы писали:


T>>Вообщем мне нужно, чтобы приложение сразу же после запуска скрывало главную форму и было видно только в трее, и при этом чтобы его не было видно по Alt-Tab ... прошу прощения если такой вопрос уже задавался


VD>Выставляешь у формы следующие свойства:

VD>
VD>FormBorderStyle = FormBorderStyle.FixedToolWindow;
VD>ShowInTaskbar = false;
VD>WindowState = FormWindowState.Minimized;
VD>

VD>и будет тебе счастье.

VD>Хотя не очень ясно зачем вообще тебе понадобилась форма? Пишеш себе:

VD>
VD>static void Main()
VD>{
VD>    NotifyIcon notifyIcon1 = new NotifyIcon();
VD>    notifyIcon1.Icon = здесь грузишь картинку;
VD>    notifyIcon1.Visible = true;

VD>    Application.Run();
VD>}
VD>

VD>и все ОК.

в продолжение темы:

можно ли добиться той же цели, не меняя стией формы?

проблема такая:

в трее висит иконка с контекстным меню, все нормально, но вот как только меняем свойство ShowInTaskbar на фолс, по альттабу вместо иконы приложения отображается какая то хрень

я хочу добиться эффекта как в 2003 аутлуке
Re[2]: Скрытие формы при запуске
От: Аноним  
Дата: 29.07.05 12:48
Оценка:
А зачем вообще так сложно, когда можно сделать свойство главной формы Visible=false. И не надо при этом делать
ShowInTaskbar = false;
WindowState = FormWindowState.Minimized;

И при Alt+Tab как и в Outlook'е не будет отображаться никакой иконки.
ICQ: 326084932


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[3]: Скрытие формы при запуске
От: Tony_K  
Дата: 29.07.05 12:59
Оценка:
Здравствуйте, Niswn, Вы писали:

N>А зачем вообще так сложно, когда можно сделать свойство главной формы Visible=false. И не надо при этом делать
ShowInTaskbar = false;
N>WindowState = FormWindowState.Minimized;
N>

N> И при Alt+Tab как и в Outlook'е не будет отображаться никакой иконки.

N>
данное сообщение получено с www.gotdotnet.ru

N>ссылка на оригинальное сообщение


неправда!

в этом случае форма действительно пропадет из таскбара, но по альттабу она все равно показывается.

а на счет минимайза я вообще не говорил
Re[3]: Скрытие формы при запуске
От: Tony_K  
Дата: 29.07.05 13:13
Оценка:
сорри, все верно

а как сделать чтобы при отображенной форме (visible=true) ее не было видно по альттабу или же пусть виднеется, но с нормальной иконой, а не с умолчательной?
Re[3]: Скрытие формы при запуске
От: Аноним  
Дата: 29.07.05 13:18
Оценка:
Про WindowState = FormWindowState.Minimized говорил VladD2.

А у меня по Alt+Tab форма не показывается (система WinXP, FW1.1). Код загрузки:
 [STAThread]
  static void Main() 
  {
   Form1 fm1= new Form1();
   System.Windows.Forms.NotifyIcon notifyIcon1=new NotifyIcon();
   notifyIcon1.Icon = new Icon("App.ico");
   notifyIcon1.Text = "notifyIcon1";
   notifyIcon1.ContextMenu = fm1.contextMenu1;
   notifyIcon1.Visible = true;
   Application.Run(fm1);
  }

В OnClosing:
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
  {
   e.Cancel=true;
   Visible=false;
  }


Соответственно в контекстном меню на клавише Hide стоит:
Visible=false;

на клавише Show:
this.Show();

на клавише Exit:
Application.Exit();
ICQ: 326084932


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[4]: Скрытие формы при запуске
От: Tony_K  
Дата: 29.07.05 13:43
Оценка:
Здравствуйте, Niswn, Вы писали:

N>Про WindowState = FormWindowState.Minimized говорил VladD2.


N>А у меня по Alt+Tab форма не показывается (система WinXP, FW1.1). Код загрузки:
 [STAThread]
N>  static void Main() 
N>  {
N>   Form1 fm1= new Form1();
N>   System.Windows.Forms.NotifyIcon notifyIcon1=new NotifyIcon();
N>   notifyIcon1.Icon = new Icon("App.ico");
N>   notifyIcon1.Text = "notifyIcon1";
N>   notifyIcon1.ContextMenu = fm1.contextMenu1;
N>   notifyIcon1.Visible = true;
N>   Application.Run(fm1);
N>  }

N>В OnClosing:
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
N>  {
N>   e.Cancel=true;
N>   Visible=false;
N>  }


N> Соответственно в контекстном меню на клавише Hide стоит:
Visible=false;

N>на клавише Show:
this.Show();

N>на клавише Exit:
Application.Exit();
N>


N>
данное сообщение получено с www.gotdotnet.ru

N>ссылка на оригинальное сообщение


да-да-да, сорри еще раз, я просто чегото протупил под конец рабочего дня...

спасибо!
Re[4]: Убирание из alt-tab
От: qxWork Голландия http://www.jetbrains.com/company/people/Coox_Sergey.html
Дата: 01.08.05 16:47
Оценка:
T_K>в этом случае форма действительно пропадет из таскбара, но по альттабу она все равно показывается.

public class MyForm : Form {
    protected override CreateParams CreateParams
    {
      get
      {
        CreateParams createParams = base.CreateParams;
        createParams.ExStyle &= ~Win32Declarations.WS_EX_APPWINDOW; // соответствующая константа
        createParams.ExStyle |= Win32Declarations.WS_EX_TOOLWINDOW; // 
        return createParams;
      }
    }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.