[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:
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);
// Add our user tasks
jumpList.UserTasks.Add(new JumpListLink
{
Title = "Open Notepad",
Path = Path.Combine(systemFolder, "notepad.exe"),
IconLocation = Path.Combine(systemFolder, "notepad.exe"),
IconIndex = 0
});
jumpList.UserTasks.Add(new JumpListLink
{
Title = "Open Paint",
Path = Path.Combine(systemFolder, "mspaint.exe"),
IconLocation = Path.Combine(systemFolder, "mspaint.exe"),
IconIndex = 0
});
jumpList.UserTasks.Add(new JumpListSeparator());
jumpList.UserTasks.Add(new JumpListLink
{
Title = "Open Calculator",
Path = Path.Combine(systemFolder, "calc.exe"),
IconLocation = Path.Combine(systemFolder, "calc.exe"),
IconIndex = 0
});
// 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
Comments
Anonymous
April 22, 2009
Dziękujemy za publikację - Trackback z dotnetomaniak.plAnonymous
April 22, 2009
Dzięki Daniel za fajnego linka, (a miałem w weekend jechać nad wodę ;)