PDA

View Full Version : آموزش: قرار دادن Progressbar در Taskbar



ArashRoshan
سه شنبه 08 شهریور 1390, 12:49 عصر
74626سلام به همه
من این آموزش رو اینجا میزارم ، امیدوارم هم جاش درست باشه هم شما استفاده کنید .

خب ، شما حتما دیدید که بعضی از برنامه های جدید که برای Windows 7 با اون Taskbar قشنگش نوشته می شن یه Progressbar داخلشون هست که توی Task bar هم دیده میشه . شما هم می تونید مثلا برای آپدیت کردن برنامتون یا وقتی می خواید یه فایل رو کپی کنید از این تکنیک استفاده کنید تا برناتون یه حال و هوای دیگه پیدا کنه .

برای شروع باید Windows API مربوط به این کار رو دانلود کنید ، منبع خود سایت Microsoft رو میدم که معتبر باشه : http://archive.msdn.microsoft.com/WindowsAPICodePack/Release/ProjectReleases.aspx?ReleaseId=3574
وقتی وارد سایت شدید ، یک فایل با نام windowsAPICodePack با پسوند Zip وجود داره اون رو دانلود کنید ، بعد باید فایل اصلیش رو یعنی :
WindowsAPICodePack\WindowsAPICodePack.sln
باز کنید و یه Rebuild انجام بدید .

خب تاحالا ما فایل API رو ساختیم . بعد توی برنامتون یه فرم بسازید و یه Progressbar و یه Trackbar قرار بدید تا با استفاده از Trackbar مقدار رو تنظیم کنیم
حالا باید API رو به برنامتون اضافه کنید ، برید توی منوی Project بعد روی Add references کلیک کنید ، برید به مسیر :
WindowsAPICodePack\Shell\bin\Debug
فایل Microsoft.WindowsAPICodePack.Shell.dll رو اضافه کنید به برنامتون . بعد کد زیر رو برای برنامتون بنویسید :

Imports Microsoft.WindowsAPICodePack
Imports Microsoft.WindowsAPICodePack.Taskbar
Public Class Form1
Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles TrackBar1.Scroll
ProgressBar1.Value = TrackBar1.Value * 10
TaskbarManager.Instance.SetProgressValue(TrackBar1 .Value * 10, 100)
End Sub
End Class


بعدش امیدوارم مفید بوده باشه ، شما میتونید با اون فایلی که دانلود کردید کلی کارهای جالب انجام بدید ، برید توی پوشه Samples و پروژه های مثال رو نگاه کنید . این API ها خیلی به درد می خورند .

باز هم ممنون
منبع :
http://www.dreamincode.net/forums/topic/163162-show-progress-bar-progress-on-windows-taskbar-win7-only/

bzdesign
جمعه 11 شهریور 1390, 02:04 صبح
دوست خوب متشکرم از آموزشی که قرار دارید. ولی یه سوال تخصصی داشتم که تا حالا کسی جوابشو بلد نبوده و اون اینه که چه جوری میشه واسه کپی کردن یک فایل به جایی رو هارد توسط برناممون 1 پروگرس بار ساخت که واقعا میزان پیشرفت رو نشون بده.
یا هنگام دانلود یه فایل از سرور برناممون که رو هاسته میزان پیشرفت رو ، توسط پروگرس بار نشون داد

mhr548010
شنبه 12 شهریور 1390, 01:03 صبح
سلام دوست عزیز
اینم چیزی که گفتی کسی نتونسته جواب بده.
74754

bzdesign
شنبه 12 شهریور 1390, 02:43 صبح
فوق العاده بود دوست گرامی
ممنون بابت کمکتون. بسیــــــــــــــــــــــ ـــــــــــــــــــــــــ ــــار مفید بود
و حالا 1 سوال دیگه و اون اینکه چه طور میشه مثل مدیاپلیر ویندوز وقتی minimize میشه تو ویندوز 7 دکمه هایی برای کنترل برنامه قرار داد ؟ مثل تصویر زیر
74757
http://barnamenevis.org/images/misc/pencil.png

mhr548010
دوشنبه 14 شهریور 1390, 11:34 صبح
سلام
اینم چیزی که میخواستی

74880

zaeimh90
دوشنبه 29 اسفند 1390, 15:34 عصر
عزیز یک مشکلی تو برنمامت هست.فقط فایل هایی که تایپشون سه حرفیه جواب میده ، مثلا اگر پسوند فایل JPEG باشد دیگه ارور میده.
درست کردنش کاری نداره ولی میخواستم بگم درستش کنی.ممنون از کمکت.
برنامتم خیلی خوب بود.
البته جای گفتنش باقیه که این پیام به آقای mhr548010 می باشد

xxnagin
دوشنبه 29 اسفند 1390, 21:40 عصر
این کل windowsAPICodePack هستش

