Programowanie w języku C#

Ukrywanie paska zadań w Windows XP Windows Vista i Windows 7

Cel artykułu


Przedstawiony artykuł odpowiada na pytanie: "Jak ukryć paskek zadań w Windows XP, Windows Vista i Windows 7?"

Ponieważ autor interesuje się zagadnieniem użycia w artykułach na portalu 4programmers.net dwóch języków – polskiego, jako że portal jest polski, i dowolnego innego (w przypadku autora są to język polski i angielski), istnieje też drugie, równie ważne pytanie, na które odpowiada artykuł, tj. "Jak opisać kod programu dwujęzycznie w języku XML?"

Dwujęzyczne dokumentowanie kodu źródłowego


Czy ma sens pisanie o dwujęzycznym dokumentowaniu kodu?

Tak, skoro są kraje gdzie obowiązują dwa języki urzędowe np. Kanada (angielski i francuski). Są kraje gdzie obowiązują dwa alfabety np. Turcja (pismo arabskie i pismo łacińskie).

W nauce programowania, w edukacji w Polsce, zwolennicy pielęgnowania tradycji na Kaszubach, czy na Śląsku, być może chcieliby zastosowania takiej formy zapisu kodu źródłowego na poziomie politechnik i uniwersytetów lokalnych.

Autor często bywa na Kaszubach, gdzie znajdują się dwujęzyczne znaki drogowe z nazwami miejscowości, zapisane po polsku i po kaszubsku, a więc istnieją już wzorce podobnego postępowania, które znalazły realizację.

Szkic autorski, czy standard?


Język C# i język XML są standardami, natomiast ten artykuł prezentuje szkic autorski. Zawarte w kodzie liczne przykłady ropoznawalne po tagach:

<en>, <pl>

mogą stanowić bazę do rozważań nad standardem, a nadzieją autora jest zainteresowanie i dyskusja innych uczestników portalu 4programmers.net, czego owocem mógłby być podobny artykuł, może prezentujący zupełnie inne podejście.

Dlaczego pewne fragmenty kodu nie zostały usunięte?


Chodzi o symulację sytuacji, w której przewiduje się wykorzystanie tych fragmentów w większym projekcie, gdzie temat ukrywania paska zadań jest tylko drobnym elementem składowym, natomiast energia zużyta na zdobycie wiedzy związanej z paskiem zadań, dała dodatkową wiedzę, która będzie wykorzystana na dalszych etapach projektu. Fragmenty związanego z tym kodu nie były na obecnym etapie tłumaczone na polski.

Warte polecenia


bilingualhouse.com, Dziecko dwujęzyczne u logopedy

delphi.lt, Dwujęzyczność w Walii

Kod programu


Moduł Form1.cs

using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using NSTaskbar;
 
namespace NSLan4Avalon
{
    /// <summary>
    /// <en>This solution Single Document Interface (SDI) main form class</en>
    /// <pl>
    /// Klasa okna głównego tego projektu typu Single Document Interface (SDI)
    /// </pl>
    /// </summary>
    public partial class Form1 : Form
    {
        [DllImport("user32.dll")]
        static extern IntPtr GetSystemMenu(
            IntPtr hWnd,
            Boolean bRevert
            );
 
        [DllImport("user32.dll")]
        static extern bool DeleteMenu(
            IntPtr hMenu,
            UInt32 uPosition,
            UInt32 uFlags
            );
 
        /// <see href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms633548(v=vs.85).aspx">
        /// <en>MSDN, ShowWindow function</en>
        /// <pl>MSDN, Funcja "Pokaż okno"</pl>
        /// </see>
        /// <en><!--Not used parts stay not translated--></en>
        /// <pl><!--Fragmenty nie używane pozostają nie przetłumaczone--></pl>
        enum ShowWnd
        {
            /*
            // Minimizes a window, even if the thread that owns the window is
            // not responding. This flag should only be used when minimizing
            // windows from a different thread
            SW_FORCEMINIMIZE = 11,
             */
 
            ///<en>Hides the window and activates another window</en>
            ///<pl>Ukrywa okno i aktywuje inne okno</pl>
            SW_HIDE = 0,
 
            ///<en>Maximizes the specified window</en>
            ///<pl>Maksymalizuje wybrane okno</pl>
            SW_MAXIMIZE = 3,
 
            /// <en>
            /// Minimizes the specified window and activates the next top-level
            /// window in the Z-order.
            /// </en>
            /// <pl>
            /// Minimalizuje wybrane okno i aktywuje następne okno top-level
            /// w porządku Z-order
            /// </pl>
            SW_MINIMIZE = 6,
 
            /// <en>
            /// Activates and displays the window. If the window is minimized or
            /// maximized, the system restores it to its original size and
            /// position. An application should specify this flag when
            /// restoring a minimized window.
            /// </en>
            /// <pl>
            /// Aktywuje i wyświetla okno. Jeżeli okno jest zminimalizowane lub
            /// zmaksymalizowane, system przywraca mu orginalne rozmiary
            /// i pozycję. Aplikacja powinna wskazać tę flagę przy przywracaniu
            /// zminimalizowanego okna
            /// </pl>
            SW_RESTORE = 9,
 
