نرم افزاری برای اضافه كردن تاريخ شمسي به ويندوز


adel2009

مدیریت کل سایت
2009-06-15
10,502
47,860


نسخه 0.25 برنامه Shamsi XP داراي قابليت انتخاب فرمت نمايش تاريخ به صورت رايگان و كدباز، تحت GPL v3 ارائه ميگردد، با اين اميد كه مفيد واقع شود. هر گونه تغيير، توسعه و انتشار تحت GNU Lesser General Public License مورد تاييد است.

پشتيباني نكردن ويندوز از تاريخ شمسي از آن مشكلات باستاني است كه تا به حال هيچ راه‌حل معقولي براي آن ارائه نشده است. البته اگر هدف فقط نمايش تاريخ شمسي در ويندوز باشد، از انواع نرم‌افزارهاي نمايش تاريخ و تقويم شمسي مثل MPcalendar مي‌توان استفاده نمود. اما در صورتي كه بخواهيم تاريخ شمسي را به صورت سراسري و به شكلي كه بوسيله توابع مربوطه مانند Date، Time، Now و ... در ويندوز قابل دسترس باشد داشته باشيم، تنها راه معقول آن اضافه شدن نوع تقويم فارسي به استاندارد‌هاي قابل پشتيباني توسط ويندوز در كتابخانه مربوط به Standards and Formats در Regional and Language options است. (كه البته امري بعيد به نظر مي‌رسد)

به عنوان مثال براي استفاده از تاريخ هجري قمري به شكل سراسري در ويندوز، مي‌توانيد با اجراي Regional and Language options از Control Panel به اولين Tab با نام Regional Options مراجعه كرده و در ليست Standards and Formats يكي از زبانهايي كه تاريخ هجري دارد (مانند زبان اردو Urdu) را انتخاب و سپس با زدن دكمه Customize در بخش Date از ليست Calendar Type، تقويم "هجري" را انتخاب كنيد. (تاريخ شمسي پشتيباني نمي‌شود)

راه حلي كه بنده از آن استفاده كردم، صرف نظر كردن از DateTimeStamp استاندارد (مشكل خاصي بوجود نخواهد آمد) و اضافه كردن رشته حاوي تاريخ شمسي به TimeStamp استاندارد بود. براي فعال بودن و بروز شدن خوردكار آن هم يك Hook Driver طراحي كردم كه با تغيير زمان، به طور خودكار مقادير فيلدهاي 1159 و 2359 از LOCALE_SYSTEM_DEFAULT را آپديت كند.
البته به دليل محدوديت سايز متن TrayClock، از 4 رقم سال شمسي هم صرف نظر كردم (اين مشكل قابل حل است) اما نتيجه كار تا حدودي قابل قبول است. مثلا با اجراي برنامه، ساعت ويندوز به اين شكل تغيير مي‌كند: (مثلا 4 شنبه 25 شهريور)

همچنين بوسيله توابع Now و Time و ... به راحتي مي‌توان رشته تاريخ شمسي را جهت استفاده در زبانهاي برنامه‌سازي استخراج نمود. البته توجه كنيد كه مي‌بايست از انواع WideString يا UTFx استفاده شود.

در هر صورت اگر هدف شما نمايش تاريخ شمسي در كنار ساعت ويندوز باشد، اين ابزار راه‌حل مناسبي است.

كاربرد فعلي اين نرم‌افزار، دريافت تاريخ شمسي جاري (همان روز) به صورت سراسري (در سيستم عامل) بوسيله توابع با خروجي LongTimeFormat و ذخيره آن به صورتي غير از DateTime است. در صفحات Detail, Properties و غيره، تاريخ به فرمت Double ذخيره شده بوده و براي نمايش Recode مي‌گردد كه به همين دليل در همان زمان تاريخ شمسي جاري به آن پيوست مي‌شود. در مورد فرمت نمايش تاريخ هم، محدوديت 14 كاراكتر يونيكد در فيلد مربوطه وجود دارد.


این هم برنامه تاریخ شمسی برای ویندوزxp



 

پیوست‌ها

  • 22.3 کیلوبایت بازدیدها: 97
  • 8.7 کیلوبایت بازدیدها: 95
بالا