مطالب
خواندنی‌های 16 تیر

اس کیوال سرور

توسعه وب

دات نت فریم ورک

دبلیو پی اف و سیلور لایت

سی و مشتقات

شیرپوینت

کتاب‌های رایگان

مای اس کیوال

متفرقه

وب سرورها

پی اچ پی

مسیرراه‌ها
WPF
          نظرات مطالب
          Url Routing در ASP.Net WebForms
          گوگل اینقدر هوشمند هست که بتونه تشخیص بده الان درخواست یک فایل word رو داده ولی جوابش html هست یعنی یکجا کار مشکل داره و نمره‌ی منفی بهت می‌ده. بهتره وقت بذاری و مباحث اصلی SEO رو در سایت بخونی.
          مطالب
          افزونه فارسی به پارسی برای word 2007

          افزونه‌ی زیر کار مشخص کردن کلماتی که قابل تبدیل از فارسی به پارسی هستند را انجام می‌دهد (به صورت خودکار و در زمان تایپ) و همچنین امکان تبدیل خودکار آنها را نیز فراهم می‌کند.



          برای نصب آن باید به ترتیب زیر عمل کنید (مهم)
          لطفا این سه مرحله را به ترتیب انجام دهید در غیر اینصورت نتیجه نخواهید گرفت.
          همچنین بدیهی است که برنامه باید با دسترسی admin نصب شود.
          و همانطور که در عنوان این موضوع نیز ذکر گردید، این افزونه تنها برای MS-Word 2007 طراحی شده است.

          سورس کامل و جزئیات نحوه‌ی برنامه نویسی آن‌را در طی روزهای آینده در این بلاگ مشاهده خواهید کرد.

          پس از نصب به گزینه‌ی word options مراجعه کنید: (جهت اطمینان از نصب آن)



          این افزونه را باید در لیست مربوطه مشاهده نمائید:



          هر زمانیکه مایل به عدم استفاده از آن باشید با کلیک بر روی دکمه Go ، در صفحه بعد می‌توان افزونه را حذف کرد:



          مثالی دیگر از نحوه‌ی بکارگیری این افزونه:


          مطالب
          تولید فایل Word بدون نصب MS Word بر روی سرور

          یکی از مواردی که ممکن است در محیط کاری با آن برخورد داشت، تقاضای تولید فایل word یک گزارش با فرمتی مشخص از یک برنامه ASP.Net است. برای مثال یک قالب درست کرده‌اند که header‌ و footer و کلا یک فرمت رسمی دارد. الان برنامه شما باید این فایل word رسمی را با گزارشی که تولید می‌کند پر کند. حالا اینجاست که گرفتاری برنامه نویس شروع می‌شود! روی سرور باید word نصب باشد تا توسط اشیاء COM آن بتوان یک چنین کارهایی را آن‌هم با ASP.Net که به صورت پیش فرض کمترین سطح دسترسی را روی سیستم دارد انجام داد. یا اینکه باید به سراغ کامپوننت‌های تجاری رفت و حالا اینجا با این وضع تحریم و غیره چگونه بتوان آنها را خریداری کرد یا شاید احتمالا در سایت‌های وارز بتوان نسخه تکه پاره شده آنها را یافت. مشکلی هم که این نوع کامپوننت‌ها دارند این است که ممکن است سال دیگر اصلا ساپورت نشوند. محصولات مایکروسافت هم که مرتبا در حال به روز رسانی هستند. در این حالت برنامه متکی به این نوع کامپوننت‌های تجاری سورس بسته در همان نگارش قبلی خود مجبور است باقی بماند.
          خوشبختانه با ارائه آفیس 2007 و فرمت OpenXML فایلهای آن، این مشکل تقریبا مرتفع شده است. مایکروسافت نیز برای سهولت تولید این نوع اسناد، OpenXML SDK را ارائه داده است که از آدرس زیر قابل دریافت است:
          Open XML Format SDK 1.0

          البته پیش نمایش نگارش دو SDK آن نیز موجود است که در مطلب جاری به آن پرداخته نخواهد شد.

          فایل‌های office 2007 از یک فایلzip تشکیل شده از چند فایل xml داخل آن، ایجاد شده‌اند. برای مثال یک فایل docx را با winrar یا امثال آن باز کنید (تصویر زیر):



          برای کار با اینگونه اسناد باید با اصطلاحات زیر آشنا شد:
          Package : فایل zip شما (همان فایل برای مثال docx) اینجا یک بسته نام دارد.
          Parts : اجزای این بسته که همان فایل‌های آن هستند، parts نامیده شده اند.
          Relations : اگر به فایل‌های موجود در یک بسته دقت کنید، فایلهایی با پسوند rels را خواهید دید که بیانگر نحوه ارتباط Parts با یکدیگر هستند.
          Relations Ids: هر ارتباط با یک ID منحصربفرد تعریف می‌گردد.

          اگر علاقمند باشید که پوستری را در این رابطه مشاهده نمائید می‌توان به آدرس زیر مراجعه نمود.
          Open XML Developer Map

          نحوه استفاده از OpenXML SDK در دات نت:
          ابتدا باید ارجاعی را به فایل DocumentFormat.OpenXml.dll که پس از نصب در مسیر OpenXMLSDK\1.0.1825\lib قرار گرفته است به پروژه افزود. سپس نیاز است تا ارجاعی به کتابخانه WindowsBase نیز به برنامه افزوده شود (تصویر زیر). افزودن ارجاعی به این کتابخانه جهت کامپایل برنامه ضروری است (شکل زیر).


          تا اینجا ارجاعات برنامه به صورت زیر خواهند بود:



          یک مثال ساده:
          قصد داریم یک فایل docx ساده را با استفاده از OpenXML SDK ایجاد کنیم. در مثال زیر فرمت متغیر docXml را می‌توان با ایجاد یک فایل docx ساده در word و سپس باز کردن بسته فشرده شده آن و مشاهده محتوای فایل word\document.xml بدست آورد.
          using System.IO;
          using System.Text;
          using DocumentFormat.OpenXml;
          using DocumentFormat.OpenXml.Packaging;

          namespace OpenXMLTestApp
          {
          class CWord
          {

          public static void CreateDocument(string documentFileName, string text)
          {
          using (WordprocessingDocument wordDoc =
          WordprocessingDocument.Create(documentFileName, WordprocessingDocumentType.Document))
          {
          MainDocumentPart mainPart = wordDoc.AddMainDocumentPart();

          string docXml =
          @"<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>
          <w:document xmlns:w=""http://schemas.openxmlformats.org/wordprocessingml/2006/main"">
          <w:body><w:p><w:r><w:t>#REPLACE#</w:t></w:r></w:p></w:body>
          </w:document>";

          docXml = docXml.Replace("#REPLACE#", text);

          using (Stream stream = mainPart.GetStream())
          {
          byte[] buf = (new UTF8Encoding()).GetBytes(docXml);
          stream.Write(buf, 0, buf.Length);
          }
          }
          }
          }
          }

          و نحوه استفاده از آن می‌تواند به صورت زیر باشد:

          CWord.CreateDocument("test.docx", "سلام دنیا");

          این کتابخانه کار ایجاد فایل‌های xml ، تولید روابط بین‌ آنها و همچنین بسته بندی و zip کردن نهایی را به صورت خودکار انجام می‌دهد.

          برای مطالعه بیشتر می‌توان به منابع زیر مراجعه نمود:

          یک ویدیوی آموزشی رایگان از مایکروسافت
          دریافت

          سؤالات متداول در MSDN
          http://msdn.microsoft.com/en-us/library/bb491088.aspx
          البته اگر پس از نصب SDK به پوشه doc آن مراجعه نمائید، این سؤال و جواب‌ها را در فایل راهنمای chm آن نیز می‌توان پیدا کرد.

          مثال دیگری در مورد ایجاد یک گزارش از بانک اطلاعاتی و گرفتن خروجی docx از آن
          http://openxmldeveloper.org/articles/GenerateWordTable.aspx
          البته این مثال خیلی قدیمی است و قسمت‌های کار با پکیج را با SDK‌ ارائه شده می‌توان به صورت خودکار انجام داد. اما حداقل نحوه تولید جداول استاندارد OpenXML را می‌توان از آن ایده گرفت.

          مثالی در مورد نحوه قرار دادن عکس در فایل docx تولیدی

          همچنین مثال‌های بیشتری را در وبلاگ‌های مربوطه می‌توان یافت:
          http://blogs.msdn.com/brian_jones/
          http://blogs.msdn.com/ericwhite/default.aspx


          نظرات مطالب
          افزونه فارسی به پارسی برای word 2007
          اگر در پایان کار این خطا را می‌گیرید احتمالا یا word مورد استفاده 2007 نیست یا قسمت به روز رسانی سیستم درست نصب نشده.
          فایل‌های به روز رسانی سیستم در مسیر زیر موجود هستند
          c:\Program Files\pDateHelperSysUpdate
          یکبار جهت اطمینان بیشتر اینها را دستی هم اجرا و نصب کنید.
          بعلاوه در مسیر زیر
          c:\Program Files\FarsiToParsi
          فایل اصلی نصب همان FarsiToParsi.vsto است که پس از نصب بسته به روز رسانی سیستم و وجود word 2007 با دوبار کلیک کردن بر روی آن، کار نصب افزونه را انجام می‌دهد.

          اگر با این موارد مشکل برطرف نشد، لطفا یک print screen از تصویر خطا را مثلا در tinypic.com آپلود کند و اینجا لینک بدهید.

          با سپاس
          مطالب
          بهبود شمسی ساز تاریخ اکسپلورر ویندوز جهت سازگاری با ویندوزهای سری 8
          این مطلب دنباله‌ی «تغییر عملکرد و یا ردیابی توابع ویندوز با استفاده از Hookهای دات نتی» است.
          روش ارائه شده در آن با ویندوز‌های XP تا 7 نگارش‌های 32 بیتی و 64 بیتی، بدون مشکل کار می‌کند. اما تاثیری بر روی ویندوز 8 و نگار‌ش‌های پس از آن نداشت.

          تغییرات توابع GetDateFormatW و GetTimeFormatW در ویندوز اکسپلورر ویندوز 8

          چه برنامه‌ی ExplorerPCal و چه API Monitor را اگر با فعال سازی توابع GetDateFormatW و GetTimeFormatW اجرا کنید، هیچ خروجی خاصی را مشاهده نخواهید کرد. در ابتدا به نظر می‌رسد که ساختار ویندوز شاید تغییر کرده‌است ... ولی اینطور نیست. فقط اینبار بجای فراخوانی این توابع از kernel32.dll، از یک dll مخفی در پوشه‌ی System32 استفاده می‌شود. روش پیدا کردن آن نیز به صورت زیر است:
           "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\dumpbin.exe" /imports c:\windows\explorer.exe > explorer.imports.txt
          کار dumpbin.exe موجود در پوشه‌ی VC\bin ویژوال استودیو، استخراج import table و export table یک فایل اجرایی و یا یک dll بومی ویندوز است. به این ترتیب می‌توان دریافت یک فایل exe، از چه dll هایی استفاده می‌کند و همچنین از این dllها، کدامیک از توابع آن‌ها را مورد استفاده قرار داده است.
          اگر خروجی این برنامه را که اکنون در فایل explorer.imports.txt ذخیره شده‌است، بررسی کنیم، به نتیجه‌ی زیر خواهیم رسید:
              api-ms-win-core-datetime-l1-1-1.dll
                       14015E848 Import Address Table
                       1401613E0 Import Name Table
                               0 time date stamp
                               0 Index of first forwarder reference
          
                                     2 GetDateFormatW
                                     1 GetDateFormatEx
                                     4 GetTimeFormatEx
          بله. در ویندوزهای سری 8، دیگر از کرنل32 برای دریافت GetDateFormatW استفاده نمی‌شود. اینبار از dll ایی به نام api-ms-win-core-datetime-l1-1-1.dll کمک گرفته شده‌است. این dll در پوشه‌ی System32 با خاصیت مخفی قرار دارد.
          بنابراین تنها تغییری که باید در برنامه‌ی ExplorerPCal داده شود، اضافه کردن مداخل جدید فوق است. در ویندوزهای قبل از 8، از نگارش‌های Ex استفاده نمی‌شد. در اینجا هم از نگارش‌های W و هم Ex دار استفاده شده‌است.

          اگر خواستید این تغییرات را با برنامه‌ی API Monitor بررسی کنید، فایل جدید api-ms-win-core-datetime-l1-1-1.xml ذیل را در پوشه‌ی API\Windows آن کپی نمائید تا مداخل api-ms-win-core-datetime-l1-1-1.dll نیز به مجموعه‌ی تعاریف آن اضافه شوند.
          api-ms-win-core-datetime-l1-1-1.xml

          حاصل نهایی، فایل‌های اجرایی و سورس بهبود یافته‌ی برنامه را از اینجا می‌توانید دریافت کنید:
          شمسی ساز تاریخ اکسپلورر ویندوز

          تاثیر آن‌را نیز بر روی Explorer ویندوز 8، در تصاویر ذیل می‌توانید ملاحظه نمائید:

          ساعت و تقویم نوار وظیفه‌ی ویندوز

          تاریخ تغییرات فایل‌ها، در نمایش لیستی ویندوز اکسپلورر

          تاریخ ایجاد و تغییرات یک فایل در خواص آن

          تاریخ نمایش داده شده به همراه charm bar ویندوز 8