{"id":1739,"date":"2022-01-04T17:37:00","date_gmt":"2022-01-04T16:37:00","guid":{"rendered":"http:\/\/www.daniel.slask.pl\/?p=1739"},"modified":"2021-12-31T18:33:31","modified_gmt":"2021-12-31T17:33:31","slug":"minimalizacja-do-tray-z-usunieciem-ikony-z-paska-zadan","status":"publish","type":"post","link":"https:\/\/daniel.slask.pl\/m\/minimalizacja-do-tray-z-usunieciem-ikony-z-paska-zadan\/","title":{"rendered":"Minimalizacja do Tray, z usuni\u0119ciem ikony z paska zada\u0144."},"content":{"rendered":"\n<p class=\"has-text-align-justify\">Cz\u0119\u015b\u0107 program\u00f3w, kt\u00f3re napiszemy b\u0119dzie dzia\u0142a\u0142 w tle, wi\u0119c czasem niepo\u017c\u0105dane b\u0119dzie &#8222;za\u015bmiecanie&#8221; paska zada\u0144 dodatkowymi ikonkami program\u00f3w, kt\u00f3re ma\u0142o kiedy b\u0119d\u0105 musia\u0142y by\u0107 aktywne. Dlatego tym razem przedstawi\u0119 jak zminimalizowa\u0107 program do tray&#8217;a z usuni\u0119ciem go z paska zada\u0144.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Przedstawiony spos\u00f3b na minimalizacj\u0119 do tray&#8217;a z usuni\u0119ciem ikony z paska zada\u0144 jest przedstawiony na przyk\u0142adzie autorskiego programu <a href=\"http:\/\/www.daniel.slask.pl\/com-finder\/\" data-type=\"post\" data-id=\"1697\">COM detect<\/a>, dlatego niekt\u00f3re odniesienia, oraz zmienne dotycz\u0105 tego programu. <br>Prosz\u0119 r\u00f3wnie\u017c o zapoznanie si\u0119 z wpisem dotycz\u0105cym <a href=\"http:\/\/www.daniel.slask.pl\/wyskakujace-powiadomienia-w-aplikacji-w-visual-c\/\" data-type=\"post\" data-id=\"1729\">powiadomie\u0144<\/a>, gdy\u017c informacje kt\u00f3re s\u0105 tam zawarte s\u0105 konieczne do dzia\u0142ania przedstawionego tutaj kodu.<\/p>\n\n\n\n<p>Przed dodaniem kodu, kt\u00f3ry b\u0119dzie powodowa\u0142 minimalizowanie programu z usuni\u0119ciem go z paska zada\u0144, nale\u017cy najpierw doda\u0107 przycisk, kt\u00f3ry b\u0119dzie powodowa\u0142 przywr\u00f3cenie naszego programu &#8211; bo bez tego jedynym sposobem b\u0119dzie zako\u0144czenie procesu z poziomu mened\u017cera zada\u0144. Zrobimy to w ten spos\u00f3b, \u017ce po klikni\u0119ciu prawym klawiszem myszy na ikonk\u0119 kt\u00f3ra znajduje si\u0119 ju\u017c w trayu (pojawia si\u0119 ona przy okazji tworzenia powiadomie\u0144 &#8211; jak to zrobi\u0107, opisane jest w tym <a href=\"http:\/\/www.daniel.slask.pl\/wyskakujace-powiadomienia-w-aplikacji-w-visual-c\/\" data-type=\"post\" data-id=\"1729\">wpisie<\/a>) pojawia si\u0119 rozwijane menu. W pierwszej kolejno\u015bci z przybornika w kategorii <em>Menu i paski narz\u0119dzi <\/em>szukamy i przenosimy do naszej formatki <em>ContextMenuStrip<\/em>. Na formatce pojawia si\u0119 rozwijane menu, w kt\u00f3rym dodajemy dwa przyciski &#8211; <strong>Przywr\u00f3\u0107<\/strong>, oraz <strong>Zamknij<\/strong>. Dzi\u0119ki temu, opr\u00f3cz przywr\u00f3cenia programu, b\u0119dziemy mogli je dodatkowo zamkn\u0105\u0107. <\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-4 wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/notyfikacje_contextmenustrip.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"293\" height=\"153\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/notyfikacje_contextmenustrip.jpg\" alt=\"\" data-id=\"1741\" data-full-url=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/notyfikacje_contextmenustrip.jpg\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1741\" class=\"wp-image-1741\"\/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/notyfikacje_menustrip.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"229\" height=\"137\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/notyfikacje_menustrip.jpg\" alt=\"\" data-id=\"1742\" data-full-url=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/notyfikacje_menustrip.jpg\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1742\" class=\"wp-image-1742\"\/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/minimalizacja_menu.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"173\" height=\"93\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/minimalizacja_menu.jpg\" alt=\"\" data-id=\"1743\" data-full-url=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/minimalizacja_menu.jpg\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1743\" class=\"wp-image-1743\"\/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/notyfikacje_wlasciwosci.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"355\" height=\"365\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/notyfikacje_wlasciwosci.jpg\" alt=\"\" data-id=\"1732\" data-full-url=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/notyfikacje_wlasciwosci.jpg\" data-link=\"http:\/\/www.daniel.slask.pl\/wyskakujace-powiadomienia-w-aplikacji-w-visual-c\/notyfikacje_wlasciwosci\/\" class=\"wp-image-1732\" srcset=\"https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/notyfikacje_wlasciwosci.jpg 355w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/notyfikacje_wlasciwosci-292x300.jpg 292w\" sizes=\"(max-width: 355px) 100vw, 355px\" \/><\/a><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p>Klikaj\u0105c dwa razy na zamknij w obs\u0142udze przycisku wpisujemy<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp\">Close();<\/code><\/pre>\n\n\n\n<p class=\"has-text-align-justify\">co spowoduje zamkni\u0119cie programu. We w\u0142a\u015bciwo\u015bciach <a href=\"http:\/\/www.daniel.slask.pl\/wyskakujace-powiadomienia-w-aplikacji-w-visual-c\/\" data-type=\"post\" data-id=\"1729\">notifyIcon<\/a>, nale\u017cy jeszcze doda\u0107 obs\u0142ug\u0119 tego menu &#8211; w kategorii <em>Zachowanie <\/em>w polu <em>ContextMenuStrip <\/em>wybieramy nazw\u0119 naszego menu. Kompilujemy i uruchamiamy program &#8211; sprawdzamy czy dzia\u0142a zamykanie programu z poziomu menu, kt\u00f3re pojawia si\u0119 po wybraniu ikonki w tray&#8217;u.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Aby przywr\u00f3ci\u0107 aplikacj\u0119, nale\u017cy doda\u0107 w obs\u0142udze przycisku <strong><em>Przywr\u00f3\u0107 <\/em><\/strong>poni\u017cszy kod. Dzi\u0119ki temu po klikni\u0119ciu na ten przycisk nasza aplikacja powr\u00f3ci na ekran monitora.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp\">WindowState = FormWindowState.Normal;<\/code><\/pre>\n\n\n\n<p class=\"has-text-align-justify\">Mo\u017cemy ju\u017c sprawdzi\u0107 dzia\u0142anie programu. Po uruchomieniu programu minimalizujemy nasz program, a nast\u0119pnie klikamy prawym klawiszem myszy na ikon\u0119 naszego programu, kt\u00f3ra znajduje si\u0119 w tray&#8217;u i z menu kt\u00f3re si\u0119 pokaza\u0142o wybieramy przywr\u00f3\u0107. Program powinien ponownie pojawi\u0107 si\u0119 na ekranie.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Kolejnym krokiem jest, aby po zminimalizowaniu ikonka w pasku zada\u0144 znika\u0142a, a podczas przywracania aplikacji pojawia\u0142a si\u0119 na nim. W tym celu wykorzystamy zdarzenie dla naszej formatki, kt\u00f3re jest wykonywane w przypadku zmiany wielko\u015bci formatki. Zdarzenie to nazywa si\u0119 <em>LocationChanged <\/em>i znajduje si\u0119 w w\u0142a\u015bciwo\u015bciach g\u0142\u00f3wnej formatki (wybieramy nasz\u0105 formatk\u0119 i szukamy w zdarzeniach nazwy <em>LocationChanged<\/em>). <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp line-numbers\">if (WindowState == FormWindowState.Minimized)\n{\n\tthis.ShowInTaskbar = false;\n}\nelse\n\tthis.ShowInTaskbar = true;<\/code><\/pre>\n\n\n\n<p class=\"has-text-align-justify\">Aby ukry\u0107 ikonk\u0119 w pasku zada\u0144, nale\u017cy podczas minimalizacji zmieni\u0107 jedn\u0105 w\u0142a\u015bciwo\u015b\u0107 naszego programu &#8211; jest to <em>ShowInTaskbar<\/em>. Jak sama nazwa wskazuje, dotyczy ona pokazania jej w pasku zada\u0144. Musimy t\u0105 w\u0142a\u015bciwo\u015b\u0107 ustawi\u0107 na <strong><em>flase <\/em><\/strong>gdy program jest minimalizowany, a na <strong><em>true <\/em><\/strong>gdy jest przywracany. W tym celu gdy jest wywo\u0142ywane zdarzenie zmiany lokalizacji, musimy sprawdzi\u0107 jaka jest pozycja naszego programu, wykorzystuj\u0105c <em>WindowState<\/em>. Sprawdzamy czy jest r\u00f3wna <em>Minimized<\/em>, je\u017celi tak to zmie\u0144 w\u0142a\u015bciwo\u015b\u0107 aplikacji na <em><strong>false<\/strong><\/em>, w przeciwnym razie zmie\u0144 na <strong><em>true<\/em><\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-gallery aligncenter columns-1 wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/notyfikacje_zdarzenie.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"276\" height=\"300\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/notyfikacje_zdarzenie-276x300.jpg\" alt=\"\" data-id=\"1731\" data-full-url=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/notyfikacje_zdarzenie.jpg\" data-link=\"http:\/\/www.daniel.slask.pl\/wyskakujace-powiadomienia-w-aplikacji-w-visual-c\/notyfikacje_zdarzenie\/\" class=\"wp-image-1731\" srcset=\"https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/notyfikacje_zdarzenie-276x300.jpg 276w, https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2021\/12\/notyfikacje_zdarzenie.jpg 361w\" sizes=\"(max-width: 276px) 100vw, 276px\" \/><\/a><figcaption class=\"blocks-gallery-item__caption\">Konfiguracja zdarze\u0144 dla notifyicon<\/figcaption><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p>Dodatkowo mo\u017cna jeszcze doda\u0107 reakcj\u0119 na dwuklik na ikonk\u0119 znajduj\u0105c\u0105 si\u0119 w tray&#8217;u, aby zmienia\u0142a stan ze zminimalizowanej na przeciwn\u0105 naszego programu. Wybieramy wi\u0119c kontrolk\u0119 <em>notifyIcon<\/em>, a nast\u0119pnie w zdarzeniach szukamy akcji <em>DoubleClick<\/em>. Klikamy na ni\u0105 dwukrotnie i w obs\u0142udze tego zdarzenia dodajemy nast\u0119puj\u0105cy kod:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp line-numbers\">if(WindowState == FormWindowState.Minimized)\n{\n\tWindowState = FormWindowState.Normal;\n}\nelse{\n\tWindowState = FormWindowState.Minimized;\n}<\/code><\/pre>\n\n\n\n<p class=\"has-text-align-justify\">Minusem takiego rozwi\u0105zania jest to, \u017ce program w zdarzeniu od zmiany lokalizacji jest wykonywany za ka\u017cdym razem gdy zmienimy jego po\u0142o\u017cenie. <\/p>\n\n\n\n<p>Dzi\u0119ki niemu, po dwu-kliku na ikonce program b\u0119dzie si\u0119 minimalizowa\u0142, b\u0105d\u017a przywraca\u0142.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Mam nadziej\u0119, \u017ce uda\u0142o mi si\u0119 w prosty spos\u00f3b przedstawi\u0107 jak dokona\u0107 minimalizowania do tray z usuni\u0119ciem ikony z Paska zada\u0144. Je\u017celi masz jakie\u015b problemy, b\u0105d\u017a co\u015b jest niejasne, opisz sw\u00f3j problem w komentarzu.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cz\u0119\u015b\u0107 program\u00f3w, kt\u00f3re napiszemy b\u0119dzie dzia\u0142a\u0142 w tle, wi\u0119c czasem niepo\u017c\u0105dane b\u0119dzie &#8222;za\u015bmiecanie&#8221; paska zada\u0144 dodatkowymi ikonkami program\u00f3w, kt\u00f3re ma\u0142o kiedy b\u0119d\u0105 musia\u0142y by\u0107 aktywne. Dlatego tym razem przedstawi\u0119 jak zminimalizowa\u0107 program do tray&#8217;a z usuni\u0119ciem go z paska zada\u0144&#8230;.<br \/><a class=\"read-more-button\" href=\"https:\/\/daniel.slask.pl\/m\/minimalizacja-do-tray-z-usunieciem-ikony-z-paska-zadan\/\">Wi\u0119cej<\/a><\/p>\n","protected":false},"author":1,"featured_media":1349,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[61,8,59],"tags":[230,192,229,191,228,193],"views":220,"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Csh.png","jetpack_shortlink":"https:\/\/wp.me\/pcPgV3-s3","_links":{"self":[{"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/posts\/1739"}],"collection":[{"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/comments?post=1739"}],"version-history":[{"count":6,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/posts\/1739\/revisions"}],"predecessor-version":[{"id":1748,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/posts\/1739\/revisions\/1748"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/media\/1349"}],"wp:attachment":[{"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/media?parent=1739"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/categories?post=1739"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/tags?post=1739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}