            /// <en>
            /// Activates the window and displays it in its current size and
            /// position.
            /// </en>
            /// <pl>
            /// Aktywuje okno i wyświetla je z jego bieżącymi wymiarami i w
            /// bieżącej pozycji
            /// </pl>
            SW_SHOW = 5 /*,
 
            // Sets the show state based on the SW_ value specified in
            // theSTARTUPINFO structure passed to the CreateProcess function by
            // the program that started the application.
            SW_SHOWDEFAULT = 10,
 
            // Activates the window and displays it as a maximized window.
            SW_SHOWMAXIMIZED = 3,
 
            // Activates the window and displays it as a minimized window.
            SW_SHOWMINIMIZED = 2,
 
            // Displays the window as a minimized window. This value is similar
            // toSW_SHOWMINIMIZED, except the window is not activated.
            SW_SHOWMINNOACTIVE = 7,
 
            // Displays the window in its current size and position.
            // This value is similar to SW_SHOW, except that the window is not
            // activated.
            SW_SHOWNA = 8,
 
            // Displays a window in its most recent size and position.
            // This value is similar to SW_SHOWNORMAL, except that the window is
            // not activated.
            SW_SHOWNOACTIVATE = 4,
 
            // Activates and displays a window. If the window is minimized or
            // maximized, the system restores it to its original size and
            // position. An application should specify this flag when displaying
            // the window for the first time.
            SW_SHOWNORMAL = 1
             */
        }
 
        /// <summary>
        /// <en>System commands</en>
        /// <pl>Polecenia systemowe</pl>
        /// </summary>
        enum SysCmd
        {
            /// <en>Form size changing, here ignored</en>
            /// <pl>Zmiana rozmiarów okna, tutaj ignorowane</pl>
            SC_SIZE = 0xF000,
 
            /// <en>Form moving, here ignored</en>
            /// <pl>Przesuwanie okna, tutaj ignorowane</pl>
            SC_MOVE = 0xF010,
 
            /// <en>Form minimizing to the reshown taskbar</en>
            /// <pl>Minimalizacja okna na ponownie wyświetlony pasek zadań</pl>
            SC_MINIMIZE = 0xF020,
 
            /// <en>Form maximizing, here ignored</en>
            /// <pl>Maksymalizacja okna, tutaj ignorowane</pl>
            SC_MAXIMIZE = 0xF030,
 
            /// <en>
            /// Form restoring to maximum screen size and hiding the taskbar
            /// </en>
            /// <pl>
            /// Przywrócenie okna do maksymalnego rozmiaru ekranu i ukrycie
            /// paska zadań
            /// </pl>
            SC_RESTORE = 0xF120
        }
 
        /// <summary>
        /// <en>Window messages</en>
        /// <pl>Komunikaty windows</pl>
        /// </summary>
        /// <en><!--Not used parts stay not translated--></en>
        /// <pl><!--Fragmenty nie używane pozostają nie przetłumaczone--></pl>
        enum WinMsg
        {
            /*
            // Window cannot be painted if message was sent with appropriate
            // flag equal false, else if flag was equal true one is redrawn
            WM_SETREDRAW = 0x000B,
             */
 
            /// <en>Message sent with flag SysCmd.SW_...</en>
            /// <pl>Komunikat wysyłany z flagą SysCmd.SW_...</pl>
            WM_SHOWWINDOW = 0x0018,
 
            /// <en>
            /// Messages sent by by system buttons (minimize, maximize, restore,
            /// close), and by system menu items
            /// </en>
            /// <pl>
            /// Komunikaty wysyłane przez przyciski systemowe (minimalizuj,
            /// maksymalizuj, przywróć, zamknij) i pozycje menu systemowego okna
            /// </pl>
            WM_SYSCOMMAND = 0x0112
        }
 
        /// <en><!--Not used parts stay not translated--></en>
        /// <pl><!--Fragmenty nie używane pozostają nie przetłumaczone--></pl>
        enum Broadcast //Special windows message
        {
            // Message is sent to all windows, not used here
            // HWND_BROADCAST = 0xFFFF
        }
 
        /// <en>
        /// Bounds of the maximum screen size form when the taskbar is hidden
        /// </en>
        /// <pl>
        /// Wymiary skrajne okna o maksymalnym rozmiarze ekranu kiedy pasek
        /// zadań jest ukryty
        /// </pl>
        Rectangle screenBounds;
 
        /// <en>
        /// Bounds of the work area size form when the taskbar is shown
        /// </en>
        /// <pl>
        /// Wymiary skrajne okna w obszarze roboczym kiedy paskek zadań jest
        /// widoczny
        /// </pl>
        Rectangle workArea;
 
        //Microsoft C# Express 2010: the field is never used
        #pragma warning disable 0169
 
        /// <en><!--Not used here, stay not translated--></en>
        /// <pl><!--Tutaj nie używane, pozostaje nie przetłumaczone--></pl>
        Rectangle insideBounds; // This solution reserved size variable
 
