[PL] Windows 7 – nowe cechy z poziomu .NET Framework

Jeśli testujecie Windows 7 i chcielibyście zobaczyć jak w praktyce można zintegrować waszą aplikację z desktopem systemu to polecam poniższą bibliotekę:
https://code.msdn.microsoft.com/WindowsAPICodePack

Windows API Codepack to szereg wrapperów .NETowych pozwalających na odwołanie się do bibliotek natywnych umożliwiających takie rzeczy jak:
* Integracja z Shellem
* Wykorzystanie bibliotek systemowych
* Integracja z paskiem zadań

itd.

Bardzo przyjemna biblioteka dostarczona z szeregiem przykładów.
Przykład poniżej, czyli integracja z paskiem zadań:

Okno aplikacji oraz przypisane zadania i zmieniona ikona aplikacji na pasku:
image image

Jak to się robi z poziomu kodu i z wykorzystaniem tej biblioteki przedstawiam poniżej:

Zmiana na oknie, najpierw wydarzenie pod przyciskiem:

private void pictureIconOverlay2_Click(object sender, EventArgs e)
{
Taskbar.OverlayImage =
new OverlayImage(TaskbarDemo.Properties.Resources.Yellow, "Yellow");
}

I faktyczny kod akcesora:

public static OverlayImage OverlayImage
{
get
{
return overlayImage;
}
set
{
overlayImage = value;

        if (overlayImage == null || overlayImage.Icon == null)
        {
TaskbarList.SetOverlayIcon(OwnerHandle, IntPtr.Zero, string.Empty);
}
else
{
TaskbarList.SetOverlayIcon(OwnerHandle, overlayImage.Icon.Handle, overlayImage.Text);
}
}
}

Dalej jest już interfejs COM dla TaskbarList.

Aktualizacja paska postępu zlokalizowanego na ikonie w pasku zadań odbywa się tak:

private void UpdateProgressBar()
{
Taskbar.ProgressBar.State =
(TaskbarButtonProgressState)
Enum.Parse(typeof(TaskbarButtonProgressState),
(string)comboBoxProgressBarStates.SelectedItem);
Taskbar.ProgressBar.CurrentValue = progressBar1.Value;
}

Idąc dalej już w Taskbar.ProgressBar jest metoda:

private void RefreshValue()
{
Taskbar.TaskbarList.SetProgressValue(Taskbar.OwnerHandle, (ulong)CurrentValue, (ulong)MaxValue);
}

I znów dalej jest COM, reszta nas nie interesuje.
Jumplisty tworzy się następująco:

private void buttonUserTasksAddTasks_Click(object sender, EventArgs e)
{
// Don't add additional tasks after tasks have already been added
if (jumpList.UserTasks.Count > 0)
return;

    // Path to Windows system folder
string systemFolder = Environment.GetFolderPath(Environment.SpecialFolder.System);
    // Update status
    UpdateStatusBar("Three user tasks added to jump list");
}

Polecam pobrać i przyjrzeć się wszystkim przykładom, z tą biblioteką pisanie aplikacji wykorzystujące dobrodziejstwa Windows 7 za pomocą .NET Framework jest banalnie proste.

Technorati Tagi: Polish posts,coding,.NET Framework,C#,Windows 7