I have an application. If the application is not being used for a certain amount if time, it should hide. When application is hidden and we mouse-over the icon, it should be restored.
How can I do this? Thanks in advance.
I have an application. If the application is not being used for a certain amount if time, it should hide. When application is hidden and we mouse-over the icon, it should be restored.
How can I do this? Thanks in advance.
You have to define a timer in your application that will count the time when mouse is not over the form/window. Then just hide your application.
Download WPF NotifyIcon And handle MouseOver event, that will show Form/Window
EDIT:
If you do not need to minimize application to tray and hide window keeping it on desktop -> use the same algorithm, but do not hide the window, just set transparency to 0% or 10%. When mouse is over - set transparency to 100%.
Like JesseJames said, use a timer to measure the inactive time of the application and hide it after an amount of time. Re-activate it when the mouse is hovered over the NotifyIcon. Here's a sample WindowsForms solution that does the job:
private Timer _timer;
private int _ticks;
public Form1()
{
_timer = new Timer { Interval = 1000, Enabled = true };
_timer.Tick += TimerTick;
Activated += Form1_Activated;
MouseMove += Form1_MouseMove;
//notifyIcon1 is an icon set through the designer
notifyIcon1.MouseMove += NotifyIcon1MouseMove;
}
protected void TimerTick(object sender, EventArgs e)
{
//After 5 seconds the app will be hidden
if (_ticks++ == 5)
{
WindowState = FormWindowState.Minimized;
Hide();
_timer.Stop();
_ticks = 0;
}
}
protected void NotifyIcon1MouseMove(object sender, MouseEventArgs e)
{
WindowState = FormWindowState.Normal;
Show();
_ticks = 0;
_timer.Start();
}
protected void Form1_MouseMove(object sender, MouseEventArgs e)
{
_ticks = 0;
}
Perhaps there might exist a cleaner solution, I don't know, but it gets you on the way. Same principle will go for WPF, only the code will be slightly different. Hope this helps!
To see if the user has made any input you can use a similar approach like this one. To get your application visible again you need a way to get the global mouse and maybe keyboard input, to do this you can use hooks, you can find one solution for that here. And if the hook is triggered it really just depends on what kind of UI you are using, but calling specific hide
or show
methods should be suffice.