        #pragma warning restore 0169
 
        /// <summary>
        /// <en>Main form constructor</en>
        /// <pl>Konstruktor okna głównego</pl>
        /// </summary>
        public Form1()
        {
            InitializeComponent();
            this.StartPosition = FormStartPosition.Manual;
            this.WindowState = FormWindowState.Normal;
            screenBounds = Screen.PrimaryScreen.Bounds;
            workArea = Screen.GetWorkingArea(this);
            /*
            insideBounds = new Rectangle(0, 0, 1440, 900);
             */
            this.Location = new Point(0, 0);
            this.Size = new Size(workArea.Width, workArea.Height);
            IntPtr sysMenu = GetSystemMenu(this.Handle, false);
            DeleteMenu(sysMenu, (int)SysCmd.SC_MAXIMIZE, 0);
            DeleteMenu(sysMenu, (int)SysCmd.SC_MOVE, 0);
            DeleteMenu(sysMenu, (int)SysCmd.SC_SIZE, 0);
            this.MaximizeBox = false;
            this.BackColor = Color.Black;
            this.BackgroundImageLayout = ImageLayout.Stretch;
            this.Activated += new EventHandler(Form_Activated);
            this.Deactivate += new EventHandler(Form_Deactivate);
            this.FormClosing += new FormClosingEventHandler(Form_FormClosing);
            this.Load += new EventHandler(Form_Load);
        }
 
        /// <summary>
        /// <en>Called after the form received focus</en>
        /// <pl>Wywoływane po tym kiedy okno otrzymało fokus</pl>
        /// </summary>
        /// <param name="sender"/>
        /// <param name="e"/>
        void Form_Activated(object sender, EventArgs e)
        {
            Taskbar.Hide();
            this.Size = screenBounds.Size;
        }
 
        /// <summary>
        /// <en>Called when the form looses focus</en>
        /// <pl>Wywoływane kiedy okno traci fokus</pl>
        /// </summary>
        /// <param name="sender"/>
        /// <param name="e"/>
        void Form_Deactivate(object sender, EventArgs e)
        {
            Taskbar.Show();
            this.Size = workArea.Size;
        }
 
        /// <summary>
        /// <en>Called when the form is about to be closed</en>
        /// <pl>Wywoływane kiedy okno jest tuż przed zamknięciem</pl>
        /// </summary>
        /// <param name="sender"/>
        /// <param name="e"/>
        void Form_FormClosing(object sender, FormClosingEventArgs e)
        {
            Taskbar.Show();
            this.Size = workArea.Size;
        }
 
        /// <summary>
        /// <en>Called when the form is being loaded</en>
        /// <pl>Wywoływane kiedy okno jest ładowane</pl>
        /// </summary>
        /// <param name="sender"/>
        /// <param name="e"/>
        void Form_Load(object sender, EventArgs e)
        {
            Taskbar.Hide();
            this.Size = screenBounds.Size;
        }
 
        /// <summary>
        /// <en>Overridden form message handling function</en>
        /// <pl>
        /// Nadpisana funkcja obsługi komunikatów otrzymywanych przez okno
        /// </pl>
        /// </summary>
        /// <param name="message">
        /// <en>The message received</en>
        /// <pl>Otrzymany komunikat</pl>
        /// </param>
        protected override void WndProc(ref Message message)
        {
            switch (message.Msg)
            {
                case (int)WinMsg.WM_SYSCOMMAND:
 
                    int command = message.WParam.ToInt32() & 0xFFF0;
 
                    if (command == (int)SysCmd.SC_SIZE)
                    {
                        // <en>Your optional code here</en>
                        // <pl>Tutaj twój opcjonalny kod</pl>
 
                        return;
                    }
 
                    else if (command == (int)SysCmd.SC_MOVE)
                    {
                        // <en>Your optional code here</en>
                        // <pl>Tutaj twój opcjonalny kod</pl>
 
                        return;
                    }
 
                    else if (command == (int)SysCmd.SC_MINIMIZE)
                    {
                        // <en>Your optional 'before' code here</en>
                        // <pl>
                        // Tutaj twój opcjonalny kod przed poleceniami poniżej
                        // </pl>
 
                        Taskbar.Hide();
                        this.Size = workArea.Size;
 
                        // <en>Your optional 'after' code here</en>
                        // <pl>
                        // Tutaj twój opcjonalny kod po poleceniach powyżej
                        // </pl>
                    }
 
                    else if (command == (int)SysCmd.SC_MAXIMIZE)
                    {
                        // <en>Your optional code here</en>
                        // <pl>Tutaj twój opcjonalny kod</pl>
 
                        return;
                    }
 
                    else if (command == (int)SysCmd.SC_RESTORE)
                    {
                        // <en>Your optional 'before' code here</en>
                        // <pl>
                        // Tutaj twój opcjonalny kod przed poleceniami poniżej
                        // </pl>
 
                        Taskbar.Hide();
                        this.Size = screenBounds.Size;
 
                        // <en>Your optional 'after' code here</en>
                        // <pl>Tutaj twój opcjonalny kod po poleceniach powyżej</pl>
                    }
 
                    break;
            }
 
            base.WndProc(ref message);
        }
    }
}

