PDA

View Full Version : نحوه کار با prograssbar



arashsoft
چهارشنبه 12 شهریور 1393, 12:17 عصر
سلام
چگونه می شود وضعیت prograssbar را در آیکون نشان دهیم؟

arashsoft
چهارشنبه 12 شهریور 1393, 12:21 عصر
ماننده تصویر زیر
http://upload.tehran98.com/upme/uploads/cb4e7c1e5234a6451.png

aminmousavi
چهارشنبه 12 شهریور 1393, 12:44 عصر
سلام دوست عزیز :
http://stackoverflow.com/questions/1295890/windows-7-progress-bar-in-taskbar-in-c
(از کد دومی استفاده کن)

arashsoft
چهارشنبه 12 شهریور 1393, 17:00 عصر
لطفا در مورد کدها توضیح بیشتر بدید چون اصلا کار نمی کند؟

aminmousavi
چهارشنبه 12 شهریور 1393, 17:15 عصر
دوست عزیز بنده تست کردم ، کار میکنه :

public static class TaskbarProgress
{
public enum TaskbarStates
{
NoProgress = 0,
Indeterminate = 0x1,
Normal = 0x2,
Error = 0x4,
Paused = 0x8
}


[ComImportAttribute()]
[GuidAttribute("ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf")]
[InterfaceTypeAttribute(ComInterfaceType.InterfaceI sIUnknown)]
private interface ITaskbarList3
{
// ITaskbarList
[PreserveSig]
void HrInit();
[PreserveSig]
void AddTab(IntPtr hwnd);
[PreserveSig]
void DeleteTab(IntPtr hwnd);
[PreserveSig]
void ActivateTab(IntPtr hwnd);
[PreserveSig]
void SetActiveAlt(IntPtr hwnd);


// ITaskbarList2
[PreserveSig]
void MarkFullscreenWindow(IntPtr hwnd, [MarshalAs(UnmanagedType.Bool)] bool fFullscreen);


// ITaskbarList3
[PreserveSig]
void SetProgressValue(IntPtr hwnd, UInt64 ullCompleted, UInt64 ullTotal);
[PreserveSig]
void SetProgressState(IntPtr hwnd, TaskbarStates state);
}


[GuidAttribute("56FDF344-FD6D-11d0-958A-006097C9A090")]
[ClassInterfaceAttribute(ClassInterfaceType.None)]
[ComImportAttribute()]
private class TaskbarInstance
{
}


private static ITaskbarList3 taskbarInstance = (ITaskbarList3)new TaskbarInstance();
private static bool taskbarSupported = Environment.OSVersion.Version >= new Version(6, 1);


public static void SetState(IntPtr windowHandle, TaskbarStates taskbarState)
{
if (taskbarSupported) taskbarInstance.SetProgressState(windowHandle, taskbarState);
}


public static void SetValue(IntPtr windowHandle, double progressValue, double progressMax)
{
if (taskbarSupported) taskbarInstance.SetProgressValue(windowHandle, (ulong)progressValue, (ulong)progressMax);
}
}


کلاس بالا رو بسازید ، میتونید توی صفحه فرم (.cs) زیر کلاس فرمتون کد بالا رو بزارد (درون namespace باشه ، بیرون از public partial class Form1 : Form)

کد زیر هم توی کد های فرمتون استفاده میکنید

TaskbarProgress.SetValue(this.Handle, 50, 100);
د

arashsoft
چهارشنبه 12 شهریور 1393, 17:33 عصر
[InterfaceTypeAttribute(ComInterfaceType.InterfaceI sIUnknown)]
قسمت بالا را خطا می دهد

aminmousavi
چهارشنبه 12 شهریور 1393, 17:50 عصر
دوست عزیز ، سورس رو از لینک زیر دانلود کن :


http://greendeveloper.ir/files/GD_TaskbarProgress.zip