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>
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:
W tym artykule jest np.
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.
Dlaczego w ogóle chcesz ukrywać pasek zadań? Kiedy to jest potrzebne?
Co będzie się działo kiedy dwa programy ukrywające pasek będą uruchomione jednocześnie?
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?