Moduł Taskbar.cs

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Text;
 
namespace NSTaskbar
{
    /// <summary>
    /// <en>
    /// Helper class for hiding/showing the taskbar and startmenu on Windows XP
    /// or Windows Vista or Windows 7
    /// </en>
    /// <pl>
    /// Klasa pomocnicza do znajdowania/pokazywania paska zadań i menu Start
    /// w Windows XP, Windows Vista i Windows 7
    /// </pl>
    /// </summary>
    /// <see href="http://www.codeproject.com/Articles/25572/Hiding-the-Taskbar-and-Startmenu-start-orb-in-Wind">
    /// <en>
    /// CodeProject, Hiding the Taskbar and Startmenu in Windows Vista and
    /// Windows 7
    /// </en>
    /// <pl>Code project, Ukrywanie paska zadań w Windows Vista i Windows 7</pl>
    /// </see>
    public static class Taskbar
    {
        [DllImport("user32.dll")]
        static extern int GetWindowText(
            IntPtr hWnd,
            StringBuilder text,
            int count
            );
 
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        static extern bool EnumThreadWindows(
            int threadId,
            EnumThreadProc pfnEnum,
            IntPtr lParam
            );
 
        [DllImport("user32.dll", SetLastError = true)]
        static extern System.IntPtr FindWindow(
            string lpClassName,
            string lpWindowName
            );
 
        [DllImport("user32.dll", SetLastError = true)]
        static extern IntPtr FindWindowEx(
            IntPtr parentHandle,
            IntPtr childAfter,
            string className,
            string windowTitle
            );
 
        [DllImport("user32.dll")]
        static extern IntPtr FindWindowEx(
            IntPtr parentHwnd,
            IntPtr childAfterHwnd,
            IntPtr className,
            string windowText
            );
 
        [DllImport("user32.dll")]
        static extern int ShowWindow(IntPtr hwnd, int nCmdShow);
 
        [DllImport("user32.dll")]
        static extern uint GetWindowThreadProcessId(
            IntPtr hwnd,
            out int lpdwProcessId
            );
 
        const int SW_HIDE = 0;
        const int SW_SHOW = 5;
 
        const string VistaStartMenuCaption = "Start";
        static IntPtr vistaStartMenuWnd = IntPtr.Zero;
 
        delegate bool EnumThreadProc(IntPtr hwnd, IntPtr lParam);
 
        /// <summary>
        /// <en>Show the taskbar</en>
        /// <pl>Pokaż pasek zadań</pl>
        /// </summary>
        public static void Show()
        {
            SetVisibility(true);
        }
 
        /// <summary>
        /// <en>Hide the taskbar</en>
        /// <pl>Ukryj pasek zadań</pl>
        /// </summary>
        public static void Hide()
        {
            SetVisibility(false);
        }
 
        /// <summary>
        /// <en>Sets the visibility of the taskbar</en>
        /// <pl>Włącza/wyłącza widoczność paska zadań</pl>
        /// </summary>
        public static bool Visible
        {
            set { SetVisibility(value); }
        }
 
        /// <summary>
        /// <en>Hide or show the Windows taskbar and startmenu</en>
        /// <pl>Pokaż lub ukryj pasek zadań i menu Start Windows</pl>
        /// </summary>
        /// <param name="show">
        /// <en>True to show, false to hide</en>
        /// <pl>Prawda aby pokazać, fałsz aby ukryć</pl>
        /// </param>
        static void SetVisibility(bool show)
        {
            // <en>Get taskbar window</en>
            // <pl>Pobierz okno paska zadań</pl>
            IntPtr taskBarWnd = FindWindow("Shell_TrayWnd", null);
 
            // <en>Try it the Windows XP way</en>
            // <pl>Spróbuj metodą dla Windows XP</pl>
            IntPtr startWnd = FindWindowEx(
                taskBarWnd,
                IntPtr.Zero,
                "Button",
                "Start"
                );
 
            if (startWnd == IntPtr.Zero)
            {
                // <en>
                // Try an alternate way, as mentioned on CodeProject by Earl
                // Waylon Flinn
                // <en>
                // <pl>
                // Spróbuj alternatywnym sposobem o którym na CodeProject
                // wspomina Earl Waylon Flinn
                // </pl>
                startWnd = FindWindowEx(
                    IntPtr.Zero,
                    IntPtr.Zero,
                    (IntPtr)0xC017,
                    "Start"
                    );
            }
 
            if (startWnd == IntPtr.Zero)
            {
                // <en>Try the Vista way</en>
                // <pl>Spróbuj sposobu dla Windows Vista</pl>
                startWnd = FindWindow("Button", null);
                if (startWnd == IntPtr.Zero)
                {
                    // <en>Do it browsing taskbar threads</en>
                    // <pl>Wykonaj to szukając wśród wątków paska zadań</pl>
                    startWnd = GetVistaStartMenuWnd(taskBarWnd);
                }
            }
 
            ShowWindow(taskBarWnd, show ? SW_SHOW : SW_HIDE);
            ShowWindow(startWnd, show ? SW_SHOW : SW_HIDE);
        }
 
