При Щелчке По Значку В Трее Определить Активно Ли Окно

  • Автор темы Tolias
  • Дата начала
Статус
Закрыто для дальнейших ответов.
T

Tolias

#1
Делаю приложение, которое сворачивается в трей. Хочу сделать, чтобы при одиночном клике по значку в трее окно появлялось на переднем плане (если оно было свернуто или было не на переднем плане), а в противном случае пряталось в трей. На счет первого проблем не возникло, так как легко проверить равно ли Visible == true. А вот со вторым не знаю, как узнать после события щелчка мыши по значку, было ли до этого окно активно или оно было спрятано за окнами. Пробовал на WinAPI писать вот такое для взятия имени активного окна:
<!--shcode--><pre><code class='c#'> [DllImport("user32.dll")]
static extern int GetForegroundWindow();

[DllImport("user32.dll")]
static extern int GetWindowText(int hWnd, StringBuilder text, int count);

private void ShowHideMainWindow()
{
const int nChars = 256;
int handle = 0;
StringBuilder Buff = new StringBuilder(nChars);

handle = GetForegroundWindow();

if (GetWindowText(handle, Buff, nChars) > 0)
{
this.label1.Text = Buff.ToString();
}[/CODE]
но она у меня не работает по той простой причине, что когда происходит щелчек по значку в трее, то уже никакое окно не активно (даже если перед этим оно было активно), из-за чего таким путем узнать не получается.

Прошу помощи, как это сделать. Ведь другие программы это умеют делать (например квип..)

И еще один вопрос: я пересмотрел все события объекта NotifyIcon и пробовал подписываться на такие события: Click, DoubleClick, MouseClick, MouseDoubleClick. Но все эти события реагируют как на левую, так и на правую кнопку мыши. Мне же нужно, чтобы окно пряталось/появлялось только левой кнопкой мыши, а правая остается для контекстного меню. Как реагировать только на левую кнопку?
 

-master-

Well-known member
14.01.2012
616
12
#2
Окно надо не искать а держать ссылку на его в проекте с иконкой.
 
Статус
Закрыто для дальнейших ответов.