jumplist, Taskbar Progressbar, Tabbed Thumbnail, Icon Overlays Task dialog
, و چیزهای دیگه از windowsAPICodePack
یا تو گوگل win 7 Features را سرچ کنید

http://www.codeproject.com/Articles/49268/Windows-7-New-Features-Explained-Using-NET

farhad5487
دوشنبه 29 اسفند 1390, 22:49 عصر
اگر برنامه در ویندوز xp اجرا بشه چون xp ساپورت نمیکنه ؟
برنامه کرش میشه ؟

فرید نجفلو
دوشنبه 29 اسفند 1390, 23:01 عصر
دقیقا همین 30ثانیه پیش امتحان کردم رو 7 کار میکنه ولی XP یک خطا ی بزرگ وار دارن
No Suport
win 7 or Newer
:قهقهه:

farhad5487
دوشنبه 29 اسفند 1390, 23:32 عصر
پس به درد بخور نیست دیگه ؟
یعنی راهی نیست که برنامه آنالیز کنه که اگر داخل ویندوز xp اجرا بشه آن api را null کنه ؟

فرید نجفلو
دوشنبه 29 اسفند 1390, 23:32 عصر
افتضاح پشت افتضاح
الان حی دارم اینا رو تست می کنم یه بار تو 7 یه بار تو XP
نتیجه تست:
تو سون خیلی جالبه
تو XP فاتحه برنامه خوندس مخصوصا اگه از چیزی مثل GlassFrom استفاده بشه(کلک برنامه کندس)

نتیجه کلی:
به نظر بنده اگه کوچکترین احتمالی می دید که برنامه رو XP اجرا می شه (که فعلا احتمالش همچینم کوچیک نیست) از این امکانات استفاده نکنید!

راه حل:
اگه از امکاناتی استفاده می کنید که قابل کنترل هستن(مثل موضوع اصلی همین تاپیک یعنی Taskbar) باید اولا دستورات درون یک بلوک Try...Catch باشه و مهمتر از اون دستورات داخل یک شرط(If) باشه و قبل از اجرای اون خط نسخه ویندوز چک بشه(باید 6.1 و بالاتر باشه)
ورژن ها عبارتند از:

Windows 76.1Windows Server 2008 R26.1Windows Server 20086.0Windows Vista6.0Windows Server 2003 R25.2Windows Server 20035.2Windows XP 64-Bit Edition5.2Windows XP5.1Windows 20005.0


اگه از این روش استفاده کنید باید کد تون چیزی شبیه این باشه:

Dim Win7Ver As New Version("6.1")
Dim CurrentOSver As New Version(My.Computer.Info.OSVersion)
If CurrentOSver >= Win7Ver Then
Taskbar.TaskbarManager.Instance.SetProgressValue(M e.TrackBar1.Value, 100)
End If

peyman677
سه شنبه 21 آذر 1391, 12:24 عصر
افتضاح پشت افتضاح
الان حی دارم اینا رو تست می کنم یه بار تو 7 یه بار تو XP
نتیجه تست:
تو سون خیلی جالبه
تو XP فاتحه برنامه خوندس مخصوصا اگه از چیزی مثل GlassFrom استفاده بشه(کلک برنامه کندس)

نتیجه کلی:
به نظر بنده اگه کوچکترین احتمالی می دید که برنامه رو XP اجرا می شه (که فعلا احتمالش همچینم کوچیک نیست) از این امکانات استفاده نکنید!

راه حل:
اگه از امکاناتی استفاده می کنید که قابل کنترل هستن(مثل موضوع اصلی همین تاپیک یعنی Taskbar) باید اولا دستورات درون یک بلوک Try...Catch باشه و مهمتر از اون دستورات داخل یک شرط(If) باشه و قبل از اجرای اون خط نسخه ویندوز چک بشه(باید 6.1 و بالاتر باشه)
ورژن ها عبارتند از:

Windows 76.1Windows Server 2008 R26.1Windows Server 20086.0Windows Vista6.0Windows Server 2003 R25.2Windows Server 20035.2Windows XP 64-Bit Edition5.2Windows XP5.1Windows 20005.0


اگه از این روش استفاده کنید باید کد تون چیزی شبیه این باشه:

Dim Win7Ver As New Version("6.1")
Dim CurrentOSver As New Version(My.Computer.Info.OSVersion)
If CurrentOSver >= Win7Ver Then
Taskbar.TaskbarManager.Instance.SetProgressValue(M e.TrackBar1.Value, 100)
End If

اصلا به این کار نیازی نیست ! :
اول این رو به قسمت جنرال ببرید:
Imports MS.WindowsAPICodePack.Internal.CoreHelpers

فقط بایک If کنترل کنید :

If TaskbarManager.IsPlatformSupported=true Then
دستورات در ویندوز 7 و 8'
Else
دستوراتی که در Xp و... اجرا شود'
End If