        /// <summary>
        /// <en>
        /// Returns window handle of the Windows Vista/Windows 7 start menu
        /// </en>
        /// <pl>Zwraca uchwyt menu Start dla Windows Vista lub Windows 7</pl>
        /// </summary>
        /// <param name="taskBarWnd">
        /// <en>Window handle of taskbar</en>
        /// <pl>Uchwyt paska zadań</pl>
        /// </param>
        /// <returns>
        /// <en>Window handle of start menu</en>
        /// <pl>Uchwyt okna menu Start</pl>
        /// </returns>
        static IntPtr GetVistaStartMenuWnd(IntPtr taskBarWnd)
        {
            // <en>Get process that owns the taskbar window</en>
            // <pl>Pobierz proces-właściciela paska zadań</pl>
            int procId;
            GetWindowThreadProcessId(taskBarWnd, out procId);
            Process p = Process.GetProcessById(procId);
 
            if (p != null)
            {
                // <en>Enumerate all threads of that process</en>
                // <pl>Wylicz wszystkie wątki tego procesu</pl>
                foreach (ProcessThread t in p.Threads)
                {
                    EnumThreadWindows(
                        t.Id,
                        MyEnumThreadWindowsProc,
                        IntPtr.Zero
                        );
                }
            }
 
            return vistaStartMenuWnd;
        }
 
        /// <summary>
        /// <en>
        /// Callback method that is called from 'EnumThreadWindows' in
        /// 'GetVistaStartMenuWnd'
        /// </en>
        /// <pl>
        /// Metoda typu callback wywoływana przez 'EnumThreadWindows' w
        /// 'GetVistaStartMenuWnd'
        /// </pl>
        /// </summary>
        /// <param name="hWnd">
        /// <en>Window handle</en>
        /// <pl>Uchwyt okna</pl>
        /// </param>
        /// <param name="lParam">
        /// <en>Parameter</en>
        /// <pl>Prametr</pl>
        /// </param>
        /// <returns>
        /// <en>True to continue enumeration, false to stop it</en>
        /// <pl>Prawda aby kontynuować wyliczanie, fałsz aby je przerwać</pl>
        /// </returns>
        static bool MyEnumThreadWindowsProc(IntPtr hWnd, IntPtr lParam)
        {
            StringBuilder buffer = new StringBuilder(256);
 
            if (GetWindowText(hWnd, buffer, buffer.Capacity) > 0)
            {
                Console.WriteLine(buffer);
                if (buffer.ToString() == VistaStartMenuCaption)
                {
                    vistaStartMenuWnd = hWnd;
                    return false;
                }
            }
 
            return true;
        }
    }
}


Moduł Doc.xml

<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Lan4Avalon</name>
    </assembly>
    <members>
        <member name="T:NSLan4Avalon.Form1">
            <summary>
            <en>
            This solution Single Document Interface (SDI) main form class
            </en>
            <pl>
            Klasa okna głównego tego projektu typu Single Document Interface
            (SDI)
            </pl>
            </summary>
        </member>
        <member name="F:NSLan4Avalon.Form1.components">
            <summary>
            Required designer variable.
            </summary>
        </member>
        <member name="M:NSLan4Avalon.Form1.Dispose(System.Boolean)">
            <summary>
            Clean up any resources being used.
            </summary>
            <param name="disposing">
            true if managed resources should be disposed; otherwise, false
            </param>
        </member>
        <member name="M:NSLan4Avalon.Form1.InitializeComponent">
            <summary>
            Required method for Designer support - do not modify
            the contents of this method with the code editor.
            </summary>
        </member>
        <member name="F:NSLan4Avalon.Form1.screenBounds">
            <en>
            Bounds of the maximum screen size form when the taskbar is hidden
            </en>
            <pl>
            Wymiary skrajne okna o maksymalnym rozmiarze ekranu kiedy pasek
            zadań jest ukryty
            </pl>
        </member>
        <member name="F:NSLan4Avalon.Form1.workArea">
            <en>
            Bounds of the work area size form when the taskbar is shown
            </en>
            <pl>
            Wymiary skrajne okna w obszarze roboczym kiedy paskek zadań jest
            widoczny
            </pl>
        </member>
        <member name="F:NSLan4Avalon.Form1.insideBounds">
            <en><!--Not used here, stay not translated--></en>
            <pl><!--Tutaj nie używane, pozostaje nie przetłumaczone--></pl>
        </member>
        <member name="M:NSLan4Avalon.Form1.#ctor">
            <summary>
            <en>Main form constructor</en>
            <pl>Konstruktor okna głównego</pl>
            </summary>
        </member>
        <member name="M:NSLan4Avalon.Form1.Form_Activated(System.Object,System.EventArgs)">
            <summary>
            <en>Called after the form received focus</en>
            <pl>Wywoływane po tym kiedy okno otrzymało fokus</pl>
            </summary>
            <param name="sender"/>
            <param name="e"/>
        </member>
        <member name="M:NSLan4Avalon.Form1.Form_Deactivate(System.Object,System.EventArgs)">
            <summary>
            <en>Called when the form looses focus</en>
            <pl>Wywoływane kiedy okno traci fokus</pl>
            </summary>
            <param name="sender"/>
            <param name="e"/>
        </member>
        <member name="M:NSLan4Avalon.Form1.Form_FormClosing(System.Object,System.Windows.Forms.FormClosingEventArgs)">
            <summary>
            <en>Called when the form is about to be closed</en>
            <pl>Wywoływane kiedy okno jest tuż przed zamknięciem</pl>
            </summary>
            <param name="sender"/>
            <param name="e"/>
        </member>
        <member name="M:NSLan4Avalon.Form1.Form_Load(System.Object,System.EventArgs)">
            <summary>
            <en>Called when the form is being loaded</en>
            <pl>Wywoływane kiedy okno jest ładowane</pl>
            </summary>
            <param name="sender"/>
            <param name="e"/>
        </member>
        <member name="M:NSLan4Avalon.Form1.WndProc(System.Windows.Forms.Message@)">
            <summary>
            <en>Overridden form message handling function</en>
            <pl>
            Nadpisana funkcja obsługi komunikatów otrzymywanych przez okno
            </pl>
            </summary>
            <param name="message">
            <en>The message received</en>
            <pl>Otrzymany komunikat</pl>
            </param>
        </member>
        <member name="T:NSLan4Avalon.Form1.ShowWnd">
            <see href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms633548(v=vs.85).aspx">
            <en>MSDN, ShowWindow function</en>
            <pl>MSDN, Funcja "Pokaż okno"</pl>
            </see>
            <en><!--Not used parts stay not translated--></en>
            <pl><!--Fragmenty nie używane pozostają nie przetłumaczone--></pl>
        </member>
        <member name="F:NSLan4Avalon.Form1.ShowWnd.SW_HIDE">
            <en>Hides the window and activates another window</en>
            <pl>Ukrywa okno i aktywuje inne okno</pl>
        </member>
        <member name="F:NSLan4Avalon.Form1.ShowWnd.SW_MAXIMIZE">
            <en>Maximizes the specified window</en>
            <pl>Maksymalizuje wybrane okno</pl>
        </member>
        <member name="F:NSLan4Avalon.Form1.ShowWnd.SW_MINIMIZE">
            <en>
            Minimizes the specified window and activates the next top-level
            window in the Z-order.
            </en>
            <pl>
            Minimalizuje wybrane okno i aktywuje następne okno top-level w
            porządku Z-order
            </pl>
        </member>
        <member name="F:NSLan4Avalon.Form1.ShowWnd.SW_RESTORE">
            <en>
            Activates and displays the window. If the window is minimized or
            maximized, the system restores it to its original size and position.
            An application should specify this flag when restoring a minimized
            window.
            </en>
            <pl>
            Aktywuje i wyświetla okno. Jeżeli okno jest zminimalizowane lub
            zmaksymalizowane, system przywraca mu orginalne rozmiary i pozycję.
            Aplikacja powinna wskazać tę flagę przy przywracaniu
            zminimalizowanego okna
            </pl>
        </member>
        <member name="F:NSLan4Avalon.Form1.ShowWnd.SW_SHOW">
            <en>
            Activates the window and displays it in its current size and
            position.
            </en>
            <pl>
            Aktywuje okno i wyświetla je z jego bieżącymi wymiarami i w bieżącej
            pozycji
            </pl>
        </member>
        <member name="T:NSLan4Avalon.Form1.SysCmd">
            <summary>
            <en>System commands</en>
            <pl>Polecenia systemowe</pl>
            </summary>
        </member>
        <member name="F:NSLan4Avalon.Form1.SysCmd.SC_SIZE">
            <en>Form size changing, here ignored</en>
            <pl>Zmiana rozmiarów okna, tutaj ignorowane</pl>
        </member>
        <member name="F:NSLan4Avalon.Form1.SysCmd.SC_MOVE">
            <en>Form moving, here ignored</en>
            <pl>Przesuwanie okna, tutaj ignorowane</pl>
        </member>
        <member name="F:NSLan4Avalon.Form1.SysCmd.SC_MINIMIZE">
            <en>Form minimizing to the reshown taskbar</en>
            <pl>Minimalizacja okna na ponownie wyświetlony pasek zadań</pl>
        </member>
        <member name="F:NSLan4Avalon.Form1.SysCmd.SC_MAXIMIZE">
            <en>Form maximizing, here ignored</en>
            <pl>Maksymalizacja okna, tutaj ignorowane</pl>
        </member>
        <member name="F:NSLan4Avalon.Form1.SysCmd.SC_RESTORE">
            <en>
            Form restoring to maximum screen size and hiding the taskbar
            </en>
            <pl>
            Przywrócenie okna do maksymalnego rozmiaru ekranu i ukrycie paska
            zadań
            </pl>
        </member>
        <member name="T:NSLan4Avalon.Form1.WinMsg">
            <summary>
            <en>Window messages</en>
            <pl>Komunikaty windows</pl>
            </summary>
            <en><!--Not used parts stay not translated--></en>
            <pl><!--Fragmenty nie używane pozostają nie przetłumaczone--></pl>
        </member>
        <member name="F:NSLan4Avalon.Form1.WinMsg.WM_SHOWWINDOW">
            <en>Message sent with flag SysCmd.SW_...</en>
            <pl>Komunikat wysyłany z flagą SysCmd.SW_...</pl>
        </member>
        <member name="F:NSLan4Avalon.Form1.WinMsg.WM_SYSCOMMAND">
            <en>
            Messages sent by by system buttons (minimize, maximize,
            restore, close), and by system menu items
            </en>
            <pl>
            Komunikaty wysyłane przez przyciski systemowe (minimalizuj,
            maksymalizuj, przywróć, zamknij) i pozycje menu systemowego okna
            </pl>
        </member>
        <member name="T:NSLan4Avalon.Form1.Broadcast">
            <en><!--Not used parts stay not translated--></en>
            <pl><!--Fragmenty nie używane pozostają nie przetłumaczone--></pl>
        </member>
        <member name="T:NSLan4Avalon.Properties.Resources">
            <summary>
              A strongly-typed resource class, for looking up localized strings,
              etc.
            </summary>
        </member>
        <member name="P:NSLan4Avalon.Properties.Resources.ResourceManager">
            <summary>
              Returns the cached ResourceManager instance used by this class.
            </summary>
        </member>
        <member name="P:NSLan4Avalon.Properties.Resources.Culture">
            <summary>
              Overrides the current thread's CurrentUICulture property for all
              resource lookups using this strongly typed resource class.
            </summary>
        </member>
        <member name="T:NSLan4Avalon.OpSys">
            <summary>
            <en>Helper class for finding operating system version</en>
            <pl>Klasa pomocnicza do rozpoznania wersji systemu operacyjnego</pl>
            </summary>
            <see href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx">
            <en>MSDN, Operating System Version</en>
            <pl>MSDN, Wersja systemu operacyjnego</pl>
            </see>
        </member>
        <member name="M:NSLan4Avalon.OpSys.isWinXP">
            <summary>
            <en>Test if operating system is Windows XP</en>
            <pl>Sprawdzenie czy systememem operacyjnym jest Windows XP</pl>
            </summary>
            <returns>
            <en>True if yes, false if not</en>
            <pl>Prawda jeżeli tak, fałsz jeżeli nie</pl>
            </returns>
        </member>
        <member name="M:NSLan4Avalon.OpSys.isWin7OrVista">
            <summary>
            <en>Test if operating system is Windows Vista or Windows 7</en>
            <pl>Sprawdzenie czy systemem operacyjnym jest Windows Vista lub Windows 7</pl>
            </summary>
            <returns>
            <en>True if yes, false if not</en>
            <pl>Prawda jeżeli tak, fałsz jeżeli nie</pl>
            </returns>
        </member>
        <member name="M:NSLan4Avalon.OpSys.isNonConsider">
            <summary>
            <en>Test if operating system isn't considered in this solution</en>
            <pl>
            Sprawdzenie czy system operacyjny nie jest brany pod uwagę w tym
            projekcie
            </pl>
            </summary>
            <returns>
            <en>True if it isn't, false if it is</en>
            <pl>Prawda jeżeli nie jest, fałsz jeżeli jest</pl>
            </returns>
        </member>
        <member name="T:NSTaskbar.Taskbar">
            <summary>
            <en>
            Helper class for hiding/showing the taskbar and startmenu on Windows
            XP or Windows Vista or Windows 7
            </en>
            <pl>
            Klasa pomocnicza do znajdowania/pokazywania paska zadań i menu Start
            w Windows XP, Windows Vista i Windows 7
            </pl>
            </summary>
            <see href="http://www.codeproject.com/Articles/25572/Hiding-the-Taskbar-and-Startmenu-start-orb-in-Wind">
            <en>
            CodeProject, Hiding the Taskbar and Startmenu in Windows Vista and
            Windows 7
            </en>
            <pl>
            Code project, Ukrywanie paska zadań w Windows Vista i Windows 7
            </pl>
            </see>
        </member>
        <member name="M:NSTaskbar.Taskbar.Show">
            <summary>
            <en>Show the taskbar</en>
            <pl>Pokaż pasek zadań</pl>
            </summary>
        </member>
        <member name="M:NSTaskbar.Taskbar.Hide">
            <summary>
            <en>Hide the taskbar</en>
            <pl>Ukryj pasek zadań</pl>
            </summary>
        </member>
        <member name="M:NSTaskbar.Taskbar.SetVisibility(System.Boolean)">
            <summary>
            <en>Hide or show the Windows taskbar and startmenu</en>
            <pl>Pokaż lub ukryj pasek zadań i menu Start Windows</pl>
            </summary>
            <param name="show">
            <en>True to show, false to hide</en>
            <pl>Prawda aby pokazać, fałsz aby ukryć</pl>
            </param>
        </member>
        <member name="M:NSTaskbar.Taskbar.GetVistaStartMenuWnd(System.IntPtr)">
            <summary>
            <en>
            Returns window handle of the Windows Vista/Windows 7 start menu
            </en>
            <pl>Zwraca uchwyt menu Start dla Windows Vista lub Windows 7</pl>
            </summary>
            <param name="taskBarWnd">
            <en>Window handle of taskbar</en>
            <pl>Uchwyt paska zadań</pl>
            </param>
            <returns>
            <en>Window handle of start menu</en>
            <pl>Uchwyt okna menu Start</pl>
            </returns>
        </member>
        <member name="M:NSTaskbar.Taskbar.MyEnumThreadWindowsProc(System.IntPtr,System.IntPtr)">
            <summary>
            <en>
            Callback method that is called from 'EnumThreadWindows' in
            'GetVistaStartMenuWnd'
            </en>
            <pl>
            Metoda typu callback wywoływana przez 'EnumThreadWindows' w
            'GetVistaStartMenuWnd'
            </pl>
            </summary>
            <param name="hWnd">
            <en>Window handle</en>
            <pl>Uchwyt okna</pl>
            </param>
            <param name="lParam">
            <en>Parameter</en>
            <pl>Prametr</pl>
            </param>
            <returns>
            <en>True to continue enumeration, false to stop it</en>
            <pl>Prawda aby kontynuować wyliczanie, fałsz aby je przerwać</pl>
            </returns>
        </member>
        <member name="P:NSTaskbar.Taskbar.Visible">
            <summary>
            <en>Sets the visibility of the taskbar</en>
            <pl>Włącza/wyłącza widoczność paska zadań</pl>
            </summary>
        </member>
        <member name="M:NSLan4Avalon.Program.Main">
            <summary>
            <en>The main entry point for the application</en>
            <pl>Miejsce rozpoczecia programu</pl>
            </summary>
        </member>
    </members>
