Программируем Windows 7: Taskbar. Часть 6 – AppId

    Недавно я писал о том, как можно организовать отображение вкладок для дочерних окон нашего приложения. В этом случае нам требовалось отобразить дочерние окна нашего приложения. Для этих целей мы пользовались классом CustomWindowManager.



    Такого же эффекта можно добиться, если мы запустим несколько экземпляров одного и того же нашего приложения. В этом случае Windows 7 определит что это одно и то же приложение и сгруппирует окна в один значок.



    Давайте попробуем разобраться как это работает. В основе всего лежит такое понятие как Application ID. Для каждого окна мы можем задать свой ID. Эту особенность также можно использовать тогда, когда необходимо избежать такого поведения. В этом случае нужно задать различные AppId для каждого такого окна. Сделать это можно используя .NET Interop Sample Library. Для этого необходимо вызвать метод SetAppId.

    private void SetAppIdButton_Click(object sender, EventArgs e)
    {
    WindowsFormsExtensions.SetAppId(this, “SomeAppId”);
    }


    Таким образом, мы можем задать различные AppId для каждого окна и они не будут группироваться.



    Однако, аналогичным образом также возможно сгруппировать несколько окон от разных приложений. Для этого необходимо задать одинаковый AppId для каждого из окон. И в этом случае панель задач Windows 7 сгруппирует эти приложения в один значок. Например, в данном случае я задал одинаковый AppId для разных окон из разных приложений и эти окна оказались сгруппированными в панели задач Windows 7.



    Демонстрационное приложение:
    Taskbar-AppId.zip
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 38

      –40
      MAC наше все.
        +23
        сказал и аж потекло?
          –24
          что значит твое твое предложение?
          +6
          Не совсем понял, к чему это вы?
          С точки зрения программиста, или пользователя?
            –12
            С точки зрение пользователя, почему такую штуку, которую предлагает сделать автор нет по дефолту в винде или что бы была в настройках галочка вот сделать таким образом.
              –5
              Эмм… Какую такую шкуру?
                –14
                По цвету она как у бегемота, серого цвета +)
                  –1
                  Ну в общем да, смотрите чуть ниже.
                  +2
                  Нет, ну вот что я такого сказал? Я действительно _не понимаю_ о какой такой шкуре речь вообще? Почему нужно ставить минус вместо объяснений?
                  Если вы имели в виду скин виндовса — так это стандатный скин из WIndows 7. Что еще могло подразумеваться — я не представляю.
                  В статье вообще речь ни о какой шкуре не идет. О чем вы? Автор рассказал, как разработчик, при желании, может группировать разные окна в одну иконку, или наоборот
                    +2
                    А вы знайте я ни разу никому на хабре не ставил мину ни за коменты ни за карму — так что первый блок сообщение не мне.

                    Ты написал про шкуру, я понял как как шкуру и назвал цвет шкурки винды. Но я писал про штуку.
                      +1
                      Упс… Закидывай тухлыми яйцами — я тупой идиот :) Плюс тебе в карму, чтоб мне со стыда помирать было не так обидно :-\
                  –1
                  дак есть же ) просто это можно дополнительно контролировать… пример — система состоящая из нескольких приложений, группирующая окна в одну пачку. или наоборот, одно приложение открывает кучу проектов и окна каждого проекта собирает в отдельную стопку.
                –10
                Отлично, Среда — день Папы минуса и понижения кармы. Ла-ла-ла. И прочтет кто-то и затрясет его, возжелает истины и влепит минус. И будет с ним добродетель.
                  +8
                  Блять, заткнитись.
              0
              То есть, можно своё приложение засунуть за иконку, скажем, ворда?
                0
                Если, конечно, узнать AppId ворда
                  0
                  А это проблема? Он для всегда статичен, на любом компьютере или может и динамически формироваться?
                    0
                    А вот я не помню. Хотя… Думаю, можно все же
                +2
                Интересная вещица.
                Было бы здорово, если бы подобную группировку можно было делать не только на «программном» уровне, но и на пользовательском. Чтобы пользователь сам мог выбрать какие приложения он хочет сгруппировать… Например, Firefox и IE, Видео- и аудио- плеер… кому как удобнее…
                  0
                  Интересная мысль.
                    0
                    Не проверял, но скорее всего можно повесить хук на создание окна и когда он вызовется (в контексте процесса создавшего окно) поставить AppId используя нативно апи. С вероятностью 99% это сработает, а значит такое софт скоро появится :)
                  0
                  Оффтоп.
                  Возник вопрос, а менять местами значки в таскбаре в семёрке можно?
                    +1
                    хватаешь и перетаскиваешь.
                    • НЛО прилетело и опубликовало эту надпись здесь
                      –11
                      Автор ты задрал конкретно своими писульками. Все что ты написал есть в документации.
                        +3
                        Если так задрал, то почему бы не взять и просто проигнорировать данную статью?
                        Тут огромное кол-во людей, которым это очень даже интересно.
                          –3
                          Им интересно потому, что в скучном офисе нечем заняться. А мне скучно не до такой степени чтобы протирать глазенки одними и теми же статьями, между прочим бессмысленными начиная со второй.

                          А всем похуй. Всем похуй на то что пишет автор, потому что никто это делать не будет, а если бы начал делать, то эти статьи им не пригодились бы, так как в документации все есть и есть так куда больше чем автор пытает описать. Всем похуй на то, что каждый день на главную вылезают одни и те же статьи. Всем похуй на пиар новое венды, потому что она и без того крута как никогда.

                          Хорош постить одно и тоже УГ! Напиши лучше про кодинг виртуального режима в ListView или применение там же интерфейса IComparer, или как он там называется, давно дело было. Было бы куда полезнее, чем слизывать с документации исходный код.
                            +1
                            muse, весь контент в сети можно подвести под ваши слова.
                            вообще, меньше эксперсии и больше отдыха и все будет хорошо.
                              –4
                              А это и есть отдых. Приятно как офисные обитатели сруца из-за комментариев неизвестного лица, о котором они ничего не знают, но считают своим долгом доказать ему свою правоту, и непровоту быдла(читай меня). Это ж фан.
                              Забавно другое, что по ситу вопроса никто не пишет. Даж мнения свое держат при себе. А я же как настоящий дАртаньян пишу от своего, пускай и анонимного, лица. Свое собвственное мнение. Щито статья говно и прочее.
                              Вы меня простите конечно, не видел что вы работает на сами знаете кого, и ваши статьи нельзя воспринимать всерьез. Хотя про пеар я уже писал, но повторюсь, что это лишнее. Распространять безценные(в плане нулевого эквивалента мысли) статьи пошло и не тянет на такого спеца по подставам и хитрым ходам как Microsoft.
                                +1
                                Я работаю на себя, если что.
                                  –2
                                  Ваша статья от этого не выиграла
                                    0
                                    Я на это и не претендовал. :)
                                      –2
                                      А зря. Нет, правда. Очень зря. Нех*й постить ху*ню.
                        0
                        А не подскажешь где можно найти API и примеры для нативного С++?
                          0
                          Знаете, не смотря на то, что для меня Ваши топики абсолютно бесполезны с практической точки зрения (ну не буду я программировать подобные вещи — я ораклоид и юниксоид), я от серии Ваших статей в восторге. Наверное потому что Win7 просто как-то мне сразу понравилась. Вот когда была Win95 она была просто убога в интерфейсе относительно KDE/Gnome & etc, то теперь все ровно наоборот получилось.
                            0
                            А вы знаете что проекты KDE и Gnome были основаны в 1996 и 1997 году соответсвенно?.. т.е. KDE только задумали через год после выхода win95, а первая его версия так вообще в 98 году :) и был подозрительно похож по интерфейсу на win95 :)

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое