Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2012, 07:02   #1
Tolias
Пользователь
 
Регистрация: 18.08.2010
Сообщений: 41
По умолчанию При щелчке по значку в трее определить активно ли окно

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

        [
DllImport("user32.dll")]
        static 
extern int GetWindowText(int hWndStringBuilder textint count);

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

            
handle GetForegroundWindow();

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
delphi, при щелчке по пустой форме, создается кнопка, при щелчке на кнопку, она становится цветная KaZaaM Помощь студентам 5 15.05.2010 00:48
Текст при щелчке BloodWizard JavaScript, Ajax 6 12.05.2010 21:23
EmbeddedWB. Как вызвать окно сохранения файла при щелчке по ссылке apx_angel Работа с сетью в Delphi 0 22.11.2009 20:38
Вызов DBEdit при двойёном щелчке мышью .Phoenix БД в Delphi 8 26.09.2009 04:35
Своё окно в трее Altera Общие вопросы Delphi 10 02.07.2008 10:17