</doc>

2 komentarze

Artur Protasewicz 2015-11-03 17:34

Zdecydowanie u mnie jest wersja względem anglojęzycznej w msdn lokalizowana na język polski, ewentualnie można powiedzieć o wersji angielsko-polskiej i wyłącznie w tych dwóch językach i w tej kolejności, Tak jest w tym artykule, choć może już istnieją, a może w przyszłości będą istniały 2-języczne wersje artykułów na 4p, gdzie język polski niekoniecznie w ogóle będzie, ale artykuł będzie prawdopodobnie lokalizowany z angielskiego na polski lub z angielskiego na np. ukraiński. Zachowanie anglojęzyczności powinno dotyczyć kodu C# i jego pierwszego opisu w XML, a np. po ukraińsku dołącza tylko opis w XML i mamy przykładowe  tagi:

///<en></en>
///<ukr></ukr>

W tym artykule jest np.
///<en>...ShowWindow...</en>
///<pl>..."Pokaż okno"...</pl>

gdzie użyłem cudzysłowów.
Zasadniczo mam doświadczenie nie tyle w C# i XML, co w edycji i tłumaczeniu kontraktów miedzy firmami z Polski i jakiejś strony zagranicznej, a więc dwustronnych, jeden raz zdarzył się kontrakt trójstronny. W tej chwili próbuję przenieść tamte doświadczenia na grunt własnego projektu programistycznego i graficznego. To co tu zaprezentowałem jest, jak napisałem szkicem autorskim. W kontraktach spotykałem zwykle 2 języki, znacznie rzadziej jeden i nigdy inaczej - to zależy od stron spisujących kontrakt. Wiele krojów czcionek jest zaprojektowanych tak naprawdę dla kilku nacji - jakiegoś kręgu kulturowego. Możemy handlować oprogramowaniem z Chinami i wtedy np. uzgodnić, że dokumentacja będzie dwujęzyczna w języku polskim z rejonu Kujawy i chińskim w narzeczu mandaryńskim, z kantonu takiego, a takiego.

Wracając do zadanych pytań: Mnie nie interesuje co by było gdyby, kiedy już mam to u siebie na ekranie.

Azarien 2015-11-03 10:25

1. Dlaczego w ogóle chcesz ukrywać pasek zadań? Kiedy to jest potrzebne?

2. Co będzie się działo kiedy dwa programy ukrywające pasek będą uruchomione jednocześnie?

3.

            IntPtr startWnd = FindWindowEx(
                taskBarWnd,
                IntPtr.Zero,
                "Button",
                "Start"
                );

Napis na przycisku start jest różny w różnych wersjach językowych. Przykładowo w polskim XP jest to Start (z dużej litery), w angielskim start (z małej) a w chińskim 開始. Czy kod prawidłowo działa w tych przypadkach?