m0911.com · web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل...

133
http://m0911.wordpress.com وان ن ع ل ي ا وب م دوز ن ي ل و م م عا ت س سي راي ب از ز ف رم ا ب عه وس ت ي صل ا وان ن عWindows Mobile Application Development دي ن كل مات كلC#, Win Mobile, .NET, Dev, WinForm, GPS, Custom Control, XML, , SQL-Server, SQL-CE, AJAX, Web ف ل6 و مmstruys, dougturn ع ج ر مhttp://www.codeproject.com ح ط س دي ن مب م ج ر مت يله ل دا ن ع هدي م( http://m0911.wordpress.com ) د د ج م ازL شN يO ي ا ح ي از ب20 رماه ت ت1389 حه ف صاد عد ت88 ) ي س از ف( ل ها ص ف ن ي او ن ع1 . امه رب ب ن ي ن س خ ي اد ج ي ا2 . ه ساز يj بL س k ت ير ب گاه و مد ت س د ه ساز يj بL س3 . ا امه ب رب ب عه ي وس تWinForm 4 . ده از ا ف ت س و ا يL س از ف س رل تO ن ك ودن ز ف اGPS 5 . ر ب دمه اي ف مSQL Server CE 6 . از ز ف رم ا ب ب ص ن گاه و ت س د ب ي مب ا7 . ل ي ا وب م وت راي ب عه وس ت) ي س لي گ نا( ل ها ص ف ن ي او ن ع1. Creating your first application 2. Device Emulator and Device Emulator Manager 3. Basic WinForm App Development for Windows Mobile Devices 4. Adding Custom Controls and Making Use of GPS Hardware 5. Intro to using SQL Server CE 1

Upload: others

Post on 31-Dec-2019

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

توسعه نرم افزار براي سيستم عامل ويندوز موبايلعنوانWindows Mobile Application Developmentعنوان اصلي-C#, Win Mobile, .NET, Dev, WinForm, GPS, Custom Control, XML, , SQLكلمات كليدي

Server, SQL-CE, AJAX, Webmstruys, dougturnمؤلفhttp://www.codeproject.comمرجع مبتديسطح

(http://m0911.wordpress.com) مهدي عبداللهيمترجم تاريخ انتشار

مجدد1389 تيرماه 20

88تعداد صفحه عناوين فصل ها )فارسي(

ايجاد نخستين برنامه.1شبيه ساز دستگاه و مديريت شبيه ساز.2WinFormتوسعه ي برنامه با .3GPSافزودن كنترل سفارشي و استفاده از .4SQL Server CEمقدمه اي بر .5امنيت دستگاه و نصب نرم افزار.6توسعه براي وب موبايل.7

عناوين فصل ها )انگليسي(1. Creating your first application2. Device Emulator and Device Emulator Manager3. Basic WinForm App Development for Windows Mobile Devices4. Adding Custom Controls and Making Use of GPS Hardware5. Intro to using SQL Server CE6. Device Security and Application Deployment7. Mobile Web Development

مقدمه ي مترجم قسمتي برنامه نويسي ويندوز موبايل است که در اسفند7اين کتاب الکترونيکي در اصل يک سري مقاله ي

بخش به بخش ترجمه و در وبالگم منتشر نمودم. ليکن براي راحتي کار خواننEEدگان1389 و فروردين 1388ترجيح دادم که همه را در يک فايل گردآوري و باز نشر نمايم.

نويسنده گان اين مجموعه مقاله از کارکنان کمپEEاني ميکروسEEافت هسEEتند. يعEEني همEEان کمپEEاني کEEه وينEEدوز موبايEEل را توليEEد و منتشEEر نمEEوده اسEEت. از اين رو مطمئنم کEEه مطEEالب و محتويEEات اين اثEEر بEEراي برنامEEه

نويساني که مي خواهند وارد دنياي ويندوز موبايل بشوند، سودمند خواهد بود.

يEا بEهhttp://m0911.wordpress.comخوشحال خواهم شد که نظر و پيشنهاد خEود را از طريEق آدرس وبالگم ارسال فرماييد[email protected]آدرس ايميل

فهرست مطالب4......................................................................................................................................................فصل نخست

5..................................................................... و ابزار هاي اضافي توسعه نرم افزار2008نصب ويژوال استوديو

1

Page 2: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com7..............................................................................................................ايجاد نخستين برنامه ي ويندوز موبايل

11.........................................................................................................................................................فصل دوم

12............................................................................................................نگارش هاي مختلف شبيه ساز دستگاه

13................................................................................2008اجراي شبيه ساز دستگاه از داخل ويژوال استوديو

14...............................................................................................................تنظيم مشخصات شبيه ساز دستگاه

15...................................................................استفاده ي هم زمان از شبيه ساز دستگاه و شبيه ساز تلفن همراه

16............................................................................................درست كردن اتصال داخل شبيه ساز تلفن همراه

17..................................................................................................................................ارسال و دريافت پيامك

18....................................................................كنترل شبيه ساز دستگاه توسط برنامه ي مدير شبيه ساز دستگاه

19.........................................................................ذخيره ي تنظيمات شبيه ساز دستگاه براي استفاده هاي بعدي

20.................................................................استفاده از شبيه ساز دستگاه براي آزمايش تنظيمات امنيتي مختلف

22........................................................................................................................خودكار سازي مدير شبيه ساز

24.......................................................................................................................................................فصل سوم

25..............................................................................................................دستگاه هاي ويندوز موبايل استاندارد

25........................................................................................................... حرفه اي٦دستگاه هاي ويندوز موبايل

26............................................................................. حرفه اي٦طراحي يك واسط كاربر ساده در ويندوز موبايل

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

27.....................................................................................................................بندكشي يا ثابت كردن كنترل ها

30...................................................................................طراحي برنامه اي كه روي دستگاه هاي مختلف كار كند

31...........................................................................................................................................ارث بري فرم ها

34....................................................................................................................................توجه به منابع سيستم

36.....................................................................................................................................................فصل چهارم

37...........................................................................................افزودن كنترل هاي سفارشي به برنامه ي خودتان

37.........................................................................................................................كنترل هاي كاربر )سفارشي(

39..............................................................................................................................كنترل هاي ارث بري شده

41.....................................................................................................................................كنترل هاي سفارشي

44...................................................................................................استفاده از كنترل سفارشي داخل يك برنامه

45.....................................................................................افزدون اطالعات مربوط به محل جغرافيايي به برنامه

48...............................................................به روز رساني كنترل هاي واسط كاربر در يك برنامه ي چند پردازشي

49..............................................................................................آزمايش برنامه هاي حساس به محل جغرافيايي

51.......................................................................................................................................................فصل پنجم

SQL Server Compact Edition.........................................................................................................................52

SQL Server 2005 Compact Edition................................................................................................52زير ساخت

53.................................................................................................................استفاده از ديتاست هاي داراي نوع

58.......................................................................................................... با نوع دادهSqlCeResultSetsاستفاده از

59......................................................................................................... هاي با نوع دادهSqlCeResultSet: 31شکل

65......................................................................................................................................................فصل ششم

2

Page 3: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com66.............................................................................................................................................................مقدمه

66..............................................................................................................امنيت در دستگاه هاي ويندوز موبايل

66..............................................................................................................................مجوزهاي نصب نرم افزار

67....................................................................................................................................تأييديه هاي نرم افزار

67...........................................................................................................................سطوح دسترسي نرم افزار

67................................................................................................................................تنظيمات امنيتي دستگاه

DLL..........................................................................................................68مجوز اجرا و فايل هاي كتابخانه ي

69......................................................................................آزمايش برنامه در حالت هاي مختلف تنظيمات امنيتي

71..................................................................................................................................................نصب برنامه

72.................................................................................................................................به روز رساني برنامه ها

72................................................................................................................................نصب يك برنامه ي جديد

76.....................................................................................................................................به روز رساني برنامه

76.......................................................................................................: به روز رساني خودكار در عمل39شکل

79.......................................................................................................................................................فصل هفتم

80.......................................................................................نرم افزار هاي تحت وب و پشتيباني از ويندوز موبايل

81..............................................................................................................حالت هاي مختلف نمايش وب سايت

81.........................................................................................................................تشخيص قابليت هاي مرورگر

83................................................................................................تشخيص ويندوز موبايل استاندارد از پروفشنال

87................................................................................................................................................فهرست تصاویر

فصل نخستايجاد نخستين برنامه

3

Page 4: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.comمقدمه

نگارش حرفه اي به شEما اين امكEEان را مي دهEEد كEEه نEEرم افزارهEEايي بEEه زبEان هEEاي2008ويژوال استوديو C#/Visual++( يا كدهاي مديريت شده )C/Cمعمولي ) Basic .NETلEEتم عامEEا سيسEEاي بEEتگاه هEEبراي دس )

ويندوز موبايل توسعه دهيد.

را همEEراه بEEا ابزارهEEاي توسEEعه ي نEEرم افEEزار در2008در اين مقاله شما ياد مي گيريد كه ويژوال اسEEتوديو اين سيسEEتم عامEEل ايجEEاد٦ويندوز موبايل نصب كنيد و نخستين برنامه ويندوز موبايل خEEود را بEEراي نگEEارش

نماييد. به عالوه با شبيه ساز دستگاه ويندوز موبايل آشنا مي شويد كEه امكEEان آزمEايش برنامEه هEاي وينEدوز موبايل را به شما مي دهد و شما مجبور نيستيد كه براي اين كار به طور فيزيكي، يك دستگاه واقعي ويندوز

( داشته باشيد.Smart Phone يا Pocket PCموبايل )مثال

و ابزار هاي اضافي توسعه نرم افزار2008نصب ويژوال استوديو Smart را با تنظيمات پيش فEEرض نصEEب نماييEEد، گزينEEه ي 2008اگر ويژوال استوديو Device Development

براي توسعه ي نرم افزار ويندوز موبايل فعال خواهد بود. هر دو برنامه ي ويژوال اسEEتوديو و راهنمEEاي آن )MSDNتفاده از آنEEا اسEEيه مي كنم بEEه توصEEد كEEايش مي دهنEEپس از نصب يك لينك براي به روز رساني نم )

آخرين به روز رساني ها و سرويس پك ها را نصب نماييد. را انتخابSmart Device Project گزينه ي File – New Projectپس از ورود به محيط ويژوال استوديو از منوي

Visual# و Cنماييد. اين گزينه در هر دو زبان Basic .NET .ك قابل دسترسي استEEما يEEه شEEبا فرض اين ك ايجEاد مي نماييEد مطلب را ادامEه مي دهيم. بEEدين منظEور در٦# در ويندوز موبايل نگارش Cپروژه به زبان

را انتخاب نماييد. همانند بقيه ي انواع پروژهSmart Device# را باز كرده، C گزينه ي Project Typesپنجره ي ها نام و محل ذخيره سازي آن به طور پيش فرض تعيين مي گردد و در عين حال شما خواهيEEد توانسEEت كEEه نام و محل دلخواه خود را براي پروژه تان تعيين نماييد. پس از تأييد اين اطالعات پنجEEره ي جديEEد بEEا عنEEوان

Add New Smart Device Projectجهت اضافه كردن انواع مختلف پروژه هاي ويندوز موبايل نمايش داده مي را بEEاز كنيEEد. اگEEر Target Platformقبل از ايجاد نخستين برنامه ي ويندوز موبايل، فهرسEEت بازشEEو ي شود.

را به صورت استاندارد نصب كرده باشيد، فقط انواع محدودي از دستگاه هاي ويندوز2008ويژوال استوديو Windowsموبايل را خواهيد ديد كه Mobile بين آنها نيست. براي اين كه بتوانيد در سيستم مذكور پEEروژه 6

Windowsايجاد نماييد بايد ابزار توسعه ي آن يعني Mobile 6 SDKعهEزار توسEEيد. اين ابEرا نصب كرده باش شامل مستندات، برنامه هاي مثال، فايل هاي كتابخانه اي، تصاوير محيط شبيه ساز و ابEEزار هEEاي الزم را بEEه ويژول استوديو اضافه مي نمايد تا به كمك آنها بتوانيEEد برنامEEه هEEاي مEEورد نظرتEEان را توليEEد كنيEEد. اين ابEEزار توسعه را به صورت مجزا بايد نصب كرده باشيد چون بعد از ارايه ويEEژوال اسEEتوديو بEEه بEEازار، و بEEه صEEورت

( جديدتر و متنوع تر نيز بعدها قابل دسEEترسSDKمستقل توليد و روانه ي بازار شده اند. ابزار هاي توسعه )Addخواهد بود. در پايين پنجره ي New Smart Device ProjectتيEEفحه ي اينترنEEلينك ورود به ص Windows

Mobile Developer Centerر ازEEد. اگEEقرار دارد كه ابزارهاي جديدتر را مي توانيد از اين صفحه دريافت نمايي Windowsقبل ابزار توسعه ي Mobile را2008 نصEب و پس از آن 2005 را در محيEط ويEژوال اسEتوديو 6

قابل دسترس نخواهد بود.2008نصب نموده ايد بايد ابزار توسعه را مجدد نصب كنيد و گرنه در محيط

4

Page 5: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

New Smart Device Project: پنجره ي 1شکل

را نصEEب كEEرده٦ ابزار توسعه ي ويندوز موبايEEل Professional و Standardحال اگر حداقل يكي از دو نگارش بنويسيد.٦ايد مي توانيد نخستين برنامه ي خود را براي دستگاه با سيستم عامل ويندوز موبايل

5

Page 6: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

ايجاد نخستين برنامه ي ويندوز موبايلWindowsبراي اين برنامه بايد گزينه ي Mobile 6 Professional SDK را در بخش Target PlatformابEEانتخ

نماييد. البته شما هنوز مي توانيد براي تعداد زيادي از دستگاه هEEاي وينEEدوز موبايEEل و دسEEتگاه هEEاي عمEEوميWindows CE لEEدوز موبايEEتوديو٦ برنامه بنويسيد. با نصب هر دو نگارش ابزار توسعه ي وينEEژوال اسEEدر وي

شما مي توانيد براي دستگاه هاي زير برنامه بنويسيد:2008

Pocket PC 2003 Windows CE (non Windows Mobile devices) Windows Mobile 5.0 Pocket PC Windows Mobile 5.0 Smartphone Windows Mobile 6 Professional Windows Mobile 6 Standard

NETدر ويژوال استوديو مي توانيد با دو نگارش مختلEEف . Compact Framework –ه اي ازEEر مجموعEEه زيEEك . برنامه بنويسيد. –( است Smart Device براي توليد نرم افزار دستگاه هاي هوشمند )NETفريم ورك كامل .

NET Compact Framework ايEEارش هEEتوديو 3.5 و 2.0 را در نگEEژوال اسEEط ويEEد در محيEE2008 مي تواني استفاده نماييد.

برنامه بنويسيدNET Compact Framework.اگر مي خواهيد براي دستگاه هاي قديمي تر يا نگارش هاي قبلي را نصب كنيد كه البته خEEارج از حوصEEله ي اين مطلب مي باشEEد. ليكن شEEما مي2005بايد ويژوال استوديو

را در يك سيستم نصب نماييد.2008 و 2005توانيد هم زمان نگارش هاي مراحل زير را انجام دهيد:Smart Deviceبراي ايجاد يك پروژه ي

شويد.2008وارد محيط ويژوال استوديو .1 انتخاب نماييد.File->New را از منوي Projectگزينه ي .2 را انتخاب نماييد.Smart Device# و سپس Visual C ايتدا Project typesدر بخش .3 ١ را بزنيEEد. پنجEEره ي ديگEEري مطEEابق شEEكل OKنام پروژه و محل ذخيره سازي آن را تعEEيين كEEرده، .4

Target(، ابEEزار مEEورد اسEEتفاده )Templateنمايش داده مي شود كEEه در آن، نEEوع پEEروژه ) platformو ) تعيين خواهيد كرد.NET Compact Frameworkنگارش .

انتخاب نماييد.Windows Mobile 6 Professional SDK گزينه يTarget Platformدر بخش .5 راNET Compact Framework Version 3.5 گزينه ي .NET Compact Framework versionاز فهرست ..6

انتخاب نماييد. را انتخاب نماييد.Device Application الگوي Templatesاز فهرست .7 ايجاد مي شود، كه شامل:Smart Device solution را زديد پروژه ي OKبعد از اين .8

.مرجع هاي مربوط به اسمبلي هاي مورد استفاده در برنامه پرونده يAssemblyInfo.csكه اطالعات شركت، محصول نرم افزاري و نگارش آن را در اين

پرونده ذخيره مي نماييد. پرونده يForm1.cs كه حاوي كد به زبان ويژوال C.براي واسط كاربري اوليه ي برنامه است # پرونده يProgram.cs حاوي كد به زبان ويژوال C #كه در واقع نقطه ي شروع اجراي برنامه ي

شما است.

6

Page 7: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com را به صورت زير2008اگر همه چيز خوب پيش رفته باشد، شما محيط طراحي فرم ويژوال استوديو

خواهيد ديد.

2008: محيط طراحي فرم ويژوال استوديو 2شکل

را مي بينيEEد. بخش بEEزرگ سEEمت چپ2008 چند بخش مهم از محيط طراحي ويEEژوال اسEEتوديو ٢در شكل صفحه كه شكل يك دستگاه موبايل با سيستم عامل ويندوز را نشان مي دهد و در واقع به جEEاي طEEراح فEEرم در برنامه هاي معمولي است. شما مي توانيEEد كنEEترل هEEاي مEEورد نيEEاز واسEEط كEEاربري را از جعبEEه ابEEزار آن

در محل مورد نظر قرار دهيد.Form1انتخاب كرده، داخل

Solutionپنجره ي سمت راست باال به نام Explorer ما– است كه تمام پروژه هاEEه ي شEEي از برنامEEه بخضEEك treeهستند - و فايل هاي داخل هر كدام از آنها را به صورت نماي درخEEتي ) viewد. در بخشEEان مي دهEEنش )

SolutionپEEايين پنجEEره ي Explorer وانEEا عنEEره ي بEEما پنجEEش PropertiesدEEه در آن مي توانيEEد كEEرا مي بيني مشخصات هر كدام از كنترل هاي انتخاب شده ي واسط كاربري را ببينيد و تغيير دهيد.

راProperties Window را در صفحه ويژوال استوديو نداريد مي توانيد گزينه ي Properties: اگر پنجره ي نكته فعال نماييد.Viewدر منوي

Target فهرست باز شوي 2008بخش مهم ديگر در محيط ويژوال استوديو Device كلEEا٢ است كه در شEEب خط قرمز بيضي شكل مشخص شده است. در اينجا شما مي توانيد تعيين كنيد كه برنامه تان را بEEراي اجEEرا

در كدام دستگاه يا كدام شبيه ساز توسعه مي دهيد.

7

Page 8: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.comبراي اين كه امكانات عملياتي به برنامه تان اضافه كنيد مراحل زير را انجام دهيد.

قرار دهيد.Form1يك كنترل دكمه از جعبه ابزار بكشيد و روي .1 تغيير دهيد.btnClickMe به button1 را از مقدار پيش فرض Name مشخصه ي Propertiesدر پنجره ي .2! تغيير دهيد.Click ME به button1 را از Textدر همان پنجره مشخصه ي .3 قرار دهيد و طوري تغيير اندازه بدهيد كه تمامForm1يك كنترل برچسب از جعبه ابزار بكشيد و روي .4

را بپوشاند.Form1عرض تغيير دهيد.lblInfo به label1 را از مقدار پيش فرض Name مشخصه ي Propertiesدر پنجره ي .5 را خالي كنيد.Textدر همان پنجره مقدار مشخصه ي .6 Form1 ظEاهر شEود روي محEEل دلخEواهي از Properties در پنجEEره ي Form1براي اين كEه مشخصEات .7

كليك كنيد. كEEه در گوشEEه ي– OK قرار دهيد تا با كليك روي دكمEEه ي False را MinimizeBoxمقدار مشخصه ي .8

اجراي برنامه تمام شود.– هست Form1سمت راست باالي را به دكمه اضافه نماييد.Click! دابل كليك كنيد تا مدير رويداد Click MEروي دكمه ي .9در محلي از ويرايشگر كد كه مكان نما قرار دارد، كد زير را اضافه نماييد..10

lblInfo.Text = "Button '" + btnClickMe.Text + "' clicked at " + DateTime.Now.ToLongTimeString();

كه هر كدام از–: شما حين نوشتن كد، قابليت نمايش رنگي كلمات كليدي و ... محيط ويرايشگر كد را نكته –دستورها و عبارات تايپ شده را براي راحتي تشخيص درست بودن آن، بEEه رنEEگ خاصEEي نمEEايش مي دهEEد

. نيز شما را در وارد كردن دستور العمل ها كمك خواهد كرد Intellisenseمشاهده خواهيد كرد. همچنين

8

Page 9: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.comبراي آماده سازي و اجراي برنامه تان مراحل زير را انجام دهيد.

هيچ خطايي در تايپ را انتخاب كنيد. با فرض اين كه Build Solution گزينه ي Buildاز منوي .1 2008 در نوار وضعيت ويژوال استوديو Build succeededدستورهاي برنامه نداشته باشيد پيغام

نمايش داده خواهد شد. Target Deviceدر فهرست بازشو ي Windows Mobile 6 Classic Emulatorبررسي كنيد كه گزينه ي .2

انتخاب شده باشد.. را انتخاب كنيدStart Debugging گزينه ي Debugاز منوي .3

NET Compact. اجرا مي شود. در صورت لزوم ٦بعد از چند لحظه شبيه ساز كالسيك ويندوز موبايل نگارش Framework در شبيه ساز كپي و نصب خواهد شEد. در مرحلEه ي پايEEاني، برنامEEه ي شEEما نصEEب و اجEEرا 3.5

خواهد شد.

: نخستين برنامه شما در حال اجرا در شبيه ساز دستگاه ويندوز موبايل3شکل

براي آزمايش اجراي برنامه تان مراحل زير را انجام دهيد.

را كليك نماييد. متني!Click ME بشويد و دكمه ي –كه در شبيه ساز در حال اجرا است –وارد برنامه .1را كه در برچسب روي فرم ظاهر مي شود، خواهيد ديد.

با هر بار كليك روي دكمه مي بينيد كه ساعت نمايش داده شده روي برچسب به روز مي شود. .2 را در گوشه ي سمت راست باالي صفحه ي برنامه كليك كنيد.OKبراي خروج از برنامه دكمه ي .3 برنامه ي شبيه ساز، آن را ببنديد.Fileاز منوي Save State and Exitبا انتخاب گزينه ي .4 خارج شويد.2008از ويژوال استوديو .5

9

Page 10: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

فصل دومشبيه ساز دستگاه و مديريت شبيه ساز

10

Page 11: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.comمقدمه

اگر شما توسعه دهنده ي برنامه هاي ويندوز موبايل باشيد حتما با شبيه سEEاز دسEEتگاه آشEEنا هسEEتيد. اين يEEك ابزار رايگان براي آزمايش اجراي برنامه هاي تان بر روي انواع مختلف دستگاه هاي با سيستم عامل وينEEدوز

موبايل با مدل هاي مختلف است؛ بدون اين كه نياز به تهيه ي دستگاه هاي واقعي باشد.

در اين مقاله شما با نحوه ي كار شبيه ساز دستگاه براي آزمايش برنامه هاي خود آشنا مي شEEويد و اين كEEه چگونه شبيه ساز را تنظيم نماييد تا دقيقا بتوانيد عملكرد ابزار را كنترل كنيد. بEEه عالوه چگEEونگي اسEEتفاده از شبيه ساز را به صورت تركيبي با تلفن همراه نيز خواهيد آموخت كEه بتوانيEEد تمEEاس هEاي تلفEني و ارسEال و دريافت پيامك را آزمايش نماييد. در نهايت خواهيد ديد كه چگونه مي توانيد به كمك برنامه نويسEEي، از مEEدير

شبيه ساز براي كنترل شبيه ساز هاي مختلف از داخل يك برنامه ي دسكتاپ استفاده كنيد.

نگارش هاي مختلف شبيه ساز دستگاه عرضه شد. اين ابزار به شما امكEEان مي داد2005 شبيه ساز دستگاه همراه با ويژوال استوديو ١.0نگارش

بEEه محض ارايEEه ي نگEEارشكه بدون نياز به دستگاه واقعي ويندوز موبايل برنامه هاي خود را آزمEEايش كنيEEد. عرضه شد كه عملكرد و كارايي آن6 شبيه ساز نيز همراه با ابزار توسعه ي ويندوز موبايل 2.0 نگارش 0.١

، نگEEارش٦ گسترش يافت. در بخشي از مراحل نصب ابزار توسEEعه ي وينEEدوز موبايEEل ١.0نسبت به نگارش مي گردد. در واقع تمامي پروژه هاي ويندوز موبايل شما كه1.0 شبيه ساز دستگاه نيز جايگزين نگارش 2.0

توسعه داده ايد از نگارش جديد استفاده خواهند كرد. حتي اگر شما پالتفرم مقصEEد2005با ويژوال استوديو استفاده نماييEEد، بEEاز هم بهEEتر اسEEت كEEه2005 تعيين نكنيد و بخواهيد همچنان از نگارش ٦را ويندوز موبايل

را نصب كنيد تا نه فقط از سرعت باالتر بلكEEه از پيشEEرفت هEEاي آن٦حداقل يك ابزار توسعه ويندوز موبايل مانند امكان تنظيمات جزء به جزء براي بخش هاي خEاص دسEتگاه، يEا امكEEان شEبيه سEازي اتصEال بي سEيم

استفاده نماييد.

آخرين نگارش شEEبيه سEEاز دسEتگاه )در زمEEان نگEEارش اين مقالEEه( اسEت كEEه همEEراه بEEا ويEEژوال٠.٣نگارش عرضه شده است و به طور خودكار نگارش هاي قبلي نصEEب شEده روي سيسEتم شEما را بEEا2008استوديو

، از واسEEط هEEاي٠.٢، عالوه بر بهبود كارآيي نسبت بEEه نگEEارش ٠.٣نگارش جديد جايگزين مي نمايد. نگارش COMهEEق برنامEEا را از طريEEاز هEEبيه سEEترل شEEان كنEEمدير شبيه ساز دستگاه استفاده مي كند. به عالوه امك

نويسي براي موارد زير فراهم مي سازد:

( اجراي نمونهinstance)خودكارسازي اجراي شبيه سازهاتغيير تنظيمات شبيه ساز

11

Page 12: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

2008اجراي شبيه ساز دستگاه از داخل ويژوال استوديو وجود دارد. كEEافي اسEEت كEEه يكي از انEEواع2008چند روش براي اجراي شبيه ساز از داخل ويژوال استوديو

ويژه ي پالتفرم مقصد برنامه ي شEEما اسEEت، از داخEEل ويEEژوال اسEEتوديوSDKشبيه ساز ها را كه منطبق بر قبل از اجراي برنامه تان روي شبيه ساز انتخاب شده، برنامEEه انتخاب كنيد و برنامه تان را اجرا كنيد.2008

متصل2008تان كامپايل مي شود و شبيه ساز نيز اگر در حال اجرا نباشد، باال مي آيد و به ويژوال استوديو SQLمي شود. بعد از ساخته شدن برنامه ي اجرايي در صورت لزوم Server CE. تEEارش درسEEا نگEEهمراه ب

NET Compact Framework.به طور خودكار در پبيه ساز دستگاه اجرا خواهد شد

: برنامه ي ويندوز موبايل در حال اجرا روي شبيه ساز دستگاه4شکل

12

Page 13: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

تنظيم مشخصات شبيه ساز دستگاه اغلب اوقات ممكن است بخواهيد برنامه ويندوز موبايل تان را با تنظيمات مختلفي از دستگاه آزمايش كنيEEد. براي اين حالت ها شبيه ساز دستگاه اين امكان را بEEه شEما مي دهEEد كEEه تجهEEيزات مختلفي را شEبيه سEازي نماييد. مثال براي ميزان شارژ مشخصي از باتري كه بخواهيد برنامه تEEان را در حEEالت بEEاتري ضEEعيف امتحEEان كنيد. يا اين كه يك كارت شبكه ي مجازي را به كارت شEEبكه ي فEEيزيكي خEEود كEEه روي كEEامپيوتر تEEان هسEEت

( مجEEازي شEEبيه سEEاز را بEEه پEEورت ارتبEEاطي فEEيزيكي رويCOMمتصEEل نماييEEد و همچEEنين پEEورت ارتبEEاطي ) كامپيوترتان متصل نماييد. يا اين كه پوشه ي خاصي را بين كامپيوتر خود )كEEه روي آن برنامEEه را توسEEعه مي دهيد( و شبيه ساز )از طريق پنجره ي مشخصات( به اشتراك بگذاريد. پوشه ي اشتراكي بEه صEورت كEEارت

( داخل شبيه ساز دستگاه مشاهده خواهد شد. با استفاده از پوشه اشتراكي مي توانيدStorage Cardحافظه )فايل ها را بين شبيه ساز و كامپيوتري كه داريد برنامه تان را روي آن توسعه مي دهيد مبادله كنيد.

را انتخاب نماييد.Configure شبيه ساز گزينه ي Fileشبيه ساز از منوي پنجره ي مشخصات براي نمايش نEEيز مي توانيEEد همين پنجEEره ي2008 ويEEژوال اسEEتوديو Tools در منEEوي OptionsبEEا كليEEك روي گزينEEه ي

Device گزينEEه ي Optionsمشخصات را مشاهده نماييEEد. ابتEEدا در پنجEEره ي Tools ،ردهEEاز كEEرا ب Devicesرا كليEEك نماييEEد.Properties كليك كنيد. در پنجره اي كه باز مي شود شبيه ساز مورد نظر تان را انتخاب و روي

باز خواهد شد.Emulator Properties پنجره ي Emulator Optionsبا كليك روي

: تنظيم مشخصات شبيه ساز5شکل

13

Page 14: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

استفاده ي هم زمان از شبيه ساز دستگاه و شبيه ساز تلفن همراه موارد بسياري پيش مي آيد كه بخواهيد اجراي نرم افزار تان را در تلفن همراه آزمايش كنيد. مثال نرم افEEزار شما ممكن است شماره گيري تلفن يا ارسال و دريافت پيامEEك را انجEEام دهEEد. بEEراي اين مEEوراد شEEبيه سEEاز دستگاه بسيار مفيد خواهد بود چرا كه كمك مي كند تا بدون نياز به يك تلفن همراه واقعي تمامي حالت هاي

و باالتر قابل دسترس است. شبيه سEEاز تلفن همEEراه را٠.٢آن را آزمايش نماييد. شبيه ساز تلفن در نگارش نماييد.Start/All Programs / Windows Mobile 6 SDK / Tools / Cellular Emulatorاز منوي آن كه اجرا از پيش

شEEبيه سEEاز٠شبيه ساز دستگاه را همراه با شبيه ساز تلفن همراه استفاده نماييد، بايد پورت سريال شماره دستگاه را به پورت سريالي كEه در نEEوار وضEعيت برنامEه ي شEبيه سEاز تلفن همEEراه نمEايش داده مي شEود

را در صEEفحه ي مشخصEEات برنامEEه ي شEEبيه سEEاز مي٠ شما پورت سريال شماره ٣متصل نماييد. در شكل متصEEل شEده اسEت. پس از اتصEالCOM3بينيد كه براي ارتباط با برنامه ي شبيه ساز تلفن همراه به پEورت

( كنيد تا شبيه ساز تلفن همراه كار كند.resetپورت سريال بايد شبيه ساز دستگاه را راه اندازي مجدد )

: اتصال شبيه ساز تلفن همراه به شبيه ساز دستگاه6شکل

حال مي توانيد:

گرفتن شماره تلفندريافت تماس تلفني استفاده از اتصالGPRSداخلي شبيه ساز دستگاه براي اتصال به شبكه ارسال و دريافت پيامك 2انتخاب يكي از دو حالت شبكهG 3 وGپردازش فرمان هاي سطح پايين مودم

14

Page 15: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

درست كردن اتصال داخل شبيه ساز تلفن همراه پس از اتصال شبيه ساز دستگاه به شبيه ساز تلفن همراه، شما آزمEEايش هEEاي متنEEوعي را بEEا آن مي توانيEEد انجام دهيد. شما بالفاصله مي توانيد تماس تلفني و همچنين پيامك از / به شبيه ساز دسEEتگاه داشEEته باشEEيد.

از طريق شبيه ساز دسEتگاه درسEت كنيEEد. بEEراي يEEادگيري درسEتGPRSبه عالوه مي توانيد اتصال شبكه ي كردن اتصال شبكه در شبيه ساز دستگاه به آدرس زير مراجعه كنيد:

http://msdn.microsoft.com/en-us/library/bb158505.aspx

چند اتصال ديتا كه بين شبيه ساز دستگاه و شEEبيه سEEاز تلفن همEEراه فعEEال هسEEتند، مي بينيEEد. در٤در شكل پس زمينه ي شبيه ساز دستگاه، برنامه ي اينEEترنت اكسEEپلورر را مي بينيEEد كEEه يEEك وب سEEايت را بEEاز كEEرده

رسيده است، طبق آن چه در نوار وضعيت شبيه ساز دستگاه ميGPRSاست. اطالعاتي كه از طريق اتصال را بEEا اسEتفادهGPRS متصل شده است. شبيه ساز تلفن همراه، اتصال GPRSبينيد، به شما نشان مي دهد كه

از اتصال شبكه اي كامپيوتري كه روي آن اجرا شده است، فراهم مي كند.

شما برنامه ي مدير تماس شبيه ساز تلفن همراه را مي بينيد كه بEEا شEEبيه سEEاز دسEEتگاه، تمEEاس٤در شكل را Dial مي توانيد هEEر شEEماره تلفEEني را وارد نماييEEد و دكمEEه ي Phone Numberگرفته است. در جعبه متن

( را خواهيد ديد وincoming call )بزنيد. بالفاصله بعد از اين كار، داخل شبيه ساز دستگاه پيغام تماس وروديهمان شماره اي كه شما از داخل شبيه ساز تلفن همراه گرفته ايد نمايش داده خواهد شد.

: شبيه ساز دستگاه و شبيه ساز تلفن همراه در حال اجرا7شکل

15

Page 16: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

ارسال و دريافت پيامك يك قابليت مهم شبيه ساز تلفن همراه ارسال / دريافت پيامك به / از شبيه ساز دستگاه اسEEت. توجEEه كنEEدي كه صرف دريافت پيامك از طريق شبيه سEEاز دسEEتگاه مهم نيسEEت. بEEه محض دريEEافت پيامEEك، پس از اطالع

شبيه ساز دستگاه ذخEEيره مي گEEردد. در عين حEEال شEEما نEEيزinboxدادن به كاربر پيامك دريافتي در پوشه ي مي توانيد پيامك را از طريق برنامه ي خودتان دريافت كنيد. همين قابليت به شما امكانات متنوعي مي دهEEد به خصوص زماني كه شما بتوانيد يك برنامه را كه روي يك دستگاه ويندوز موبايل اجرا مي شEEود، از راه دور كنترل كنيد. يا برنامه ي شما پيامك را بEEه طEور انحصEEاري دريEEافت كEرده )بEEه دام انداختEEه(، راه ورود آن بEEه

داخل دستگاه ارسال نمايد.inboxسيستم را مسدود نمايد يا ابتدا آن را مسدود و سپس به پوشه ي پيامك براي كنترل برنامه تان استفاده مي كنيد، ممكن اس پيامك هاي بسياريبه ويژه در حالتي كه شما از

را به دستگاه ارسال نماييد. تركيب شبيه ساز دستگاه و شبيه ساز تلفن همراه براي چنين حالت هEEاي تسEEت برنامه هيچ هزينه اي نخواهد داشت و شما به شبكه ي فيزيكي تلفن همراه يا مثال دو سEEيم كEEارت و دو عEEدد گوشي و در نهايت هزينه ي پيامك به اپراتور تلفن همراه، نياز نخواهيد داشت. به دليل محEEدوديت اين مقالEEه براي توضيح شبيه ساز دستگاه، ما به جزئيات نحوه ي دريافت پيامEEك از طريEEق برنامEEه نويسEEي اشEEاره نمي

آدرس زير مراجعه كنيد:MSDNكنيم. براي اطالعات بيشتر به مرجع http://msdn.microsoft.com/en-us/library/microsoft.windowsmobile.pocketoutlook.messageinterception.messageinterceptor.aspx

آغاز شوند، جدا وControl Message شما يك نمونه برنامه مي بينيد كه پيامك هايي را كه با عبارت ٥در شكل SMS كEEه در حEEال اجEEراي برنامEEه ي –دريافت مي نمايد. هر بار كه پيامك توسEEط دسEEتگاه Capture تEEاس –

دريافت مي شود، ابتدا توسط برنامه بررسي مي شود. برنامه متن پيامEEك را در يEEك جعبEEه متن نمEEايش مي را برابر با شماره تلفن ارسEEال كننEEده ي پيامEEك قEEرار مي دهEEد.LinkLabel يك كنترل Textدهد و مشخصه ي

كاربر خواهد توانست به سادگي با كليك روي شماره تلفن نمايش داده شEEده، بEEا فرسEEتنده ي پيامEEك تمEEاستلفني بگيرد.

: دريافت پيامك داخل يك برنامه8شکل

16

Page 17: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

كنترل شبيه ساز دستگاه توسط برنامه ي مدير شبيه ساز دستگاه « دارد كه براي كنترل شبيه ساز هاي دستگاهDevice Emulator Manager ابزاري به نام »٢٠٠٨ويژوال استوديو

Device گزينEEه ي Tools- كEEه روي كEEامپيوتر ميزبEEان نصEEب شEEده اسEEت- بEEراي اجEEراي اين برنامEEه، از منEEوي Emulator ManagerهEEا را بEEتگاه هEEاي دسEEرا انتخاب كنيد. برنامه ي مدير شبيه ساز فهرستي از شبيه ساز ه

صورت نمودار درختي به شما نشان مي دهد و شما مي توانيد به شبيه ساز دستگاه مورد نظEEر خEEود متصEEل شده، دستگاهي را حذف يا اضافه نموده، در نهايت دستگاه را خاموش كنيد. اضافه كردن شبيه ساز دستگاهامكEEان بسEEيار مفيEEدي اسEت، چEEون اين قEEابليت را فEEراهم مي كنEد شEبيه سEاز دسEتگاه توسEط برنامEEه ي )

ActiveSync در ويندوز ايكس پي و )Windows Mobile Device Center به كامپيوتر ميزبان متصل٧ در ويندوز ويستا و (Syncronizeگردد. اين برنامه به محض اجرا امكان مي دهد كه شبيه ساز دسEEتگاه محتويEEات خEEود را همسEEان سEEازي )

برنامه اي را از كامپيوتر ميزبان روي شEبيه سEاز دسEتگاه نصEEبCABكند، به اينترنت متصل گردد يا به وسيله ي فايل .كند.

Windows يا ActiveSyncشما بايد برنامه ي نكته: Mobile Device CenterهEEتگاه بEEاز دسEEبيه سEEال شEEرا براي اتص )دسترسي مسEEتقيم بEEه حافظEEهDMAكامپيوتر، در سيستم خود نصب كرده باشيد. در ضمن اتصال از طريق

=Direct Memory Access.را نيز بايد فعال نماييد ) (http://msdn.microsoft.com/en-us/library/aa188173.aspx)ر.ك

: مدير شبيه ساز در حال اجراي يك شبيه ساز دستگاه9شکل

را مي بينيد كه در يEEك صEEفحه ي مEEربعي داخEEل مEEدير شEEبيه سEEاز اجEEرا شEEده١.٦ ويندوز موبايل ٦در شكل است.پس از اجراي شبيه ساز، برنامه ي مدير شبيه ساز بEراي اتصEال بEه آن بEEه كEار مي رود. بEراي كنEEترل

كEEه همEEه–شبيه ساز ها از داخل مدير شبيه ساز بايد روي شبيه ساز مورد نظر تان از ليست نمايش درختي راست كليEEك كنيEEد و گزينEEه ي مEEورد نظEEر تEEان را از منEEوي–ي شبيه ساز هاي نصب شده را نشان مي دهد

17

Page 18: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.comActionsهEEد كEEد ديEEتگاه خواهيEEاز دسEEبيه سEروي شبيه ساز در حال اجرا انتخاب نماييد. به محض اتصال به ش

باال مي آيند.Windows Mobile Device Center يا ActiveSyncبرنامه ي ذخيره ي تنظيمات شبيه ساز دستگاه براي استفاده هاي بعدي

با برنامه ي مدير شبيه ساز اين امكان هست كه شما تنظيمات خاص مورد نظرتEEان را بEEراي هEEر نEEوع شEEبيه % و كارت حافظه اي كEEه٥٠ساز دستگاه ذخيره نماييد. مثال يك شبيه ساز ايجاد مي كنيد كه هميشه با باتري

روي يك پوشه ي خاص روي كامپيوتر ميزبان تنظيم شده است، بEEاال بيايEEد. بEدين منظEEور در برنامEEه ي مEEدير راConnectشبيه ساز يكي از شبيه ساز هاي نصب شده را انتخاب و پس از راسEEت كليEEك روي آن گزينEEه ي

Saveبزنيد. به هنگام اجراي شبيه ساز مي توانيد تنظيمات آن را تغيير دهيEEد و توسEEط گزينEEه ي AsويEEاز من راست كليك داخل مدير شبيه ساز تنظيمات جديد را ذخيره نماييد.اين تنظيمات ذخيره شEEده بEEه صEEورت يEEك

Myنام شبيه ساز جديد داخل مدير شبيه ساز ديده خواهند شد. در نمEEودار درخEEتي Device Emulators لEEداخ با اين كار صرفا يEEك فايEEل حEEاوي تنظيمEEات بEEرمدير شبيه ساز مي توانيد اين شبيه ساز دستگاه ها را ببينيد.

مبناي نوع خاص شبيه ساز مورد نظر شما ايجاد مي شود و با هر بار ايجاد يك شبيه ساز بEEا تنظيمEEات جديEEدحافظه ي چنداني براي آن روي هارد ديسك شما اختصاص نمي يابد.

: تنظيمات شبيه ساز دستگاه10شکل

\C:\Users نمووه اي از تنظيمات شبيه ساز دستگاه را مي بينيد كه يك كارت حافظه در مسير ٧ در شكل Public\Documents را نيز به هنگام اجرا٥٠ روي كامپيوتر ميزبان براي آن تعريف شده است و حالت باتري %

شبيه سازي كرده است. هر بار كه اين شبيه ساز خاص اجرا شود همين تنظيمات از ابتدا برقرار خواهندبود.

18

Page 19: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

استفاده از شبيه ساز دستگاه براي آزمايش تنظيمات امنيتي مختلف هنگامي كه از شبيه ساز دستگاه براي آزمايش برنامه هاي وينEEدوز موبايEEل تEEان اسEتفاده مي كنيEEد بEEا فEEرض اتصال ويژوال استوديو به شبيه ساز دستگاه هيچ مانعي براي نصب و اجراي آنها نخواهيد داشت. شEEبيه سEEاز مانند يك ويندوز موبايل كامل و بدون محدوديت امنيتي براي شما كار خواهد كرد. بسته به تنظيمEEات امنيEEتي روي دستگاه واقعي ويندوز موبايل ممكن است شما ممكن است محدوديت هاي امنيتي بEEراي دسترسEEي بEEه

خواهيد توانست تنظيمات امنيتي مورد نظرتEEان را روي٢٠٠٨آن داشته باشيد. با استفاده از ويژوال استوديو شبيه ساز اعمال نماييد. ليكن توضيح اين كه چه تنظيمات امنيتي را مي توانيد در ويندوز موبايل اعمEال كنيEد خEEارج از حوصEEله ي اين مقالEEه اسEEت. از طريEEق ادرس زيEEر در سEEايت ميكروسEEافت مي توانيEEد بEEه تفصEEيل

تنظيمات امنيتي ويندوز موبايل را ببينيد:

http://msdn.microsoft.com/en-us/library/bb416353.aspx

)به زودي محتويات اين صفحه ترجمه خواهد شد. مترجم(

اعمال تنظيمات امنيتي خاص در شبيه ساز دستگاه سرراست و آسان است. بعEEد از اجEEراي يEEك شEEبيه سEEاز ويژوال استوديوToolsدستگاه مي توانيد تنظيمات امنيتي فعلي آن را استخراج نماييد. بدين منظور از منوي

را انتخاب نماييد. پس از اين، تنظيمات امنيتي پيش فرض محيطDevice Security Manager گزينه ي 2008 مي توانيد تنظيمات امنيتي شبيه سازDevice Security Manager را خواهيد ديد. توسط ٢٠٠٨ويژوال استوديو

دستگاه در حال اجرا و همچنين تأييديه هاي نصب شده را ببينيد.Device از برنامه ي نكته: Security Managerتگاه واقعيEEتي دسEEات امنيEEي تنظيمEEتخراج و بررسEEجهت اس

)فيزيكي( ويندوز موبايل هم مي توانيد استفاده كنيد.

19

Page 20: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.comبراي اعمال تنظيمات امنيتي جديد در يك شبيه ساز دستگاه مراحل زير را انجام دهيد:

را بزنيدSecurity Configurationگزينه ي Device Security Managerاز برگه ي .1 تنظيمات مورد نظرتان را انتخاب كنيد.Security configurationاز فهرست .2 كليك كنيد تا تنظيمات امنيتي موردDevice Security Manager داخل Deploy to Deviceروي برگه ي .3

نظرتان روي شبيه ساز اعمال شود.

: مدير امنيت دستگاه در حال اجرا از داخل شبيه ساز دستگاه11شکل

20

Page 21: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

خودكار سازي مدير شبيه ساز است كه ميCOM (Component Object Model)كارآيي مدير شبيه ساز دستگاه به صورت يك سري اشياي

توانيم با آن ها برنامه هاي دسكتاپ ويندوز براي كنترل مدير شبيه ساز بنويسيم. به عنوان مثل شما مي # برنامه اي بنويسيد كه به يك شبيه ساز خاص متصل شده آن را اجرا نمايد. براي ايجاد يكCتوانيد به زبان

( كه از امكانات مدير شبيه ساز استفاده نمايد مراحل زير راDesktop Apllicationبرنامه ي دسكتاپ ويندوز )انجام دهيد:

ايجاد نماييد.Visual C# Windows application يك برنامه ي ٢٠٠٨در محيط ويژوال استوديو .1 را به پروژه اضافه كنيد.Microsoft.DeviceEmulatorManager.Interop.9.0 يك مرجع اسمبلي.2

حتي اگر نگارش جديدتري از شبيه ساز دستگاه را استفاده نماييد الزم است كه فايل اسمبلي:نكتهمورد نياز در مسير

\Program Files\Microsoft Device Emulator\1.0\Microsoft.DeviceEmulatorManager.Interop.9.0.dllموجود باشد چرا كه نگارش جديدتر شبيه ساز دستگاه در اصل يك ارتقا از نگارش پيشين آن است.

براي نمايش تمامي اطالعات مربوط به شبيه ساز هاي ذخيره شده در كامپيوتر خود، بEEه صEورت يEEك.3TreeViewنمودار درختي ) Control از قطعه كد زير در بخش مدير رويداد )LoadهEEلي برنامEEرم اصEEف

استفاده مي كند.*IDeviceEmulatorManagerتان استفاده نماييد. اين كد از اينترفيس

(http://msdn.microsoft.com/en-us/library/bb531169.aspx )* ر.ك

string categoryName;

TreeNode categoryNode; IDeviceEmulatorManager emulatorManager = new DeviceEmulatorManagerClass();

emulatorManager.Reset(); try

{ while (true) { categoryName = emulatorManager.get_Name(); categoryNode = new TreeNode(categoryName);

ListDeviceEmulatorSDKs(emulatorManager, categoryNode);

tvEmulators.Nodes.Add(categoryNode); emulatorManager.MoveNext(); }

}

catch (COMException ex)

{ if (ex.ErrorCode != END_OF_DATA) throw ex;

}

21

Page 22: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com وwhileبه روش مشابه مي توانيد اطالعات تمامي شبيه ساز هاي نصب شده را با استفاده حلقه ي .4

به دست آوريد.**IEnumManagerSDKsاينترفيس

(http://msdn.microsoft.com/en-us/library/bb531190.aspx )** ر.ك

پس از بازيابي اطالعات تمامي خانواده ي شبيه ساز ها، با روش مشEEابه خواهيEEد توانسEEت اطالعEEات.5 ديگEEري بEEا اسEEتفاده از اينEEترفيسwhile را در حلقEEه ي SDKتك تك شEEبيه سEEاز هEEاي متعلEEق بEEه هEEر

IEnumVMIDs *** .به دست آوريد

(http://msdn.microsoft.com/en-us/library/bb531183.aspx)*** ر.ك

پس از دسترسي به يك شبيه ساز خاص، با استفاده از روال ها مي توانيد آن را كنترل نماييد. مثال بEEا.6،Connect فراخEEEEEEEEواني روال هEEEEEEEEاي Cradle، Uncradle و ShutdownترفيسEEEEEEEEدر اين

IDeviceEmulatorManagerVMID ****.

(http://msdn.microsoft.com/en-us/library/bb531187.aspx)**** ر.ك

22

Page 23: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

فصل سوم WinFormتوسعه ي برنامه با

23

Page 24: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.comمقدمه

توسعه ي نرم افزار ويندوز موبايل شباهت زيادي به توسعه ي نرم افزار در دسكتاپ دارد به ويژه زماني كه يكي از دو زبان ويژوال بيسيك يا ويژوال سي شارپ دات نت را استفاده مي كنيد. شما همان ابزارهاي

توسعه ي برنامه هاي ويندوز دسكتاپ را براي ويندوز موبايل هم استفاده مي كنيد ليكن تفاوت هايي نيز بين اين دو محيط هست. دستگاه هاي ويندوز موبايل صفحه ي نمايش كوچك تر و منابع محدود تر دارند و

همچنين قابل حمل بوده، اغلب باتري استفاده مي كنند. اين مقاله اطالعاتي را در باره ي چگونگي نرم افزارهاي ويندوز فرم براي دستگاه هاي ويندوز موبايل به شما خواهد داد و در نهايت شما ياد مي گيريد كه چطور نرم افزارها را براي استفاده از امكانات دستگاه

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

دستگاه هاي ويندوز موبايل مدل هاي متنوعي دارند دستگاه هاي ويندوز موبايل در بازار بسيار متنوع هستند و به عالوه نگارش هاي مختلفي از ويندوز موبايل را

ويندوز موبايل )هر دو ويرايش استاندارد و حرفه اي( كار٦استفاده مي كنند. در اين مقاله ما با نگارش خواهيم كرد.

دستگاه هاي ويندوز موبايل استاندارد اين دستگاه ها اغلب به نام اسمارت فون )تلفن هوشمند( در بازار هستند. همه ي اين دستگاه ها امكانات

( ندارند. معموال براي كار با آن ها به يك دست نياز داريدTouch Screenتلفن را دارند ليكن صفحه ي لمسي )(one-hand operationبراي توسعه نرم افزار هايي كه با اين دستگاه ها كار كنند شما ابزار توسعه ي ويندوز .)

يا باالتر نياز2005 ( را همراه با ويژوال استوديو Windows Mobile 6 Standard SDK استاندارد )٦موبايل داريد.

حرفه اي٦دستگاه هاي ويندوز موبايل ( شناخته مي شوند. اين دستگاه ها بعضاPocket PC=PPCاين دستگاه ها عمدتا به نام پاكت پي سي )

امكانات تلفن را نيز دارند ولي همه ي آن ها به صفحه ي لمسي مجهز هستند. معموال براي كار با اين دستگاه ها به دو دست همراه با يك كنترل لمسي نياز داريد. (. براي توسعه نرم افزار هايي كه با اين

(Windows Mobile 6 Professional SDK حرفه اي )٦دستگاه ها كار كنند شما ابزار توسعه ي ويندوز موبايل يا باالتر نياز داريد. 2005را همراه با ويژوال استوديو

مهارت هايي كه توسعه دهنده بايد داشته باشد تفاوت2008روش هاي توسعه ي نرم افزار هاي ويندوز موبايل و دسكتاپ در محيط ويژوال استوديو

شما تصميم مي گيريد كه چه نوع پروژه2008چنداني با هم ندارند. پس از ورود به محيط ويژوال استوديو اي را و در چه پالتفرمي آغاز كنيد. سپس ويژوال استوديو يك پروژه ي اوليه با يك فرم خالي نمايش مي دهد كه در آن فرم، واسط كاربر را طراحي كنيد. عمده ترين تفاوت به هنگام توسعه ي نرم افزار ويندوز

موبايل، صفحه نمايش كوچك و در عين حال متنوع مورد استفاده در دستگاه ها است. تفاوت بعدي را زماني بكشيد و2008متوجه مي شويد كه كه بخواهيد كنترل هاي واسط كاربر را از جعبه ابزار ويژوال استوديو

روي فرم قرار دهيد. تعداد محدودي كنترل در مقايسه با پالتفرم دسكتاپ در دسترس شما خواهد بود. اين محدوديت در ويرايش استاندارد بيشتر از ويرايش حرفه اي ويندوز موبايل است. از آن جا كه دستگاه هاي

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

ايجاد واسط كاربري براي برنامه يعني همان كشيدن كنترل ها از جعبه ابزار ويژوال استوديو و رها كردن و ( - كه براي گروه بندي كنترل ها روي فرمContainerقرار دادن آن روي يك فرم يا داخل يك كنترل كانتينر )

قرار داده ايد- و از طرفي مي توانيد چند فرم در برنامه تان داشته باشيد، خودتان كنترلي درست كنيد كه از يك كنترل موجود مشتق شده باشد يا اين كه از ابتدا يك كنترل را كامال خودتان ايجاد كنيد. عالوه بر اين

كنترل هاي ساده تعدادي پنجره ي مكالمه هم هست كه شما را كمك خواهد كرد تا برنامه تان به برنامه هايعمومي و استاندارد ويندوز موبايل شبيه باشد.

24

Page 25: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

حرفه اي٦طراحي يك واسط كاربر ساده در ويندوز موبايل در يكيSmart Device project ايجاد كنيد. نوع پروژه بايد 2008يك پروژه ي جديد در محيط ويژوال استوديو

Windows Mobile 6 Professional SDK# يا ويژوال بيسيك دات نت باشد. پالتفرم مقصد را Cاز زبان هاي يك فرم خالي با ابعاد متناسب با پالتفرم مقصد به شما نمايش خواهد2008انتخاب نماييد. ويژوال استوديو

داد كه به شكل يك دستگاه ويندوز موبايل است تا به حد امكان شبيه تر باشد به آن چه در واقعيت استفاده ( مي توانيد كنترل هاي مورد نظر تان را روي١ )شكل Device Controlsمي گردد. با استفاده از جعبه ابزار

فرم قرار دهيد.

در نماي طراحي فرم2008: ويژوال استوديو 12شکل

25

Page 26: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com خب! بيكار نمانيد و كنترل هاي مختلفي را كه مي توانيد در طراحي واسط كاربر استفاده كنيد، نگاهي

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

كاربر است. دقت كنيد كه چطور كمك تان خواهد كرد محل قرار گيري كنترل ها را تراز كنيد و كمترين ( كمك زيادي خواهند كرد تا درGuide Linesفاصله ي ممكن را براي آن ها در نظر بگيريد. خطوط راهنما )

وbutton1 قرار گيري دكمه هاي ٢اندك زماني، واسط كاربر را خيلي خوش دست طراحي كنيد. در شكل button2را در دو حالت افقي و عمودي نسبت به هم مي بينيد كه به كمك خطوط باريك آبي رنگ، لبه هاي

آن ها نسبت به هم تراز شده اند.

: خطوط راهنما بهترين دستيار شما در تركيب بندي واسط كاربر13شکل

ايجاد نرم افزاري كه بتواند با جهت هاي مختلف صفحه نمايش سازگار باشد تنوع زياد دستگاه ها و مدل هاي آن ها باعث شده اسEEت كEEه توسEEعه ي يEEك نEEرم افEEزار كEEه بتوانEEد در تعEEداد متنوعي دستگاه كار كند اندكي پيچيده باشد. ويژوال استوديو به شما امكEEان بندكشEEي و ثEEابت كEEردن كنEEترل

مي توانيEEد اطالعEEاتي در بEEاره ي٦هاي واسط كاربر را فراهم مي كنEEد. بEEا ابEEزار توسEEعه ي وينEEدوز موبايEEل قابليت هاي دستگاه و نگارش هاي سيستم عامل دستگاه به دسEEت آوريEEد. ليكن در اين مقالEEه مEEا روي چنEEد

مورد خاص و محدود كار مي كنيم:توجه به ميزان منابع آزاد سيستم و باتري ٦اجرا در دستگاه هاي ويندوز موبايلنمايش درست در هر دو حالت افقي، عمودي و همچنين دستگاه هايي با صفحه نمايش مربع شكل

با وجودي كه )در زمان نگارش اين مقاله( دستگاه هاي ويندوز موبايل استاندارد جهت هاي مختلف صفحه ي نمايش را پشتيباني نمي كنند ولي ممكن اسEEت در آينEEده اين امكEEان فEEراهم شEEود. در بEEرخي مEEوارد نمEEايش اطالعات در صفحه ي افقي باعث راحتي بيشتر كاربر خواهد شد. ويژوال استوديو به هنگام طEEراحي واسEEط كاربر يك برنامه ي ويندوز فرم، كمك تان خواهEEد كEEرد تEEا كنEEترل هEEا در يEEك مEEوقعيت خEEاص ثEEابت كEEرده، يEEا

بندكشي كنيد. بندكشي يا ثابت كردن كنترل ها

براي مطمئن شدن از اين كه يك فرم در هر دو حالت افقي و عمودي بEEه درسEتي نمEايش داده خواهEEد شEد،Panel( ماننEEد فEEرم يEEا پانEEل )Parentمي توانيد كنترل ها را در محل خاصي داخل يك كنترل مافوق ) Control)

ثابت يا بندكشي نماييد. ( كنترل هEEا اسEEت. زمEEاني كEEه شEEما يEEك كنEEترل راAnchor( و تثبيت )Dockنكته ي مهم تفاوت بين بندكشي )

نسبت به يك يا چند لبه ي يك كانتينر ثابت مي كنيد موجب خواهد شد كه مختصات نسEب بEEه لبEه هEEاي ثEEابت شده با تغيير جهت نمايش ثابت بماند. هنگام بندكشي يك كنترل شما لبه اي از كانتينتر را كEEه كنEEترل بايEEد در آن موقعيت قرار بگيرد، تعيين مي كنيد. اگر كنترل را به هر چهار لبه بندكشي كنيد در اين صEEورت آن كنEEترل

تمام سطح كنترل مافوقش )فرم يا كانتينر( را خواهد پوشاند.

26

Page 27: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com براي فهميدن بهتر تفاوت بندكشي و تثبيت كنترل ها و كاركرد آن ها در جهت هاي مختلف صEEفحه ي نمEEايش

( - كه هر كدام رنگ پس زمينه ي متفاوت باLabelيك فرم ساده ايجاد مي كنيم و تعدادي كنترل برچسب را ) روي آن قرار مي دهيم. البته اين واسط كاربري شايد به نظر بي مصرف باشد ليكن مهم–بقيه داشته باشد

ترين استفاده ي آن در حال حاضر همين فهميدن بندكشي و تثبيت كنترل ها و تغيير وضعيت آن ها بEEه هنگEEام(٣تغيير جهت بين افقي و عمودي است. )شكل

حرفه اي در حالت عمودي، كنترل ها نه ثابت شده اند و نه بندكشي٦: ويندوز موبايل 14شکل

سه برچسب بااليي روي يك پانل قرار گرفته اند و دو برچسب پاييني روي خود فرم. براي تمامي كنترل هايي كه روي فرم قرار مي دهيد بايد مشخصه هاي تثبيت آن را حذف كنيد چرا كه ويژوال استوديو به

صورت پيش فرض همه ي كنترل ها را نسبت به لبه هاي باال و سمت چپ كانتينر شان ثابت مي كند. واسط كاربر در حالت عمودي خوب به نظر مي آيد ولي به محض تغيير جهت از عمودي به افقي مشكالتي پيش

توجه كنيد.٤مي آيد. كافي است به شكل

حرفه اي در حالت افقي، كنترل ها نه ثابت شده اند و نه بندكشي٦: ويندوز موبايل 15شکل

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

حالت برچسب پاييني كامال محو شده است و سمت راست و چپ صفحه ي نمايش در حالت عمودي خاليمانده اند. اين يعني حالت افقي صرفا بخشي از صفحه نمايش حالت عمودي واسط كاربر را نشان مي دهد.

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

ثابت نگه داريد. يعني مختصات آن نسبت به لبه هاي تعيين شده در هر حالتي از جهت نمايش ثابت مي ماند. نيز تعيين مي كنيد كه يك كنترل چگونه نسبت به لبه هاي كنترل مافوقDockبا استفاده از مشخصه ي

خودش تراز شده، يا بخشي از صفحه ي نمايش را پر كند. با بندكشي چند كنترل به يك لبه كنترل مافوق شان، باعث خواهد شد كنترل هاي مورد نظر به صورت پشت سر هم قرار گيرند. در اين مثال سه برچسب

27

Page 28: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com بااليي داخل يك پانل قرار گرفته اند. باالترين برچسب بندكشي نشده است و نسبت به لبه هاي چپ، راست و باالي پانل ثابت شده است. به عبارتي مي توان گفت كه به سمت باالي فرم بندكشي شده است. در هر

دو حالت عمودي و افقي فاصله ي برچسب با لبه هاي باال، چپ و راست تغيير نخواهد كرد. به طور مشخص در حالت نمايش افقي اندازه برچسب بزرگ تر مي شود تا فاصله هاي مذكور تغيير نكنند. دو بر چسب ديگر

ترتيب ) كه روي هم نمايش داده مي شوند- به سمت پايين پانل بندكشي شده اند. شماره ي –داخل پانل tab orderمي كند كه كدام يك از برچسب ها نمايش داده شوند. اگر جهت نمايش را به افقي تغيير( مشخص

دهيد، همه ي كنترل هاي روي فرم همچنان قابل مشاهده خواهند بود و همه ي سطح فرم توسط كنترل ها(٥پر خواهد شد. )شكل

حرفه اي در حالت افقي، با كنترل هاي ثابت و بندكشي شده٦: ويندوز موبايل 16شکل

است، چون كنترل هEEا بEEراي نمEEايش افقي٤ مي بينيد، به مراتب بهتر از شكل ٥واسط كاربري كه در شكل تغيير اندازه داده شده اند. براي اين كه دست تان بيايد چطور با استفاده از تثبيت يEEا بندكشEي، كنEEترل هEEا را

جا نمايي كنيد كافي است كمي بيشتر وقت گذاشته، حالت هاي مختلف را آزمايش كنيد.

28

Page 29: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com به راحتي هر دو حالت عمودي و افقي را مي توانيد آزمايش كنيEEد.2008در محيط طراحي ويژوال استوديو

( راه ديگر٦ را انتخاب نماييد. )شكل Rotate Right يا Rotate Leftروي شكل دستگاه راست كليك و گزينه ي آن است كه فرم را انتخاب )كليك( كرده، دكمه هEEاي روي نEEوار ابEEزار را بEEراي تغيEEير جهت نمEEايش اسEEتفاده

كنيد.

: تغيير جهت نمايش در حالت طراحي17شکل

طراحي برنامه اي كه روي دستگاه هاي مختلف كار كند )اعم از٦به هنگام ايجاد نرم افزاري كه روي يكي از پالتفرم هاي مقصد ابزار توسعه ي ويندوز موبايل

استاندارد يا حرفه اي( كار كند، مي توانيد پالتفرم فعلي را به پالتفرم مقصد در ابزار توسعه ي ديگري تغيير برنامه ي شما2008دهيد. در اين حالت نرم افزار به پالتفرم ديگري تبديل مي شود يعني ويژوال استوديو

حرفه اي ساخته ايد، به پالتفرم ديگري٦را تغيير مي دهد. اگر بخواهيد برنامه اي را كه در ويندوز موبايل به٦تبديل كنيد مشكالتي را پيش روي خود خواهيد داشت. از آن جا كه ويرايش استاندارد ويندوز موبايل

نسبت ويرايش حرفه اي آن كنترل هاي كمتري را در واسط كاربر پشتيباني مي كند، كنترل هاي پشتيباني كار2008نشده را بايد به كنترل هايي تغيير دهيد كه در پالتفرم جديد كامپايل و اجرا شوند. ويژوال استوديو

تبديل را به راحتي انجام خواهد داد. از ديدگاه توسعه ي نرم افزار ايده ي برتر آن است كه براي ساده تر را از اليه ي واسط كاربر جدا كنيم. كنترل هاي*شدن بحث سازگاري پالتفرم ها، اليه ي بيزينس الجيك

عالمت گذاري مي2008واسط كاربر كه در پالتفرم جديد پشتيباني نمي شوند، توسط ويژوال استوديو به شما پيشنهاد مي دهد كه كنترل هاي مذكور را به نزديك ترين2008شوند و در عين حال ويژوال استوديو

حالت منطبق با پالتفرم جديد تبديل كنيد. اگر نخواستيد كه پروژه تان را به پالتفرم مقصد ديگري تبديل كنيد ( استفاده كنيد تا با يك دفعه كدنويسيVisual Form Inheritanceمي توانيد از امكانات ارث بري فرم ها )

بتوانيد برنامه تان را در پالتفرم هاي مختلف اجرا نماييد.* Business Logicاين اصطالح را ترجمه نكردم. اگر اهل فن هستيد تصديق مي كنيد كه نبايد اين چنين عبارتي را ترجمه كرد. اگر

« كافي است مطالبي در باره ي معماري اليه بهبه گيرنده هاي خود دست نزنيد!هم اين اصطالح براي تان آشنا نيست، »اليه ي نرم افزار را مطالعه كنيد. )مترجم(

29

Page 30: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

ارث بري فرم ها امكانات كامل طراحي را در زمان ارث بري يك فرم از فرم ديگر، به شما مي دهد.2008ويژوال استوديو

براي فهميدن بهتر، با يك فرم پايه شروع مي كنيم كه نقطه ي آغازي خواهد بود براي توليد نرم افزاري كه در پالتفرم هاي مختلف ويندوز موبايل كار كند. با وجود اين كه ممكن است اين كار در نگاه اول غير ضروري

( - كه فرم پايه را ايجاد مي كند-class libraryبه چشم بيايد، ليكن تجربه ي ايجاد يك فايل كتابخانه اي كالس ) بسيار ارزش مند خواهد بود. اين موضوع زماني كه شما ياد بگيريد كدام كنترل ها در فرم هاي ارث بري

شده قابل تغيير هستند و كدام شان نيستند، اهميت بيشتري دارد. براي اين كه بتوانيد كنترل ها يا كاركرد آن تغيير دهيد.Private كنترل مورد نظر را به مقداري غير از Access Modifierها را تغيير دهيد بايد مشخصه ي

يك فرم پايه مي بينيد كه به عنوان مرحله ي آغاز برنامه تان استفاده مي شود.٧در شكل

: فرم پايه ي برنامه براي دستگاه ويندوز موبايل استاندارد18شکل

- كه همه ي صفحه را پر كرده- و يك منو است. اين برنامه يك) Edit(فرم پايه حاوي يك كنترل ويرايشگر ويرايشگر متن ساده است. اين برنامه فايل متني ايجاد مي كند، محتواي فايل متني موجود را تغيير مي دهد و همچنين امكان تغيير نام يا حذف فايل متني را فراهم مي كند. با اين كه فايل هاي ايجاد شده توسط اين

برنامه همان فايل هاي متني عادي هستند، ليكن براي مديريت راحت آن ها و فيلتر كردن شان، پسوند فايل را مخصوص اين برنامه قرار داده ايم. فرم پايه براي ويندوز موبايل استاندارد طراحي شده است. دليلش

هم روشن است. ويندوز موبايل استاندارد نسبت به حرفه اي كنترل هاي كمتري دارد. براي مديريت فايل ها هم دو فرم ديگر در نظر گرفته ايم كه يكي فهرست فايل هاي موجود را نشان دهد و ديگري براي تغيير نام

يا حذف آن ها استفاده شود. از آن جا كه ويندوز موبايل استاندارد، صفحه ي لمسي را پشتيباني نمي كند تمامي عمليات فايل ها از طريق گزينه هاي منو انجام مي شوند. در اين مقاله ما توضيحات مربوط به

افزاري كه روي انواع مختلف دستگاه ها كار كند متمركزويرايشگر متني را نخواهيم گفت و روي ايجاد نرم براي دانلود دم دست مان هست.Mobile Editمي شويم. هر چند كه برنامه ي نمونه ي

حرفه اي مي بينيد. با وجود تفاوت ظاهري٦ شما فرم اصلي را در حال اجرا روي ويندوز موبايل ٨در شكل ديديد مشتق شده است.٧ ديده ايد، ولي اين فرم از همان فرم اصلي كه در شكل ٧اش با آن چه در شكل

وDocument List حرفه اي به آن اضافه شده است. يعني يك ٦فقط يك كنترل مخصوص ويندوز موبايل

30

Page 31: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com همان طور كه از نامش پيدا است براي نمايش فهرست فايل ها به كار مي رود. با اين كه فرم اصلي حاوي

يك كنترل ويرايشگر متن است ولي به هنگام طراحي آن را نمي بينيد چون كنترل »فهرست فايل ها« )Document Listروي آن قرار گرفته است. داخل برنامه با كدنويسي كاري مي كنيم كه كنترل »فهرست )

فايل ها« در زماني كه الزم نيست نشان داده نشود. كنترل هايي كه بخشي از فرم پايه هستند در فرم مشتق شده هم به ارث مي رسند. كنترل هايي را كه از طريق ارث بري در فرم جديد قرار گرفته اند، با يك

عالمت فلش در گوشه ي باال سمت چپ شان )همانند كنترل منو( مشخص مي شوند.

: فرم پايه ي مشتق شده براي ويندوز موبايل حرفه اي19شکل

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

»فهرست فايل ها« براي مديريت فايل ها يعني اين كه ديگر نيازي به طراحي فرم جديد نيست. از آن جا كه هدف اصلي ما ايجا يك فايل باينري )اجرايي( براي استفاده در هر دو پالتفرم ويندوز موبايل استاندارد و

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

.NET Compact Framework 3.5به راحتي امكان تشخيص نوع دستگاه را براي تان فراهم مي كند. قطعه كد ببينيد:– است Program.csزير را - كه بخشي از فايل

static void Main()

{ if (SystemSettings.Platform == WinCEPlatform.PocketPC) {

Application.Run(new MainFormTouch());

}

else if (SystemSettings.Platform == WinCEPlatform.Smartphone) {

Application.Run(new MainFormNoTouch()); }

}

31

Page 32: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com را به عنوان فرم اصلي برنامهMainFormTouch يا MainFormNoTouchبسته به نوع دستگاه، يكي از دو فرم

( را در ويندوزMainمان استفاده مي كنيم. مزيت اصالي ارث بري فرم اين است كه ما امكانات فرم اصلي ) را در منو كليك كند، صرف نظر ازNewموبايل حرفه اي، دوباره استفاده مي كنيم. مثال اگر كاربر گزينه ي

ي منوNew( كه براي گزينه ي event handlerنوع دستگاهي كه برنامه در آن اجرا مي شود، مدير رويدادي ) تعريف كرده ايم، اجرا خواهد شد:MainFormNoTouchدر صفحه ي

protected virtual void menuNew_Click(object sender, EventArgs e){

autoSave = false;

if (tbWorkArea.Text.Length != 0) {

if (MessageBox.Show("Save contents before creating a new file", "Save current contents",

MessageBoxButtons.YesNo,

MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)

{ EditLogic.WriteFile(fileName, tbWorkArea.Text);

} tbWorkArea.Text = string.Empty; }

autoSave = true; fileName = EditLogic.FileName;}

اين كد از كاربر خواهد پرسيد كه آيا فايل هاي در حال استفاده را قبل از ايجاد فايل جديد، ذخيره كند يا نه. قرار دارد كه اليه يEditLogicهمان طور كه مي بينيد امكانات خود ويرايشگر در كالس ديگري به نام

واسط كاربر را به طور كامل از اليه ي اپليكيشن الجيك(Application Logic،جدا مي كند. اگر برنامه در دستگاه با سيستم عامل ويندوز موبايل حرفه اي اجرا شود )

يكي از قابليت هايي كه بايد در ابتداي اجراي برنامه غير فعال شود كنترل »فهرست فايل ها« است. اين كار مطابق قطعه كد زير انجام مي دهيم:menuNew_Clickرا با ابطال مدير رويداد

protected override void menuNew_Click(object sender, EventArgs e) {

base.menuNew_Click(sender, e);

documentList.Visible = false;

MinimizeBox = false; }

را انتخاب مي نمايد، ابتدا كد نوشته شده در فرمNewزماني كه كاربر در ويندوز موبايل حرفه اي گزينه ي پايه اجرا مي شود سپس دو خط كد كه فقط در ويندوز حرفه اي در دسترس هستند اجرا مي شوند. اين دستور ها به ترتيب براي مخفي كردن كنترل »فهرست فايل ها« براي ديده شدن كنترل »جعبه متن« و

در نوار عنوان فرم، اجرا مي شوند.OKنمايش يك دكمه ي اضافهMainFormTouch.cs بايد آن را به طور دستي به فايل menuNew_Clickبراي ابطال مدير رويداد در محيط طراحي فرم دابل كليك كنيد، ويژوال استوديو يك مدير رويداد جديدNewنماييد. اگر روي گزينه ي

menuNew_Click ايجاد مي كند كه در زمان اجرا، پس از فراخواني مدير رويداد menuNew_Click_1به نام اصلي در فرم پايه، فراخواني خواهد شد.

32

Page 33: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

توجه به منابع سيستم صرف نظر از مدل دستگاه هر زمان كه فرم اصلي برنامه مخفي شود )در پس زمينه قرار گيرد( يك رويداد

فراخواني مي شود. به طور مشابه زماني كه فرم اصلي برنامه مجدد فعال مي شود و در پيش زمينه ويندوز قرار مي گيرد، رويداد ديگري فراخواني مي شود. اين رويداد ها را مي توانيم براي آزاد سازي منابع سيستم هنگامي كه برنامه در پس زيمنه اجرا مي شود، استفاده نماييم. )مثال غير فعال كردن تايمر( در اين

حال برنامه حافظه ي مورد استفاده اش را زماني كه نيازي به آن نيست، آزاد مي نمايد و حتي االمكان ازكمترين پردازش و به تبع آن كمترين توان باتري استفاده مي كند.

در پس زمينه قرار بگيرد به طور موقت محتواي جعبه متن را در يك فايل ذخيرهMobile Editorاگر برنامه ي مي كند )كد زير(:

protected virtual void MainFormNoTouch_Deactivate(object sender, EventArgs e) {

if (fileName != string.Empty && tbWorkArea.Text.Length != 0) {

EditLogic.WriteFile(fileName, tbWorkArea.Text);

tbWorkArea.Text = string.Empty; autoSave = true;

}}

و هنگامي كه برنامه دوباره در پيش زمينه قرار بگيرد، محتواي فايل مذكور را بازيابي كرده، در جعبه متنtbWorkAreaنمايش مي دهد

)كد زير(:

protected virtual void MainFormNoTouch_Activated(object sender, EventArgs e) { if (autoSave) { tbWorkArea.Text = EditLogic.ReadFile(fileName);

} }

33

Page 34: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com توليد نرم افزار هايي كه در هر دو ويرايش حرفه اي و استاندارد ويندوز موبايل كار كند، امكان پذير است،

اما اين كه فكري هم براي معماري نرم افزار بكنيد بسيار مهم و اساسي است. به ويژه زماني كه ملزم باشيد امكانات سخت افزاري مختلف را در دستگاه هاي متنوع در نظر بگيريد، اين كار پيچيده تر خواهد بود

كه صد البته از حوصله ي اين مقاله خارج است.

در حال اجرا روي دستگاه هاي مختلفMobile Edit: برنامه ي ٩شکل

بايد يك ايده ي درست و حسابيWindows Formsبراي استفاده از ازث بري فرم ها در محيط طراحي داشته باشيد. البته هر كنترلي را

مي توانيد روي فرم پايه قرار دهيد به شرطي كه بخواهيد آن را در فرم هاي مشتق شده نيز استفاده نماييد. فقط يادتان باشد اگر مي خواهيد كاركرد يك كنترل را در فرم مشتق شده تغيير دهيد، بايد مشخصه ي

Modifiers كنترل را باprotected يا public مشخصه ي مقدار دهي كنيد. اگرModifiersيك كنترل را با privateمقدار بدهيد، در فرم مشتق شده فقط مي توانيد آن را مخفي يا بندكشي كرده، يا آن را تغيير اندازه بدهيد.

34

Page 35: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

فصل چهارمGPSافزودن كنترل سفارشي و استفاده از

35

Page 36: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.comمقدمه

توسعه ي نرم افزار ويندوز موبايل شباهت زيادي به توسعه ي نرم افزار در دسكتاپ دارد به ويژه زماني كه يكي از دو زبان ويژوال بيسيك يا ويژوال سي شارپ دات نت را استفاده مي كنيد. شما همان ابزارهاي

توسعه ي برنامه هاي ويندوز دسكتاپ را براي ويندوز موبايل هم استفاده مي كنيد ليكن تفاوت هايي نيز بين اين دو محيط هست. دستگاه هاي ويندوز موبايل صفحه ي نمايش كوچك تر و منابع محدود تر دارند و

همچنين قابل حمل بوده، اغلب باتري استفاده مي كنند. در اين مقاله ياد مي گيريد كه چطور نرم افزارهاي بر مبناي ويندوز فرم، براي موبايل ايجاد كنيد. كنترل هاي

سفارشي را به برنامه تان اضافه كنيد و چگونگي ساختن كنترل هاي سفارشي با پشتيباني كامل محيط داخل نرم افزار و همچنين به روز رساني مقاديرGPSطراحي را تمرين كنيد. به عالوه كاربرد سخت افزار

( را نيز فرا خواهيد گرفت.Multi Threadedكنترل هاي واسط كاربر را داخل يك برنامه ي چند پردازشي )

افزودن كنترل هاي سفارشي به برنامه ي خودتان اگر به هنگام توسعه ي برنامه ي ويندوز موبايل به كنترل هاي خاصي نياز پيدا كنيد كه در مجموعه ي كنترل

هاي استاندارد.NET Compact Framework:نيستند، راه حل هاي زير را پيش رو خواهيد داشت

يك كنترل واسط كاربر فقط براي برنامه ي فعلي تان درست كنيديك كنترل واسط كاربر كه در برنامه ي ديگر هم قابل استفاده باشد، درست كنيديك كنترل واسط كاربر با امكانات مورد نظرتان خريداري كنيد

در اين مقاله سه روش ايجاد كنترل ها را هم از ابتدا و هم از طريق استفاده ي مجدد و تركيب با كنترل هايموجود ياد خواهيد گرفت.

كنترل هاي كاربر )سفارشي( اين كنترل ها معموال با تركيب چند كنترل موجود و درست كردن يك كنترل جديد به كار مي روند. در ويژوال

User Control ايجاد كنترل هاي كاربر به طور كامل توسط يكي از انواع پروژه ي آن )2008استوديو Projectپشتيباني مي شود. وقتي يك كنترل جديد ايجاد مي كنيد يك صفحه ي طراحي مانند كانتينر پديد مي )

آيد كه كنترل ها را روي آن قرار مي دهيد. با يك كنترل كاربر شما مي توانيد چند كنترل موجود را با هم تركيب كنيد به طوري كه به هنگام استفاده از كنترل تركيبي عملكرد آن مانند يك كنترل منفرد باشد. در

مي بينيد. كنترل مذكور شامل دو كنترل برچسب2008 شما يك كنترل كاربر داخل ويژوال استوديو ١شكل (Label( و دو كنترل جعبه متن )TextBoxاست كه مي توانيد براي اعتبار سنجي كاربر، مثال براي ورود به )

يك سيستم بانك اطالعاتي استفاده كنيد. زماني كه پروژه كامپايل مي شود اين كنترل در اسمبلي مربوط به خودش ذخيره مي شود تا در آينده توسط هر پروژه ي ديگر ويندوز موبايل استفاده گردد. در اين كنترل

كاربر، كدنويسي چنداني پس از قرار دادن كنترل سفارشي روي آن الزم نيست. تنها كد مورد نياز داخل اين ( براي به دست آوردن نامPublicكنترل كاربر عبارت است از تعريف دو متغير با سطح دسترسي عمومي )

)گذرواژه(Passwordكاربر و گذرواژه داخل يك برنامه و همچنين مقدار دهي نام كاربر است. مشخصه ي ( است تا كاربر را مجبور كند كه حداقل يك گذرواژه ي مجاز براي خودش در نظرRead-onlyفقط خواندني )

بگيرد. اعتبار سنجي گذرواژه در داخل برنامه انجام مي شود نه داخل كنترل كاربر. دليل اين امر راحتي كاربا كنترل و امكان استفاده ي مجدد از آن است.

36

Page 37: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

: كنترل سفارشي براي اعتبار سنجي كاربر20شکل

براي استفاده از كنترل اعتبار سنجي كاربر داخل برنامه كافي است آن را از جعبه ابزار ويژوال استوديو بكشيد و روي فرم بيندازيد. كنترل اعبترا سنجي كاربر به طور خودكار در جعبه ابزار نشان داده نمي شود.

راChoose Items جعبه ابزار راست كليك كنيد و از منوي باز شده، گزينه ي Generalبايد نخست روي بخش بزنيد و به فايل اسمبلي كه حاوي كنترل اعتبار سنجي كاربر است اشاره كنيد تا كنترل مذكور در جعبه ابزار

( را داخل برنامه ميUser Credentals شما چگونگي نمايش كنترل اعتبار سنجي )٢ظاهر شود. در شكل جعبه ابزار خواهيد ديدGeneral را در بخش UserCredentalsبينيد. اگر به جعبه ابزار هم بنگريد كنترل با نام

كه به آساني مي توانيد آن را روي فرم خود قرار دهيد. پس از اين كار شما در پنجره ي مشخصات )Properties يك مشخصه ي )UserNameكه قابل مقدار دهي در محيط طراحي و در عين حال به صورت كد -

را با رنگ خاكستري در پنجره يPasswordنويسي داخل برنامه است- مي بينيد. در عين حال مشخصه ي مشخصات خواهيد ديد كه به دليل فقط خواندني بودن آن است. اين مشخصه قابل مقداردهي نيست وليمقدارش پس از آن كه توسط كاربر به هنگام اجراي برنامه وارد شد، قابل بازيابي )خواندن( خواهد بود.

37

Page 38: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

: كنترل سفارشي داخل يك برنامه21شکل

كنترل هاي ارث بري شدهNETگاهي اوقات مثال يك كنترل عمومي . Compact FrameworkهEEد كEEد ليكن الزم داريEEتفاده مي كنيEEرا اس

( كEEه فقEEط عEEدد را بشEEود در آن واردTextBoxكاركرد آن مطابق دلخواه شما تغيير كند. مثال يك جعبEEه متن ) نمود. البته شما مي توانيد به كاربر اجازه دهيد كه هEEر چEEه خواسEEت وارد نمايEEد و پس از ورود اطالعEEات، در داخل برنامه آن را اعتبار سنجي كنيد. اما ايجاد يك كنترل سفارشي خواه داخل برنامه تان يا بEEه صEEورت يEEك كنترل مجزاي مشتق شده از جعبه متن عادي، كه صرفا كاراكترهاي عEددي )دقيقEا( بEEه هنگEام ورود داده هEEا بپذيرد ايده ي بهتري است. در اين روش شما كدنويسEEي كمEEتري را در برنامEEه تEEان خواهيEEد داشEEت چEEرا كEEه

( جعبه متن صورت مي گيرد. بEEا وجEEود محEEدود شEEدنinheritedاعتبار سنجي داخل كنترل ارث بري شده ي ) قابليت هاي اين جعبه متن جديد در مقايسه با جعبEEه متن معمEEولي، بEEاز هم جعبEEه متن جديEEد امكانEEات كامEEل طراحي شامل همه ي مشخصه ها و رويداد هاي جعبه متن اصلي را در اختيار شما قEEرار مي دهEEد. بEEه عالوه اگر كنترل مزبور را به طور مجزا ايجEEاد و كامپايEEل كنيEEد در برنامEEه هEEاي متعEEددي مي توانيEEد از آن اسEEتفاده

Class به صورت مجزا، نخست يك پروژه ي جديد از نEEوع numericTextboxنماييد. براي ايجاد يك كنترل با نام Library را در برگه ي Smart Device Projectه متنEEك جعبEEديل يEEراي تبEEد بEEط كEEانتخاب و ايجاد كنيد. چند خ

معمولي به جعبه متن عددي مورد نظر، نياز خواهيد داشت كه صرفا اجازه ي ورود داده هEEاي عEEددي و كليEEدBackSpace.را به كاربر مي دهد

38

Page 39: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.compublic class NumericTextBox : TextBox

{ protected override void OnKeyPress(KeyPressEventArgs e)

{ if ((e.KeyChar < '0' || e.KeyChar > '9') && e.KeyChar != (char)Keys.Back)

{

SystemSounds.Beep.Play(); e.Handled = true;

} base.OnKeyPress(e);

}

} زماني كه شما كد باطل كننده ي متد اصلي را مي نويسيد بايد تعEيين كنيEد كEه متEد كالس پايEه )اصEلي( چEEه موقع مي تواند فراخواني شود. مطابق مستندات ارث بري در برنامEEه نويسEEي شEEيء گEEرا هنگEEامي كEEه متEEد

OnKeyPress دEEرا در يك كالس مشتق شده باطل مي كنيم بايد مطمئن شويم كه مت OnKeyPressهEEق بEEمتعل كالس پايه فراخواني مي شود تا در اصل پيغام مربوط به رويداد دريافت گEEردد. از آنجEEا كEEه كنEEترل كننEEده ي

فقEط داده هEاي عEددي را دريEافت مي كنEد، شEما پس از اعتبEار سEنجي كEEاراكتر هEايTextChangedرويداد ورودي مي توانيد متد كالس پايه را فراخواني نماييEEد. اسEتفاده از جعبEه متن عEددي داخEل برنامEه بEEه همEان

روش استفاده از كنترل اعتبار سنجي كاربر است كه در بخش قبلي همين مقاله ديديد.

)ورود داده ي عددي(NumericTextBox )اعتبار سنجي كاربر( و UserCredentials: كنترل هاي 22شکل در حالت طراحي و اجرا داخل شبيه ساز

39

Page 40: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

كنترل هاي سفارشي اگر نمي خواهيد كنترل هاي موجود را دوباره استفاده )بازنويسي( كنيد ولي به كنترل هاي جديد نياز داريد مي توانيد كنترل سفارشي خودتان را بسازيد. معموال اين نوع كنترل ها از نقطه ي صفر نوشته مي شوند

ارث بري نماييد كهSystem.Windows.Forms.Controlحتي اگر بتوانيد به عنوان مثال آن ها را از كالس Own Drawnحداقل كارآيي هاي عمومي كنترل ها را داشته باشند. به اين نوع كنترل ها دست ساز )

Controls الگوي آماده اي براي كنترل هاي سفارشي نيست. آسان2008( هم مي گويند. در ويژوال استوديو ترين راه همان ايجاد يك كنترل كاربر داخل ويژوال استوديو است. پس از ايجاد پروژه ي خالي مي توانيد

به آن اضافه2008كنترل كاربر را حذف كنيد و به صورت دستي يك كنترل سفارشي را از ويژوال استوديو نماييد.

public partial class CustomControl1 : Control

{ public CustomControl1()

{ InitializeComponent();

}

protected override void OnPaint(PaintEventArgs pe)

{ // TODO: Add custom paint code here // Calling the base class OnPaint base.OnPaint(pe); }

} ( كنيد. بدين منظور كافي است متدPaintبراي ايجاد يك كنترل سفارشي از صفر بايد خودتان آن را ترسيم )

OnPaintرا باطل كنيد. البته اين مورد از همان لحظه ي ايجاد كنترل سفارشي به طور خودكار توسط به سورس برنامه تان اضافه مي شود. از آ”جا كه ترسيم كنترل تان به هنگام اجراي2008ويژوال استوديو

برنامه ي استفاده كننده از آن ممكن است بار ها و بار ها پيش بيايد، از اين رو كارآيي روش پياده سازي شما اهميت دوچندان پيدا مي كند. در واقع هم كارآيي و هم استفاده از منابع سيستم. از آن جا كه معموال از

استفاده مي كنيد و در استفاده از اين كالس ها به كدOnPaintكالس هاي مربوط به گرافيك در داخل متد اصلي مراجعه مي كنيد پاكسازي و آزاد سازي منابع مورد استفاده پس از هر بار ترسيم بسيار مهم است.

پيادهusing را به صورت تركيب با دستور Dispose# بهتر است از كالس هايي استفاده كنيد كه يك متد Cدر حتي در بروز خطا به هنگام فراخواني متدهاي يكDispose تضمين مي كند كه usingكرده باشند. دستور

( خيال تان راحت است.Exception Handlingشئ هم اجرا مي شود. در واقع شما از بابت مديريت خطاها )مثال مي خواهيد يك متن را نمايش دهيد.

40

Page 41: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com فراخواني كنيد و شيء از نوعOnPaintمي توانيد قطعه كد زير را استفاده نماييد و آن را داخل متد

Graphics را به صورت بخشي از پارامتر PaintEventArgs:به داخل آن بفرستيد

private void DisplayLabelInfo(Graphics g, string labelText, int xPos, int yPos)

{ using (Font labelFont = new Font(FontFamily.GenericSerif, 10.0F, FontStyle.Regular))

{

using (SolidBrush labelBrush = new SolidBrush(LabelForeground)) {

g.DrawString(labelText, labelFont,

labelBrush,

xPos, yPos); }

}}

ديگر هم الزمGraphicsآن چه ديديد يك متد ساده براي نمايش متن داخل يك كنترل بود. دو شيء از نوع ايجاد ميDisplayLabelInfo كه هر دوي اين ها به هنگام فراخواني SolidBrush و ديگري Fontداريد، يكي

به كار ببريد پاكسازي آن ها كارآيي باالتري خواهد داشت چونusingشوند. زماني كه اين اشيا را با دستور درست در زماني كه كنترل برنامه به خارج از محدوده ي تعريف )دسترسي( شيء مي رود،Disposeمتد

( اجرا ميGarbage Collectionفراخواني مي شود و در نتيجه دستورات كمتري به هنگام پاكسازي حافظه ) نيست. اين روش به ويژه زماني كه با كالس هاي مربوط به گرافيكFinalizeشود چون نيازي به فراخواني

سر و كار داريد - به دليل آن كه آن ها از منابع محدود محلي استفاده مي كنند كه بايد در اسرع وقت آزادشوند- بسيار مفيد است.

انجام دهيد صفحهGraphicsاگر شما مستقيما تمام ترسيم هاي گرافيكي را با استفاده از يك كپي نمونه ي خود نوشته ايد. در اينOnPaintنمايش حالت پرش خواهد داشت، به ويژه زماني كه كدهاي زيادي را در متد

حالت بهترين كار استفاده از تكنيك بافر است. يعني اين كه شما هر چيزي را كه مي خواهيد ترسيم كنيد در حافظه ي اصلي انجام دهيد و پس از ترسيم همه ي آن هاGraphicsابتدا در نمونه هاي جدا گانه ي

كه ترسيم روي صفحه ي نمايش را انجامGraphics را از حافظه ي اصلي به شيء Graphicsمحتواي شيء مي دهد كپي كنيد.

فرض كنيد يك تصوير همراه با يك متن روي آن نمايش مي دهيد. براي استفاده از بافر مراحل زير را بايدانجام دهيد:

protected override void OnPaint(PaintEventArgs pe){ // Initialize a Graphics object with the bitmap we just created

// and make sure that the bitmap is empty.

Graphics memoryGraphics = Graphics.FromImage(memoryBitmap);

memoryGraphics.Clear(this.BackColor); // Draw the control image in memory memoryGraphics.DrawImage(someImage,

destRect,

imageRect,

GraphicsUnit.Pixel); // Display some text

DisplayLabelInfo(memoryGraphics, “Some text”, 0, 0); // Draw the memory bitmap on the display

pe.Graphics.DrawImage(memoryBitmap, 0, 0); // Calling the base class OnPaint

41

Page 42: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com base.OnPaint(pe);

} و همچنين يك نمونهmemoryBitmap با نام Bitmapدر كد قبلي فرض بر اين است كه شما يك نمونه از نوع

و در نهايت يك مستطيل براي ترسيم تصوير در داخل آن ايجاد و مقدار دهيsomeImage با نام Imageاز نوع باعث خواهد شد كه آن چه در رويدادOnPaint در انتهاي متد base.OnPaintاوليه كرده ايد. فراخواني متد

Paint از پيش از اين ثبت شده است پس از نمايش محتويات توسط متد OnPaintشما، روي آن ها نمايش داده خواهد شد.

- كه نوع خاصي از فايلxmtaبراي اضافه كردن امكانات طراحي به كنترل سفارشي تان، بايد يك فايل .XML ايجاد نماييد.– است

)تايپ هوشمند( اين امكان را به شما مي دهد كه يك فايلIntelliSense با استفاده از 2008ويژوال استوديو ( به پروژه ي تان از داخل سولوشن اكسپلورر اضافهDesign-Time Attribute Fileمشخصات زمان طراحي )

نماييد. قطعه كد زير يك نمونه از اين نوع فايل را نشان مي دهد يك مشخصه براي كنترل سفارشي شما با همراه با يك متن2008يك رده بندي موضوعي ايجاد مي كند و در پنجره ي مشخصات ويژوال استوديو

راهنما نشان مي دهد. <?xml version="1.0" encoding="utf-16"?><classes xmlns="http://schemas.microsoft.com/VisualStudio/2004/03/SmartDevices/XMTA.xsd">

<class name="Compass.Compass"> <property name="Heading">

<category>CompassSpecific</category> <description>Sets the travelling speed in mph</description> </property>

</class></classes>

42

Page 43: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

استفاده از كنترل سفارشي داخل يك برنامه پس از ايجاد يك كنترل سفارشي آن را داخل يك برنامه استفاده مي كنيد. اگر شما امكانات طراحي را براي كنترل سفارشي تان به درستي ايجاد كرده باشيد و كنترل سفارشي را به جعبه ابزار ويژوال استوديو اضافه

٤كرده باشيد، قرار دادن آن در واسط كاربري برنامه تان همانند كنترل هاي استاندارد خواهد بود. در شكل Compass Controlواسط كاربر يك برنامه ي قطب نماي الكترونيكي را مي بينيد كه از يك كنترل سفارشي

استفاده كرده است. همان طور كه مي بينيد امكانات كامل طراحي همراه با تعدادي مشخصه براي اين كنترل در دسترس قرار دارد. به عالوه مي بينيد كه همه ي مشخصه ها مقدار پيش فرض و متن راهنما در

باره ي نحوه ي استفاده از آن مشخصه دارند. براي ساختن اين واسط كاربر بايد يك »كنترل قطب نما« را ( هم براي فعال / غير فعال سازي دريافت داده ها ازMenu بيندازيد و يك كنترل منو )MainFormداخل

به برنامه افزوده شده است.GPSگيرنده ي داخلي

: نرم افزار قطب نماي الكترونيكي كه يك كنترل سفارشي را استفاده مي كند23شکل

را دريافت كرد، جهت و سرعت حركت كاربر در صفحهGPSبعد از اين كه برنامه اطالعات محل جغرافيايي ي »كنترل قطب نما« نمايش داده مي شود. براي به روز رساني اين داده ها »كنترل قطب نما« تعدادي

مشخصه در اختيار برنامه نويس قرار داده است كه از داخل برنامه قابل مقدار دهي هستند و مقاديري را خوانده مي شوند، نشان مي دهند.GPSكه از گيرنده ي

43

Page 44: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

افزدون اطالعات مربوط به محل جغرافيايي به برنامه هستند كهGPS (GPS Intermediate Driver=GPSID) داراي يك راه انداز ٦ و ٥دستگاه هاي ويندوز موبايل

و همچنين بهGPSبراي شما به عنوان يك توسعه دهنده، دريافت اطالعات مكان جغرافيايي از طريق اشتراك گذاري سخت افزار آن بين برنامه هاي مختلف بسيار آسان خواهد بود. با گسترش دستگاه هاي

الزم است كه اطالعاتي راجع به توليد نرم افزار بر مبناي آن داشته باشيد. براي به دستGPSمجهز به ميكروسافت به آدرس زير مراجعه نماييد:GPSآوردن اطالعاتي در زمينه راه انداز

http://msdn.microsoft.com/en-us/library/ms850332.aspx دارند. يكي از اين كد هاGPS تعداد زيادي كد برنامه ي نمونه براي ٦ و ٥ابزار هاي توسعه ي ويندوز موبايل

را در اختيار تان قرار خواهدGPSID نيست بلكه يك كالس مديريتي از كاركرد هاي GPSIDصرفا استفاده از داد. اين مثال ها را مي توانيد در پوشه هاي زير پيدا كنيد:

<Installation Folder>\<Windows Mobile SDK>\Samples\PocketPC\Cs\Gps<Installation Folder>\<Windows Mobile SDK>\Samples\Smartphone\Cs\Gps

درست كنيد كه در يكي از پوشه هاي فوق، ذخيرهGPSپيش از استفاده از اين شما بايد ابتدا يك سولوشن از شما راجع به تبديل آن به نگارش جديد خواهد پرسيد چون اين2008شده است. نخست ويژوال استوديو

نوشته شده اند و بدون تبديل به نگارش جديد كار نخواهند كرد. پس2005كدهاي نمونه در ويژوال استوديو از تبديل مي توانيد سولوشن را درست كنيد و از امكانات فايل اسمبلي

Microsoft.WindowsMobile.Samples.Locationاستفاده نماييد. بدين منظور بايد اين اسمبلي را در سولوشن را به سولوشن تان بيفزاييد تا استفاده از آن درGPSID( كنيد. يك مرجع به كالس importخودتان وارد )

برنامه تان امكان پذير گردد. دياگرام داده ها و متد هاي مرتبط با كالس استفاده شده در اين مقاله در شكل نمايش داده شده است.٥

GPSID: دياگرام كالس 24شکل

نقطه ي آغاز كار شما با سخت افزار آن است. در اين كالس متدهايي براي دريافت اطالعاتGpsكالس به صورت بالدرنگ و هماهنگ وجود دارد و در ضمن يك رويداد كه به هنگام تغييرGPSمكان جغرافيايي

هست.GPSاطالعات مكان، فراخواني مي شود. متدهايي نيز براي فعال/غير فعال سازي سخت افزار

ايجاد وGps نخست الزم است كه يك شيء جديد از نوع GPSپيش از دريافت اطالعات مكاني از گيرنده ي را براي آن فراخواني كنيد. اين كار باعث مي شود كه اگر برنامه ي شما اولين استفاده كننده يOpenمتد

فعال گردد. پس از پايان استفاده از آن، اگرGPS روي اين دستگاه است، سخت افزار GPSسخت افزار فراخوانيGPS را براي شيء Close روي دستگاه است بايد متد GPSبرنامه ي شما آخرين استفاده كننده ي

باتريGPS را غيرفعال كند. اين كار باعث مي شود كه به هنگام نياز نداشتن به GPSكنيم تا سخت افزار دستگاه بيهوده مصرف نگردد.

44

Page 45: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com را نشان مي دهد و در مديرGPSقطعه كد زير چگونگي فعال/غير فعال سازي و اتصال به سخت افزار

رويداد هاي جداگانه اجرا مي شود:

private void menuEnableGPS_Click(object sender, EventArgs e){

gps.Open();

gps.LocationChanged += new LocationChangedEventHandler(gps_LocationChanged);

menuDisableGPS.Enabled = true; menuEnableGPS.Enabled = false;

}

private void menuDisableGPS_Click(object sender, EventArgs e){

gps.LocationChanged -= gps_LocationChanged; gps.Close();

menuEnableGPS.Enabled = true;

menuDisableGPS.Enabled = false;}

را قطEع كنيEد بEه همين دليEEل بايEد در مEدير رويEدادGPSاگر كاربر بخواهد برنامه را ببندد باز هم بايد اتصEال Closing وزEEر هنEEه اگEEبستن برنامه( بررسي كنيد ك( GPSتEد و از فهرسEال نماييEير فعEت آن را غEال اسEفع را فراخواني كنيد. كEEار اصEEليGps از شيء Close( و متد unsubscribe خارج شويد )LocationChangedرويداد

انجام مي شEEود. هEEر برنامEEه اي ميgps_LocationChangedبرنامه ي قطب نماي الكترونيكي در مدير رويداد تغيير كنEEد،GPS( كند. هر زمان كه اطالعات مكاني subscribeتواند با استفاده از مدير رويداد در آن ثبت نام )

LocationChangedمدير رويداد برنامه براي كEEار روي اين تغيEEيرات فراخEEواني مي شEEود. ثبت نEEام در رويEEداد تضمين مي كند كه برنامه ي شما در هر لحظه به آخرين اطالعات مكاني دسترسي دارد، البته بEEا اين فEEرض

اطالعات ماهواره اي را به درستي دريافت مي كند.GPSكه سخت افزار

و نسخه ي اصلي آن را نشان مي دهد:gps_LocationChangedقطعه كد زير مدير رويداد

void gps_LocationChanged(object sender, LocationChangedEventArgs args){

GpsPosition pos = args.Position;

compass1.HeadingValid = pos.HeadingValid; if (pos.HeadingValid) {

compass1.Heading = pos.Heading;

}

compass1.SpeedValid = pos.SpeedValid; if (pos.SpeedValid) {

compass1.Speed = pos.Speed * 1.152; // convert knots to MPH

}

if (pos.HeadingValid | pos.SpeedValid) { compass1.Invalidate();

}}

Heading هست، شما در اين مدير رويداد فقط مشخصه هاي Gpsبا اين كه مشخصه هاي زيادي براي كالس )سرعت( را مي بينيد. چون نرم افزار صرفا يك قطب نماي الكترونيكي است، به همينSpeed)جهت( و

)طول جغرافيايي( مهم نيستند. از آنLongitude )عرض جغرافيايي( و Lattitudeخاطر مشخصه هايي مانند جا كه اطالعات دريافتي از ماهواره ممكن است به درستي خوانده نشوند، الزم است كه درست بودن

45

Page 46: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com فراخواني كنيد تا اگرInvalidateمقادير مشخصه هاي مورد نظر تان را بررسي كنيد. در نهايت بايد متد

حداقل يكي از داده هاي خوانده شده تغيير كرده باشد، »كنترل قطب نما« را به روز نمايد. نوشته ايد- برنامه تان را كامپايل و اجرا نماييد باgps_LocationChangedكه براي مدير رويداد –اگر با كد باال

خطاي زمان اجرا مواجه خواهيد شد. مفهوم پيغام خطا اين است كه شما نمي توانيد داده هاي »كنترلقطب نما« را به روز كنيد. متن زير را در متن پيغام خواهيد ديد:

Control.Invoke must be used to interact with controls created on a separate threadControl.Invoke.بايد با اشيايي در ارتباط باشد كه در پردازش هاي مجزا ايجاد شده اند

بازبيني پشته، اطالعات زير را نشان خواهد داد:

StackTrace: at Microsoft.AGL.Common.MISC.HandleAr(PAL_ERROR ar)

at System.Windows.Forms.Control.Invalidate() at ElectronicCompass.MainForm.gps_LocationChanged(Object sender,

LocationChangedEventArgs args) at Microsoft.WindowsMobile.Samples.Location.Gps.WaitForGpsEvents() متن پيغام خطا اطالعات مهمي براي شناسايي مشكل به ما مي دهد. به نظر مي رسد كه چند پردازش هم

Stackزمان در برنامه ي شما اجرا مي شوند، در حالي كه شما فقط يك پردازش ايجاد كرده ايد. اگر به Trace دقت كنيد متوجه مي شويد كه متد Invalidate – از داخل مدير رويداد–كه خطا در آن رخ داده است

فراخواني شده است. ظاهراGPSIDفراخواني شده است كه آن هم توسط يك متد داخل كالس مديريت GPSIDيا كالسي كه آن را مديريت مي كند از چند پردازش استفاده مي كنند و اين همان چيزي است كه

بايد مواظبش باشيد.

( به هنگام بروز خطاCompass: تغيير مشخصه هاي كنترل قطب نما )25شکل

46

Page 47: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

به روز رساني كنترل هاي واسط كاربر در يك برنامه ي چند پردازشي اشتباهي كه بيشتر توسعه دهنده گان نرم افزار به آن دچار مي شوند اين است كه سعي مي كنند به طور مستقيم از داخل پردازش فعال، كنترل هاي واسط كاربر را تغيير دهند يا به آن ها دسترسي پيدا كنند. اين

١.٠كار منجر به واكنش غير منتظره مي شود. در نگارش .NET Compact Framework يا باالتر نتيجه اندكي بهتر٢.٠ برنامه پشت سر هم قفل مي شود. در نگارش

است. هنگامي كه بخواهيد يك كنترل واسط كاربر را از داخل پردازش ديگري )غير از پردازشي كه كنترل ايجاد مي گردد. درNotSupportedExceptionمورد نظر در داخل آن ايجاد شده است( تغيير دهيد خطاي

شما اين مورد را در برنامه ي قطب نماي الكترونيكي مي بينيد.٦شكل

»فقط پردازشي )يا متدي( كهبراي رفع اين مشكل، بايد خودتان را ملزم به رعايت اين قانون بكنيد كه: زماني كه بخواهيد يك كنترل را داخلكنترل واسط كاربر را ايجاد مي كند مي تواند آن را تغيير دهد«

را فراخواني كنيد. اين متد يك نماينده ي مخصوصControl.Invokeپردازش فعال تغيير دهيد هميشه بايد متد ( حاوي آن كنترل دسترسي دارد )و در واقع آنwindow handleرا در پردازشي كه به نگهدارنده ي پنجره ي )

را تغيير دهيد.gps_LocationChangedرا ايجاد كرده است(، فراخواني مي كند. حال مي توانيد مدير رويداد )نماينده( تعريف كنيد كه بتواند يك متد را به صورت آرگومان به متدdelegateبدين منظور نخست بايد يك

Control.Invoke ارسال كند. يك delegateيك نوع داده ي ساده است كه يك نشانه )اشاره گر( از متد را تعريف مي كند كه مي تواند توسط هر متد با اشاره گر سازگار با آن مقدار دهي شود.

private delegate void UpdateDelegate();void gps_LocationChanged(object sender, LocationChangedEventArgs args)

{ GpsPosition pos = args.Position; compass1.HeadingValid = pos.HeadingValid; if (pos.HeadingValid) {

compass1.Heading = pos.Heading; } compass1.SpeedValid = pos.SpeedValid; if (pos.SpeedValid) {

compass1.Speed = pos.Speed * 1.152;

// convert knots to MPH before displaying } if (pos.HeadingValid | pos.SpeedValid)

{

compass1.Invoke((UpdateDelegate)delegate()

{ compass1.Invalidate(); });

}

} به طور مستقيم فراخوانده نميcompass1.Invalidate مي بينيد كه gps_LocationChangedداخل مدير رويداد

فراخواني مي شود. اگر با بحث نماينده هاي بي نام )compass1.Invokeشود بلكه از داخل متد ديگري به نام anonymous delegatesآشنا نباشيد اين روش براي تان نا مفهوم خواهد بود. در مدير رويداد )

gps_LocationChanged اين قابليت C# 2.0 براي فراخواني compass1.Invalidate از داخل compass1.Invoke استفاده مي شود. در عين حال اين امكان هم هست كه متد جداگانه اي براي فراخواني

compass1.Invalidate و فراخواني آن از داخل UpdateDelegate تعريف شود. چون كنترل Compassفقط از يك جا فراخواني مي شود، استفاده از نماينده ي بي نام باعث خواهد شد كه كدنويسي كوتاه تر شود.

47

Page 48: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com GPSبا اين تغييرات مي توانيد برنامه ي قطب نماي الكترونيكي را بدون خطا اجرا و اطالعات ماهواره اي

دريافت نماييد.GPSIDرا از طريق

GPS: قطب نماي الكترونيكي در حال اجرا و نمايش داده هاي 26شکل

حال اين سؤال در ذهن تان هست كه اين نرم افزار االن داخل شبيه ساز دستگاه اجرا مي شود ولي را دريافت مي كند. پس چگونه كار مي كند؟GPSاطالعات ماهواره اي

آزمايش برنامه هاي حساس به محل جغرافيايي استفاده مي كند آزمايش آن برنامه هم داستان ديگري است. اغلبGPSاگر برنامه اي بنويسيد كه از

در فضاي بسته يعني همان جايي كه شما اآلن نشسته ايد و برنامه مي نويسيد عمل نميGPSگيرنده هاي كنند. به عالوه اگر هم كار كنند اطالعات دريافتي از ماهواره مربوط به يك محل است و شما هنگام توسعه

و آزمايش برنامه نمي توانيد حركت كنيد تا اطالعات جديد را دريافت نماييد. براي حل اين مشكل، ابزار راGPS دارد كه فايل هاي داده ي متني حاوي اطالعات FakeGPS يك ابزار به نام ٦توسعه ي ويندوز موبايل

استفاده مي كنند بدونGPSID استفاده مي نمايد. برنامه هايي كه از GPSبراي شبيه سازي كاركرد دستگاه استفادهGPS براي شبيه سازي حالت واقعي سخت افزار FakeGPSنياز به دستكاري مي توانند از برنامه ي

روي شبيه ساز دستگاه كار مي كند شما مي توانيد نرم افزار هاي ديگر را نيزFakeGPSنمايند. از آن جا كه با استفاده از آن اجرا و آزمايش كنيد.

كافي است كه آن را روي دستگاه يا شبيه ساز آن نصب نماييد. اين برنامه بهFakeGPSبراي استفاده از مي باشد. براي نصب آن روي شبيه ساز دستگاه كافي است كه پوشه ي حاوي فايلCABصورت يك فايل

FakeGPS را در پنجره ي Emulator Properties.به اشتراك بگذاريد تا همانند كارت حافظه ي جانبي عمل كند

FakeGPS: اشتراك پوشه به هنگام مكان يابي شبيه سازي شده با 27شکل

48

Page 49: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com ( برويد كه به پوشهStorage Card به داخل كارت حافظه )File Explorerداخل شبيه ساز دستگاه مي توانيد با

را انتخاب و اجرا كنيد تا برنامه اش در شبيهFakeGPS مربوط به CABي اشتراكي اشاره مي كند. فايل نصب خواهد شد. شماGPS همراه با تعدادي فايل متني حاوي اطالعات FakeGPSساز نصب گردد. برنامه ي

هستند- براي حالت هاي مختلف تست برنامهGPSكه حاوي اطالعات –مي توانيد فايل هاي متني خودتان را مي تواند چيزي شبيه به اين باشد:FakeGPSتان به برنامه اضافه نماييد. يك فايل متني

$GPGLL,4738.0173,N,12211.1874,W,191934.767,A*21 $GPGSA,A,3,08,27,10,28,13,19,,,,,,,2.6,1.4,2.3*3E

$GPGSV,3,1,9,8,71,307,43,27,78,59,41,3,21,47,0,10,26,283,40*77

$GPGSV,3,2,9,29,13,317,0,28,37,226,37,13,32,155,36,19,37,79,42*42 $GPGSV,3,3,9,134,0,0,0*46

$GPRMC,191934.767,A,4738.0173,N,12211.1874,W,0.109623,12.14,291004,,*21 $GPGGA,191935.767,4738.0172,N,12211.1874,W,1,06,1.4,32.9,M,-17.2,M,0.0,0000*75

$GPGLL,4738.0172,N,12211.1874,W,191935.767,A*21

$GPGSA,A,3,08,27,10,28,13,19,,,,,,,2.6,1.4,2.3*3E $GPRMC,191935.767,A,4738.0172,N,12211.1874,W,0.081611,15.81,291004,,*2A

برنامه را در شبيه ساز اجرا كنيد، سپس آن را فعال كنيد و فايلFakeGPSبراي شروع دريافت داده ها از كليك كنيد تا ارسال داده ها بهDone مورد نظر تان را انتخاب نماييد. در نهايت روي دكمه ي GPSداده ي

آغاز گردد.GPSIDداخل

FakeGPS داخل برنامه ي GPS: انتخاب فايل داده ي ٩شکل

به آن نياز داشتيد. حال روي شبيه سازGPSاين همه ي آن چيزي بود كه براي آزمايش برنامه هاي مبتني بر دستگاه و هم روي دستگاه فيزيكي )واقعي( ويندوز موبايل مي توانيد برنامه تان را آزمايش كنيد. پس از

مي توانيد برنامه ي قطب نماي الكترونيكي را اجرا كنيد.FakeGPSنصب و تنظيم

49

Page 50: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

فصل پنجم SQL Server CEمقدمه اي بر

50

Page 51: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.comمقدمه

توسعه ي نرم افزار ويندوز موبايل شباهت زيادي به توسعه ي نرم افزار در دسكتاپ دارد به ويژه زماني كه يكي از دو زبان ويژوال بيسيك يا ويژوال سي شارپ دات نت را استفاده مي كنيد. شما همان ابزارهاي

توسعه ي برنامه هاي ويندوز دسكتاپ را براي ويندوز موبايل هم استفاده مي كنيد ليكن تفاوت هايي نيز بين اين دو محيط هست. اين تفاوت به هنگام استفاده از بانك اطالعاتي هم هست. اغلب برنامه ها از بانك

اطالعاتي استفاده مي كنند. براي ذخيره سازي داده در دستگاه شما به عنوان توسعه دهنده دست تان باز وSQL Server 2005 Compact Editionاست كه از چه روشي استفاده كنيد. در اين مقاله مطالبي راجع به

روش هاي مختلف دسترسي به داده هاي محلي ذخيره شده روي دستگاه خواهيد ديد. ما دو روش متفاوت دسترسي به داده ها را از لحاظ كارآيي زمان الزم براي اجرا و ميزان كد نوشته شده مقايسه خواهيم كرد.

را استفادهNorthwind از بانك اطالعاتي نمونه ي Order_Details و Ordersدر مثال هاي كدنويسي دو جدول همراه با ويژوالSQL Server 2005 Compact Edition 3.5كرده ايم. نگارش مورد استفاده ي بانك اطالعاتي،

است. 2008استوديو

SQL Server Compact Edition هايي كه روي دستگاه هاي ويندوز موبايل اجرا مي شوند، ممكنSQL Serverتنوع نام ها و نگارش هاي

كه در حالSQL Server 2005است شما را سر در گم كند. در زمان نگارش اين مقاله مهم ترين نگارش هاي استفاده بر روي دستگاه هاي ويندوز موبايل هستند، به شرح زير اند:

SQL Server Mobile 3.0 و 2005: همراه با ويژوال استوديو SQL Server 2005منتشر شد. اين ( اجرا مي شود. از زماني كه ابزارهاي توسعه رويTablet PCنگارش روي كامپيوتر هاي كوچك )

كامپيوتر هاي دسكتاپ نصب مي شوند اين نگارش روي ماشين هاي خاصي اجرا مي شود.SQL Server 2005 Compact Edition 3.1 منتشر شد و تا حد زيادي بر پايه ي 2006: در سال SQL

Server Mobile 3.0 ساخته شده است. اين نگارش SQL Server CEروي دستگاه هاي ويندوز موبايل و SQL Server CEدر عين حال روي دسكتاپ ها و لپ تاپ ها هم بدون محدوديت اجرا مي گردد.

دارد و امكانات كامل بانك اطالعاتي رابطه ايSQL Serverسازگاري زيادي با ويرايش هاي مختلف (ROM روي حافظه ي اصلي رام )SQL Server CEرا در مقياس كوچك فراهم مي كند. اين نگارش

نصب مي باشد.٦دستگاه هاي ويندوز موبايل SQL Server 2005 Compact Edition 3.5 SP1: به صورت دانلود مستقل منتشر شد و2007 در سال

SQL Server CE 3.1 نيز موجود است. بر مبناي توسعه ي 2008در عين حال داخل ويژوال استوديو توليد شده است.

امكان همسان سازي با سرور هاي ميكروسافت را از طريق سرويسSQL Server CEاين نگارش Microsoft Syncronization براي ADO.NET.فراهم مي سازد

SQL Server 2005 Compact Editionزير ساخت SQL Server CE يك بانك اطالعاتي سبك است و بر خالف نگارش هاي ديگر SQL Serverبه صورت يك ،

SQL Serverپردازش همراه با برنامه اي كه از آن استفاده مي كند، اجرا مي شود. اين بدان معني است كه CE به صورت يك سرور مجزا پياده سازي نشده است. بانك اطالعاتي آن در يك فايل منفرد با پسوند sdf

ذخيره مي شود و همچنين امكان همسان سازي محتويات آن بين يك كامپيوتر دسكتاپ و دستگاه ويندوز( در ويندوز ايكس پي يا برنامه يActiveSyncموبايل از طريق برنامه ي اكتيو سينك )

WMDC (Windows Mobile Device Center)در ويندوز ويستا يا سون وجود دارد. امكانات پيشرفته تر همسان ADO.NET در دسترس است. همچنين ادغام، كپي كردن و سرويس همسان سازي RDAسازي توسط

براي همسان سازي بين سرور و چند دستگاه و حتي پشتيباني از سيستم تشخيص تداخل در مواردي كه SQL Serverداده ها توسط چند كاربر به صورت هم زمان در حال به روز رساني هستند، از جمله امكانات

CE است. اين نگارش از SQL Serverداراي سطوح مختلف امنيتي است و همانند بقيه، بانك هاي اطالعاتي مي توانند با كلمه ي رمز محافظت شده، داده هاي داخل آنها نيز رمز نگاري شوند. اين موضوع به خصوص

براي دستگاه هاي ويندوز موبايل كه در معرض گم شدن يا سرقت هستند، مهم است. به ويژه زماني كهبانك اطالعاتي روي كارت حافظه ذخيره مي شود و كارت حافظه بيشتر در معرض سرقت است.

51

Page 52: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

و يك نرم افزار مديريت شده بحث مي كند.SQL Server 2005 Compact Edition 3.5اين مقاله روي تركيب كه هر كدام–شما چند روش مختلف درج، تغيير و بازيابي داده ها را از داخل يك برنامه ي مديريت شده

خواهيد ديد.–موافق و مخالف خود را دارد

راOrder Detail و Orders جدول هاي Northwindبراي مقايسه ي روش ها با يكديگر ما از بانك اطالعاتي C:\Program Files\Microsoft SQL كه در مسير -انتخاب كرده ايم. براي استفاده از اين بانك اطالعاتي

Server Compact Edition\v3.5\Samples قرار دارد- الزم2008 همان مسير پيش فرض نصب ويژوال استوديو را با مجوز مدير سيستم2008است كه ويژوال استوديو

(administrator elevationsدر ويندوز ويستا يا سون اجرا نماييد. در غير اين صورت امكان اتصال و دسترسي ) به بانك اطالعاتي را نخواهيد داشت.

استفاده از ديتاست هاي داراي نوع است.SQL Server CEاستفاده از ديتاست هاي داراي نوع، يك روش آسان براي دسترسي به بانك اطالعاتي

مقدار زيادي از كد به صورت خودكار توليد مي شود. ليكن ديتاست در واقع يك كپي از داده ها در حافظه ي استخراج شده است. به عبارت ديگر ديتاست يك كپيSQL Server CEاصلي است كه از منبع داده مانند

فيزيكي از داده هايي است كه شما با آن ها كار مي كنيد. اين بدان معني است كه زمان الزم است تا داده ها از بانك اطالعاتي در ديتاست بارگذاري شوند و تغييرات صورت گرفته روي داده ها، به طور خودكار روي بانك اطالعاتي اعمال نمي شوند. به هنگام مقداردهي اوليه ي ديتاست، از آن جا كه شما روي كپي داده ها

در حافظه ي اصلي كار مي كنيد، كار با داده ها بسيار سريع انجام مي شود. براي كار با بانك هاي اطالعاتيحجيم ممكن است با مشكل كمبود حافظه ي اصلي مواجه شويد.

( هاي با نوع دادهDataSet: ديتاست )28شکل

52

Page 53: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com همراه با يك منبع داده )Smart Device را مي بينيد كه يك پروژه از نوع 2008 ويژوال استوديو ١در شكل

Data Source كه به بانك اطالعاتي )Northwind متصل است. داخل Data Source Wizard دو جدول Ordersو Order Detail انتخاب شده اند كه به منبع داده ي داراي نوع متصل هستند. همان طور كه در پنجره ي Data

Sources مي بينيد، رابطه ي بين Orders و Order Detailبه طور خودكار براي شما ايجاد شده است. اگر مي ( را در واسط كاربر داشته باشيد، بايد كنترل هاي مورد نظرmaster-detailخواهيد نمايش دو جدول متصل )

روي فرم بكشيد. براي نگهداري خودكار رابطه ي بين جدول ها الزم استData Sourcesتان را از پنجره ي انتخاب نماييم.Orders را همراه با جدول Order Detailكه اطالعات جدول

: فرم هاي توليد شده ي خودكار در محيط طراحي ويژوال استوديو29شکل

فرم هايي را كه به طور خودكEار ايجEEاد شEده انEد مي بينيEد. بEEدون نيEEاز بEEه كدنويسEي مي توانيEد٢در شكل را ببينيد. تنها كاري كه انجام شده است، كپي داده ها داخEEل ديتاسEEت درNorthwindاطالعات بانك اطالعاتي

حافظه ي اصلي است. حال نياز داريد مطمئن شويد كه تغيEEيرات در بانEEك اطالعEEاتي بEEه طEEور دائمي ذخEEيره MainForm توليEEد شEEده اسEEت فقEEط مي توانEEد داده هEEا را در 2008شوند. كدي كه توسط ويژوال اسEEتوديو

( كد هاي ديگري هم جهت نمايش اطالعات خالصه و پنجره ي مكالمEEه ي ويEEرايش داده هEEا١نشان دهد. )كد توسط ويژوال استوديو توليد شده اسEEت. پيش از مقEEدار دهي كنEEترل هEEاي واسEEط كEEاربر توسEEط داده هEEاي

connectionديتاست احتماال بايد رشته ي اتصال ) string اتيEEرا براي وصل شدن به بانك اطالع )SQL Server CEتEEه دسEEه را بEEتغيير دهيد. به ويژه براي بانك اطالعاتي محافظت شده توسط گذرواژه، اگر افسار برنام

ويژوال استوديو بدهيد، رشته ي اتصال حاوي گذرواژه خواهد بود كه اين خود يك ايراد امنيتي است.

public partial class MainForm : Form{ public MainForm()

{

InitializeComponent();

} private void MainForm_Load(object sender, EventArgs e) {

if (NorthwindDataSetUtil.DesignerUtil.IsRunTime())

{ this.order_DetailsTableAdapter.Fill(this.northwindDataSet.Order_Details);

}

if (NorthwindDataSetUtil.DesignerUtil.IsRunTime()) {

this.ordersTableAdapter.Fill(this.northwindDataSet.Orders);

53

Page 54: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com }

} private void newMenuItemMenuItem_Click(object sender, EventArgs e)

{ ordersBindingSource.AddNew(); SqlCE35WithDataSets.OrdersEditViewDialog ordersEditViewDialog =

SqlCE35WithDataSets.OrdersEditViewDialog.Instance(this.ordersBindingSource); ordersEditViewDialog.ShowDialog();

}

private void ordersDataGrid_Click(object sender, EventArgs e) { SqlCE35WithDataSets.OrdersSummaryViewDialog ordersSummaryViewDialog =

SqlCE35WithDataSets.OrdersSummaryViewDialog.Instance(this.ordersBindingSource); ordersSummaryViewDialog.ShowDialog();

}}

: كد توليد شده ي خودكار براي مقدار دهي اوليه ي كنترل هاي واسط كاربر توسط داده هاي1كد ديتاست

بEEه ديتاسEEت - كEEه داده هEEا را توسEEطNorthwind داده ها از بانك اطالعEEاتي MainForm_Loadدر مدير رويداد dataاتصال داده ) bindingات و( براي كاربر نشان مي دهد- كپي مي شوندEEكد اضافه هم براي نمايش جزئي .

افزدون سفارش )ركورد( جديد نوشته شده است. براي بررسي كارآيي اين روش در بازيابي داده ها از بانك زمEEان را بEEا اسEEتفاده از شEEيء كرنومEEتر )MainForm_LoadاطالعEEاتي مي توانيEEد در ابتEEداي مEEدير رويEEداد

Stopwatch.دEEاره ثبت كنيEEان را دوبEEف و زمEEتر را متوقEEثبت كنيد و در دستور پاياني رويداد مذكور نيز كرنوم ) ( نمايش دهيد. به روشstatus barحال مي توانيد زمان صرف شده براي بازيابي داده ها را در نوار وضعيت )

مشابه مي توانيد زمان الزم براي نمايش جزئيات را نيز به هنگام حركت بين ركورد هEEا محاسEEبه كنيEEد. بEEدين منظور زمان را به هنگام فشار دادن كليد مربوط به حركت بين ركورد ها توسط كاربر، ثبت كرده، بEEه محض

دوبEEاره زمEEان را ثبت و فاصEEله ي زمEEاني را محاسEبه نماييEEد.MainFormنخستين تغيير مقEEدار جعبEEه متن در اين زمان ها را به هنگام اسفاده از ديتا ست داراي نوع داده ، به شما نشان مي دهد. همان طور كه٣شكل

ثانيEEه بEEوده13مي بينيد زمان الزم از آغاز اجراي برنامه تا نمايش داده هEEا روي فEEرم اصEEلي در شEEبيه سEEاز 300است. حركت بين ركورد ها و به ويژه ويرايش اطالعات مربوط به جزئيات سEEفارش بEEه طEEور ميEEانگين

ميلي ثانيه زمان برده است. در عين حال شما مي بينيد كه حEEركت از ركEEورد اول بEEه ركEEورد آخEEر بEEه همEEان ميزان حركت از يك ركورد به ركورد بعدي اش زمان برده است و اين در واقEع نشEان مي دهEد كEه ديتاسEت

نشEEان داده٢كامال در حافظه ي اصلي كار مي كند. اندازه گيري زمان حركت از ركEEورد اول بEEه آخEEر در كEEد شده است.

private void menuGotoLast_Click(object sender, EventArgs e)

{

ordersBindingSource.MoveFirst();

sw.Reset(); sw.Start(); ordersBindingSource.MoveLast();

sw.Stop();

statusBar1.Text = "Goto last row: " +

sw.ElapsedMilliseconds + " msec.";}

: اندازه گيري زمان الزم براي حركت از ركورد اول به آخر2كد

54

Page 55: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

زمان الزم براي بارگزاري و نمايش داده ها و جا به جايي بين ركورد ها: 30شکل

از آن جا كه ديتاست همه ي داده ها را در حافظه ي اصلي نگه مي دارد در زمان هاي مشخصEEي الزم اسEEت ( كنيد و زمان آن بسته به نظر خود تان دارد. يك روشcommitكه تغييرات را در بانك اطالعاتي ثبت قطعي )

اين است كه تا جايي كه ممكن است روي ديتاست كار كنيد و زمEEاني كEEه كEEاربر مي خواهEEد برنامEEه را ببنEEدد تغييرات را روي بانك اطالعاتي ثبت قطعي نماييد. البته اگر قرار است داده ها را با يك سرور اصلي همسان سازي كنيد، بهتر است كه پيش از همسان سازي با آن، داده ها را ثبت قطعي نماييد. به هر حال اگر همه ي داده ها در ديتاست )حافظه ي رم( بمانند به هنگام از كار افتادن برنامه، داده هاي شما از بين خواهنEEد رفت. در يك برنامه ي معمولي ممكن است شما در زمان هاي خاصي از جمله بسته شدن برنامه، همسEEان سEEازي با سرور خارجي و زماني كه برناه در پس زمينه قرار مي گيرد، داده هEEا را ثبت قطعي نماييEEد. در عين حEEال ممن است بخواهيد داده ها را به محض ايجاد ركورد جديEEد نEEيز ثبت قطعي كنيEEد كEEه در اين حEEالت، ديتاسEEت

نحEEوه ي ثبت قطعي را بEEه شEEما٣تقريبا به صورت يك كپي تكراري بي مصرف از داده هEEا خواهEEد بEEود. كEEد )يستن برنامه( داده هEEا ثبت قطعي مي شEEوند البتEEه بEEهClosingنشان مي دهد. در اين مثال در مدير رويداد

شرطي كه محتواي ديتاست تغيير كرده باشد.private void MainForm_Closing(object sender, CancelEventArgs e){

if (northwindDataSet.HasChanges())

{

ordersTableAdapter.Update(northwindDataSet); order_DetailsTableAdapter.Update(northwindDataSet); }

}: ثبت قطعي داده ها به هنگام بستن برنامه3كد

زماني كه از ديتاست استفاده مي نماييد، بخش اعظم كد توسط ويEEژوال اسEEتوديو ايجEEاد مي شEEود و پس از مقدار دهي اوليه ي ديتاست كار با داده ها با سرعت انجام مي شود. در واقع تنها كدي كEEه الزم اسEEت شEEما بنويسيد ثبت قطعي داده ها در بانك اطالعاتي است. به عالوه ممكن اسEEت شEEما بEEراي حEEركت بين داده هEEا كدنويسي كنيد و راه حل غير از پيش فEEرض را بEEراي مقEEدار دهي ديتاسEEت اسEEتفاده نماييEEد، مثال زمEEاني كEEه بخواهيد داده ها را فيلتر كرده، سپس در حافظه قرار دهيد. در اين مقاله ما بEEرخي امكانEEات پيشEEرفته ماننEEد

بارگذاري داده ها با تأخير را صرف نظر كرده ايم.

55

Page 56: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

با نوع داده SqlCeResultSetsاستفاده از SQL به داده هEEاي بانEEك اطالعEEاتي SqlCeResultSetsبا استفاده از CE.تEEد داشEEي خواهيEر دسترسEEراحت ت

بخشي از كد براي شما به طور خودكار ايجاد مي شود ولي نه به انEEدازه اي كEEه در ديتاسEEت ديديEEد. يكي از كار كردن مستقيم با بانEEك اطالعEEاتي اسEEت. بEEه عبEEارت ديگEEر داده هEEا درSqlCeResultSetsويژگي هاي مهم

با نEEوع داده،SqlCeResultSetsحافظه ي رم محدود و گران قيمت دستگاه ويندوز موبايل كپي نمي شوند. يك ( تركيب كرده است. بEEراي مقايسEEهDataReader( را با كارآيي ديتاريدر )DataSetدر واقع راحتي كار ديتاست )

از برنامEEه اي مشEEابه - كEEه روي همEEان جEEداول مثEEال قبلي بEEا همEEانSqlCeResultSetsي كEEارآيي ديتاسEEت و ( اندازه خواهيم گEEرفت.Stopwatchعمليات كار كند- استفاده خواهيم كرد. كارآيي را با همان شيء كرنومتر )

به جاي ديتاست ميSqlCeResultSets شما در پنجره ي مشخصات، يك ابزار سفارشي براي ايجاد ٤در شكل ( متصEل بEEه بانEEك اطالعEاتيDataSourceبينيEد. مرحلEه ي نخسEت مشEابه قبEEل اسEت. شEما يEك منبEع داده )

NorthwindارEEور خودكEEه طEEوع، بEEت داراي نEEرا به پروژه تان مي افزاييد. هنگام افزودن منبع داده، يك ديتاس ايجاد مي گردد. سپس شما ابزار سفارشEي را در پنجEره ي مشخصEات تغيEEير2008توسط ويژوال استوديو

مي بينيد اين است كه ويEEژوال اسEEتوديو دو٤ ها را ايجاد نمايد. آن چه در شكل SqlCeResultSetsمي دهيد تا SqlCeResultSetsايشEEك نمEEتن يEEراي داشEEدارد. بEEبراي تان ايجاد كرده است ولي ارتباطي بين آن دو وجود ن بايد خودتان كد مربوط به اتصال بين دو نمEEاي اصEEلي و فEEرعيMainForm( در Master-Detailاصلي- فرعي )

را بنويسيد.

نشEEان داده١ براي تEEان ايجEEاد مي نمايEEد در كEEد MainFormكدي كه ويژوال استوديو براي نمايش داده ها در بEEه طEEور خودكEEارOrders( حاوي داده هاي جدول DataGridشده است. توجه داشته باشيد كه فقط ديتاگريد )

توسط ويژوال استوديو با داده هاي جدولش پر خواهد شد. همچنين هيچ فرم اضافه بر اين هEEا بEEراي نمEEايشخالصه ي داده ها يا پنجره ي مكالمه ويرايش ركورد ها ايجاد نمي شود.

public partial class MainForm : Form{ private SqlCe35WithResultSets.NorthwindResultSets.OrdersResultSet ordersResultSet; public MainForm()

{ InitializeComponent(); } private void MainForm_Load(object sender, EventArgs e)

{

ordersResultSet = new SqlCe35WithResultSets.NorthwindResultSets.OrdersResultSet();

ordersResultSet.Bind(this.ordersResultSetBindingSource); }}

: كد توليد شده ي خودكار براي مقدار دهي اوليه ي كنترل هاي واسط كاربر توسط4كد SqlCeResultSet

56

Page 57: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

هاي با نوع داده SqlCeResultSet: 31شکل

شما بايد انEEدكيOrder هم زمان با ركورد انتخاب شده از جدول Order_Detailsبراي نمايش داده هاي جدول به خودتان زحمت داده، چند خط كد نويسي كنيد. يك نقطه ي شروع خوب براي اين كار نوشتن كد و بهبEEود

در سولوشEEن اكسEEپلورر راسEEت كليEEك كنيEEد.Northwind.xsdاسEEت. روي Order_DetailsResultSetكEEاركرد بEEراي تEEان ايجEEاد مي نمايEEد كEEه رويNorthwind.csويEEژوال اسEEتوديو يEEك فايEEل كEEد سEEي شEEارپ بEEه نEEام

Order_DetailsResultSet( زئيEEك كالس جEEورت يEEكار كنيد. كد توليد شده توسط محيط طراحي به ص partial) افEEزوده ايEEد مي بينيEEد. يEEكOrder_DetailsResultSet شEEما امكانEEاتي را كEEه بEEه ٥پياده سازي مي شود. در كد

( ايجاد شده است كه اين متغير منطقي نشان ميboolean( جديد با پارامتر منطقي )Constructorسازنده ي ) نياز به باز شدن دارد يا نه. اگر شما اين سازنده را طوري فراخواني كنيد كهOrder Detailsدهد كه آيا جدول

براي اجراي پEEرس و جEEو روي٥ به طور مجزا - كه در كد Openجدول را باز نكند مي توانيد توسط يك روال Orderجدول Details ك – ديده مي شودEEجدول را باز كنيد. بدين ترتيب شما ي Order_DetailsResultSetادEEايج

(indexكرده ايد كه فقط ركوردهاي مورد نظر تEEان را بارگEذاري كEرده اسEEت. در اين مقالEه مEا از شEEاخص ) گذاري براي باالتر بردن كارآيي و بهينه سازي بانك اطالعEEاتي اسEEتفاده نكEEرده ايم.دليEEل اين كEEار مقايسEEه ي

است. لذا با افزودن شاخص مي توانيد نتEEايج بهEEتري بEEه دسEEتSqlCeResultSetصحيح كارآيي بين ديتاست و آوريد.

57

Page 58: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.compublic partial class Order_DetailsResultSet

{ public Order_DetailsResultSet(bool openTable)

{ // Create default options

//

resultSetOptions = System.Data.SqlServerCe.ResultSetOptions.Scrollable | System.Data.SqlServerCe.ResultSetOptions.Sensitive |

System.Data.SqlServerCe.ResultSetOptions.Updatable;

if (NorthwindUtil.DesignerUtil.IsDesignTime()) {

// Designtime Connection String resultSetConnectionString =

"Data Source=C:\\Users\\Maarten\\Documents\\Visual Studio " +

"2008\\Projects\\SqlCE35Demo\\SqlCE35WithDataSets\\Northwind.sdf"; }

else {

// Runtime Connection String resultSetConnectionString = ("Data Source =" + (System.IO.Path.GetDirectoryName(

System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\Northwind.sdf;")); } if (openTable) this.Open();

} public void Open(string query) { System.Data.SqlServerCe.SqlCeCommand sqlCeSelectCommand = null; try

{

// Open a connection to the database // sqlCeConnection = new

System.Data.SqlServerCe.SqlCeConnection(this.resultSetConnectionString);

sqlCeConnection.Open();

// Create the command // sqlCeSelectCommand = sqlCeConnection.CreateCommand();

sqlCeSelectCommand.CommandText = query;

sqlCeSelectCommand.CommandType = System.Data.CommandType.Text; // Generate the ResultSet

//

sqlCeSelectCommand.ExecuteResultSet( System.Data.SqlServerCe.ResultSetOptions.Scrollable, this);

}

finally {

58

Page 59: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com if ((sqlCeSelectCommand != null))

{ sqlCeSelectCommand.Dispose();

} }

}

}Order_DetailsResultSet: توسعه ي 5كد

نياز به اندكي كار بيشتر داريد. نخست اين كه مطمئن شويد كنترلOrder_DetailsResultSetپس از توسعه ي ( جديEEد متصEEل كEEرده ايEEد. زمEEاني كEEه كنEEترل هEEايBindingSourceهاي واسط كاربر را به يEEك منبEEع اتصEEال )

Order_DetailsResultSet يدن وEEرا با كشيدن روي فرم قرار مي دهيد، آن ها به منبع اتصالي كه به هنگام كش (. اين مEEورد٥روي فرم ايجاد شده اسEEت، متصEEل خواهنEEد شEEد )شEEكل OrderResultSetقرار دادن ديتاگريد

كه يك فيلد كليدي مشترك بين دو جدول است- مشكلي درست نمي كند. ولي اتصال- Order IDبراي فيلد موجب بروز خطاي زمEEان اجEEراOrderResultSetBindingSource به Order_DetailsResultSetنادرست فيلد هاي

خواهند شد، چون در اين منبع داده تعريف نشده اند.

به منبع داده ي نادرستProduct ID: اتصال جعبه متن 32شکل

( به سولوشن است كه مشخصه يbinding sourceراحت ترين راه رفع اين مشكل افزودن يك منبع اتصال )DataSource آن را برابر با Order_DetailsResultSet (. پس از اين كار به هنگام كشيدن و٦ قرار دهيم )شكل

ويژوال استوديو از شماMainForm به روي Order_DetailsResultSetانداختن كنترل هاي واسط كاربر از خواهد پرسيد كه كدام منبع اتصال را مي خواهيد استفاده نماييد. با مشخص كردن منبع اتصالي كه خود تان

اضافه نموده ايد، اين ايراد برطرف خواهد شد. مورد بعدي، نوشتن كد براي نمايش جزئيات اطالعات ركورد مي توانيد اين كار را تمام كنيد.MainFormانتخاب شده ي فعلي از ديتاگريد است. با چند خط كد نويسي در

استفاده كنيد.٥نوشته شده در كد Order_DetailsResultSetاز همان بخش توسعه ي

59

Page 60: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

Order_DetailsResultSet( و انتساب آن به binding source: افزودن دستي منبع اتصال )33شکل

(، ابتدا بايد مقدار فيلد )كليد٦هر بار كه كاربر يك ركورد )سفارش( را از ديتاگريد انتخاب مي كند )شكل را به دست آوريد. سپس با استفاده از آن يك عبارت پرس و جو درست كنيد كه از جدولOrder IDاوليه(

Order Detailsاطالعات مربوط به جزئيات سفارش انتخاب شده را به دست آورد. پس از اين كه يك Order_DetailsResultSet( ايجاد و ركورد منطبق با شرايط پرس و جو، در آن ذخيره شد، بايد منبع اتصال

BindingSource را به آن متصل كنيم و سپس )ResultSet روش٦ اصلي را از حافظه خارج كنيم. در كد ، را از طريق كد نويسي مي بينيد. اين كد در هر بار تغيير اشاره گرOrderDetails و Ordersاتصال دو جدول

ركورد )فعلي( داخل ديتاگريد فراخواني مي شود.

private void ordersResultSetBindingSource_PositionChanged(object sender, EventArgs e){ SqlCE35WithResultSets.NorthwindResultSets.Order_DetailsResultSet orgDetailsRS=

order_DetailsResultSet; GetOrderDetails();

if (orgDetailsRS != null)

orgDetailsRS.Dispose();

}private void GetOrderDetails(){

int orderID =

(int)((RowView)this.ordersResultSetBindingSource.Current).UpdatableRecord["Order ID"]; string query = "SELECT * FROM [Order Details] WHERE [Order ID] = '" + orderID +"'";

order_DetailsResultSet =

new SqlCE35WithResultSets.NorthwindResultSets.Order_DetailsResultSet(false);

60

Page 61: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com order_DetailsResultSet.Open(query);

order_DetailsResultSet.Bind(order_DetailsResultSetBindingSource);}

(master( به اصلي )details: اتصال نماي فرعي )6كد

رويPositionChanged( انتخاب مي كند رويEEداد Ordersزماني كه كاربر يك ركورد جديد را )در ديتاگريد جدول فرا خوانده مي شود. اين رويداد مي تواند براي بEEه دسEEت آوردنordersResultSetBindingSourceمنبع اتصال Orderمقدار فيلد ID ه يEEود. حافظEEتفاده شEEركورد فعلي اس order_DetailsResultSetده، يكيEEفعلي آزاد ش

ديگEEEEEEEEEر از آن بEEEEEEEEEا اسEEEEEEEEتفاده از يEEEEEEEEEك پEEEEEEEEEرس و جEEEEEEEEEوي جديEEEEEEEEEد بEEEEEEEEEر مبنEEEEEEEEEايOrder ID اEEر بEEساخته مي شود كه اطالعات مربوط به جزئيات سفارشي را كه شماره ي آن براب Order ID

بر مي گرداند.Order Detailsفعلي است، از جدول در بخش ديتاست ديديد كه فرم نمايش خالصه ي داده ها و ويرايش ركورد به طور خودكEEار بEEراي تEEان ايجEEاد

ويژوال استوديو چنين كاري نمي كند و شما خودتان بايد فرم هEEا و SqlCeResultSetمي شود. ليكن در مورد كد هاي مربوط به آن را ايجاد كنيد. در اين مقاله به دليل اين كه مEEا در بEEاره ي مقايسEEه ي كEEارآيي دو روش

به طEEور مسEEتقيم دادهSqlCeResultSetصحبت مي كرديم اين بخش را انجام نداديم. مورد ديگر اين كه چون ها را روي بانك اطالعاتي ذخيره مي كند، به هنگام تغيير داده ها نيازي به كدنويسي براي ثبت قطعي داده ها

)همانند ديتاست( نيست. مشابه با روش ديتاست در اين جا هم براي اندازه گيري كارآيي زماني، از شيء كرنومتر استفاده مي كEEنيم.

مي توانيم زمان بارگذاري داده ها را اندازه گرفته در نوار وضEEعيت نمEEايشMainForm_Loadدر مدير رويداد دهيم. به همين ترتيب زمان الزم براي به دست آوردن اطالعات مربوط به جزئيات سفارش را هنگام حركت

نتEEايج اين انEEدازه گEEيري كEEارآيي را بEEراي٧از يEEك ركEEورد بEEه ركEEورد ديگEEر بEEه دسEEت مي آوريم. شEEكل SqlCeResultSetنشان مي دهد. همان طور كه مي بينيد از لحظه ي بارگذاري برنامه در شبيه ساز دستگاه تا

ميلي ثانيه زمان الزم است. حركت بين ركورد ها، به روز رساني آنهEEا300بازيابي داده ها از بانك اطالعاتي Orderبه ويژه جزئيات سفارش ) details EE)50رينEEه آخEEورد بEEميلي ثانيه زمان الزم دارد. حركت از اولين رك

ركورد اندكي بيشتر از حالت ديتاست زمان الزم دارد چون تعداد ركوردهاي بيشتري بايد خوانده شوند.

: زمان الزم براي بارگزاري و نمايش داده ها و جا به جايي بين ركورد ها )مقايسه كنيد با34شکل (٣شكل

61

Page 62: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.comنتيجه گيري

خودش كد را توليد مي كند شEEما2008استفاده از ديتاست بسيار آسان است. از آن جا كه ويژوال استوديو كد نويسي چنداني الزم نداريد. به ويژه در حالت نمايش هم زمان جدول هاي اصلي- فرعي مناسEEب اسEEت. به دليل بارگذاري همه ي داده ها به حافظه اصلي، زمان بيشتري بEEراي نمEEايش اوليEEه ي ركEEورد هEEا در فEEرم برنامه ي شما الزم دارد و همچنين حافظه ي اصلي نازنين و گران قيمت دستگاه وينEEدوز موبايEEل تEEان را هم

بايد مصرف كنيد. SqlCeResultSetتقيم رويEEور مسEEه طEEون بEEكارآيي بيشتري دارد به ويژه هنگام بارگذاري اوليه ي داده ها. چ

بانك اطالعاتي كEار مي كنEد و فقEط ركEEورد هEEايي را كEه در ديتاگريEEد نشEان مي دهEEد، بEEه حافظEEه ي اصEEلي بارگذاري مي كند. در حالت نمايش هم زمان دو جEEدول اصEEلي- فEEرعي نيEEاز بEEه كEEد نويسEEي داريEEد. سEEرعت

SqlCeResultSet( با ايجاد شاخص indexرايش وEEدر بانك اطالعاتي مي تواند بيشتر شود. اگر فرم نمايش وي ) خالصه ي داده ها را مي خواهيد بايد خودتان كد نويسي كنيد. در نهEEايت كEEارآيي بEEاالتر اين روش بEEه زحمتش

; (مي ارزد كه چند خط كد را بنويسيد و شايد هم از يك مقاله كپي كنيد.

62

Page 63: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

فصل ششمامنيت دستگاه و نصب نرم افزار

63

Page 64: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.comمقدمه

توسعه ي نرم افزار ويندوز موبايل شباهت زيادي به توسعه ي نرم افزار در دسكتاپ دارد به ويژه زماني كه يكي از دو زبان ويژوال بيسيك يا ويژوال سي شارپ دات نت را استفاده مي كنيد. شما همان ابزارهاي

توسعه ي برنامه هاي ويندوز دسكتاپ را براي ويندوز موبايل هم استفاده مي كنيد ليكن تفاوت هايي نيز بين بسته به شركت سازنده يا اپراتور تلفن همراه كه دستگاه ويندوز موبايل را عرضه مي اين دو محيط هست.

كنند، اين دستگاه ها داراي تنظيمات امنيتي متنوعي هستند. از ديدگاه يك توسعه دهنده امنيت دستگاه تعيين كننده ي اجرا شدن يا نشدن يك برنامه روي آن و همچنين منابعي از سيستم است كه برنامه به آن ها

دسترسي دارد. اين مسأله در چگونگي توزيع يا نصب نرم افزار به ويژه زماني كه با دستگاه )گوشي( هايمتنوعي از سازنده گان مختلف سر و كار داريد، اهميت بيشتري پيدا مي كند.

اين مقاله اطالعات مفيدي را در زمينه ي امنيت دستگاه هاي ويندوز موبايل، چگونگي آزمايش تنظيمات و در نهايت نحوه2008( ويژوال استوديو security managerمختلف امنيتي با استفاده از ابزار مدير امنيت )

ي نصب درست برنامه ها روي دستگاه هاي ويندوز موبايل به شما ارايه مي دهد.امنيت در دستگاه هاي ويندوز موبايل

دستگاه هاي مختلف ويندوز موبايل بسته به شركت سازنده شان تنظيمات امنيتي متنوعي دارند. يك دستگاه ممكن است به طور كامل نصب هر برنامه اي را بپذيرد و دستگاه ديگر ممكن است به هنگام اولين نصب يا

اجراي يك برنامه از كاربر تأييديه بگيرد. يا اين كه دستگاه به كلي در برابر نصب برنامه هايي كه تأييديه يامنيتي از سازنده ي آن ندارد، مسدود باشد.

يك دليل وجود تنظيمات امنيتي مختلف اين است كه اغلب دستگاه هاي پيشرفته ي ويندوز موبايل داراي امكانات تلفن همراه هستند و براي ارتباط در يك شبكه اي كه در اختيار اپراتور تلفن همراه است، به كار

مي روند. لذا يكي از داليل دستگاه ويندوز موبايل امنيت خود شبكه است. در واقع اپراتور هاي تلفن همراه مي خواهند شبكه شان را در برابر نرم افزار هايي كه به راحتي توسط كاربران نصب مي شوند، محافظت

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

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

تلفن همراه يا شركت استفاده كننده ي آن نيست، بلكه به نوع استفاده ي آن نيز بستگي دارد. امنيت دستگاه هاي ويندوز موبايل ضروري و به طور كامل داخل سيستم عامل تعبيه شده است. اليه هاي مختلف امنيتي با هم تركيب شده اند تا در نهايت بر مبناي يك تنظيم امنيتي مشخص تعيين كنند كه آيا برنامه ها مي

توانند روي دستگاه نصب و اجر شوند يا نه و اگر پاسخ به اين پرسش مثبت است، چگونه؟

مجوزهاي نصب نرم افزار بسته به تنظيمات امنيتي يك دستگاه خاص ويندوز موبايل برنامه ها ممكن است روي آن اجرا شوند يا اين كه به كلي اجراي آن ها ممنوع باشد. مجوز هاي زير براي اجراي برنامه ها روي يك دستگاه ويندوز موبايل

تعريف شده اند:

(: نرم افزار هر كاري روي دستگاه مي تواند انجام دهد، دسترسي كامل به سيستم فايل وPrivilegedويژه )رجيستري سيستم دارد و همچنين مي تواند تأييديه براي اجراي نرم افزار هاي ديگر روي دستگاه نصب كند.

را نمي تواند فراخواني كند،API Win32(: نرم افزار محدوديت هايي براي اجرا دارد. توابع Normalعادي ) نمي تواند در بخش هاي محافظت شده ي رجيستري تغيير دهد يا روي فايل هاي سيستم بنويسد يا تأييديه

نصب كند.

(: نرم افزار به هيچ وجه مجوز اجرا ندارد.Blockedمسدود )

64

Page 65: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.comتأييديه هاي نرم افزار

براي به دست آوردن مجوز اجرا براي نرم افزار تان مي توانيد براي آن نشان تأييديه بگيريد. دستگاه هاي ويندوز موبايل دو نوع تأييديه دارند. تأييديه ي ويژه و تأييديه ي عادي كه مطابق با نوع تأييديه سطح

دسترسي آن هم تعيين مي شود. از آن جا كه يك گروه خاص )مانند شركت سازنده يا اپراتور تلفن همراه( اين تأييديه ها را ارايه مي دهند، شما بايد با اين مراكز براي دريافت تأييديه ي نرم افزار تان در ارتباط

( ممكنIndependent Software Vendor )فروشنده ي مستقل نرم افزار = ISVباشيد. اگر چه همانند يك چنين كاري راMobile2Marketاست بخواهيد كه نرم افزار تان روي دستگاه هاي متنوعي كار كند. شركت

آغاز كرده است و هر توليد كننده ي نرم افزار مي تواند محصولش را براي دريافت تأييديه به آن ها ارايه به اين معنا است كه شما يا سازمان شما به عنوان يك توليد وMobile2Marketنمايد. دريافت تأييديه از

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

سطوح دسترسي نرم افزار سطوح دسترسي مختلف مشخص مي كنند كه يك نرم افزار بدون تأييديه چه كارهايي مي تواند روي

( ناميده مي شوند. ويندوز موبايلtierدستگاه ويندوز موبايل انجام دهد. اين سطوح دسترسي مختلف، اليه )دو سطح دسترسي به شرح زير دارد:

(: نرم افزار داراي تأييديه با مجوز ويژه روي دستگاه اجرا مي شود وOne-tier securityامنيت يك اليه ) دسترسي كامل به همه ي بخش هاي دستگاه دارد. نرم افزار بدون تأييديه ممكن است بسته به تنظيمات

امنيتي دستگاه بتواند روي آن اجرا شود. در اين صورت با همان مجوز ويژه اجرا خواهد شد. (: نرم افزار داراي تأييديه مي تواند روي دستگاه اجرا شود و بسته به نوعTwo-tier securityامنيت دو اليه )

تأييديه اش مي تواند با مجوز عادي يا ويژه اجرا شود. نرم افزار بدون تأييديه بسته به تنظيمات امنيتيدستگاه ممكن است اجرا شود، ليكن در صورت اجرا با مجوز عادي اجرا خواهد شد.

تنظيمات امنيتي دستگاه حال كه تفاوت مجوز اجراي نرم افزار با نشان تأييديه ي نرم افزار را متوجه شديد، يك پرسش مهم مي

ماند. آيا نرم افزار شما با وجود نداشتن تأييديه مي تواند روي يك دستگاه خاص ويندوز موبايل نصب و اجرا شود؟ چند تنظيم امنيتي استاندار براي دستگاه هاي ويندوز موبايل تعريف شده است كه برخي به شما اين

مجوز را خواهند داد كه برنامه ي بدون تأييديه را اجرا نماييد:( بدون امنيتSecurity Offهمه ي نرم افزار ها صرف نظر از داشتن يا نداشتن تأييديه مي توانند با :)

مجوز ويژه روي دستگاه اجرا شوند.( اربرEEتأييد يك اليه اي توسط كOne-Tier Promptه يEEان تأييديEEاي داراي نشEEزار هEEرم افEEه ي نEEهم :)

امنيتي، با مجوز ويژه روي دستگاه اجرا مي شوند. اجراي نEEرم افEEزار هEEاي بEEدون تأييديEEه بEEا تصEEميم كاربر صورت مي گيرد. اگر كاربر اجراي نرم افزار بدون تأييديه را بپذيرد، نرم افEEزار بEEا مجEEوز ويEEژه

اجرا خواهد شد.( تأييد دو اليه اي توسط كاربرTwo-Tier PromptتگاهEEه روي دسEEهمه ي نرم افزار هاي داراي تأييدي :)

اجرا خواهند شد ليكن مجوز اجراي ويژه يا عادي بسته به نوع تأييديه ي امنيتي تعيين مي شEEود. نEEرم افزار هاي بدون تأييديه، با اجازه ي كاربر مي توانند اجرا شوند ليكن در صورت اجرا، فقEط بEEا مجEوز

عادي اجرا خواهند شد.( تأييديه شخص ثالثThird-Party SignedدEEتي مي تواننEEه ي امنيEEاي داراي تأييديEEزار هEEفقط نرم اف :)

روي دستگاه اجرا شوند. مجوز اجراي ويژه يا عادي بسته به نEEوع تأييديEEه ي نEEرم افEEزار خواهEEد بEEود. ثبت نEEام كنيEEد.Mobile2Marketبراي دريافت تأييديه بايد در يك سيسEEتم توسEEعه ي نEEرم افEEزار ماننEEد

اغلب دستگاه هاي ويندوز موبايل كEه توسEط اپراتEور هEاي تلفن همEراه خريEEداري و ارايEه مي شEوند را با خود دارند. Mobile2Marketتأييديه ي

( مسدودLocked.وندEEرا شEEتگاه اجEEد روي دسEEفقط نرم افزار هاي داراي تأييديه ي امنيتي مي توانن :) مجوز اجراي ويژه يا عادي بر حسب نوع تأييديه مشخص مي شود.

DLLمجوز اجرا و فايل هاي كتابخانه ي يك مورد ديگر هم هست كه بايد فكري به حال آن بكنيم و آن هم فايل هاي كتابخانه ي ديناميكي است كه از

ها هم مي توانند بدونDLL را استفاده مي كنيم. همانند برنامه ها DLLاين پس از همان اصطالح آشناي ها از داخلDLLتأييديه باشند يا اين كه تأييديه با مجوز اجراي ويژه يا عادي داشته باشند. از آن جا كه

65

Page 66: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com برنامه ها استفاده مي شوند يك سؤال جالب پيش مي آيد. اگر مثال يك برنامه با مجوز دسترسي ويژه يك

DLL بدون تأييديه را كه آن هم از داخل خود يك تابع مورد اطمينان Win32 APIرا فرا مي خواند، استفاده هم به همان سطح دسترسي برنامه ارتقا داده شود كه اين يك نقصDLLكند چه اتفاقي مي افتد؟ اگر فايل

امنيتي خواهد بود.

66

Page 67: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

ها دسترسي پيدا كنند:DLLاز اين رو قوانين زير براي برنامه ها ايجاد شده است تا مطابق آن به

تركيب برنامه وDLL

بدونامنيت

تأييديه ي يكاليه اي

تأييديه ي دواليه اي

برنامه ي بدون مجوزDLLويژه با اجازه يويژه بدون مجوز

كاربر عادي با اجازه ي

كاربرDLLبا دسترسي عادي

ويژه با اجازه يويژهكاربر

عادي با اجازه يكاربر

DLLبا دسترسي ويژه

ويژه با اجازه يويژهكاربر

عادي با اجازه يكاربر

برنامه ي با مجوز عاديDLLعادي با اجازه يويژهويژه بدون مجوز

كاربرDLLبا دسترسي عادي

عاديويژهويژه

DLLبا دسترسي ويژه

عاديويژهويژه

برنامه ي با مجوز ويژهDLLغير مجازويژهويژه بدون مجوزDLLبا دسترسي عادي

غير مجازويژهويژه

DLLبا دسترسي ويژه

ويژهويژهويژه

آزمايش برنامه در حالت هاي مختلف تنظيمات امنيتي است كهDevice Security Manager »مدير امنيت دستگاه« يا همان 2008يكي از ابزار هاي ويژوال استوديو

به شما امكان مي دهد كه تظيمات امنيتي فعال روي يك دستگاه ويندوز موبايل شبيه سازي شده را بهدست آوريد.

شما زماني مي توانيد تنظيمات امنيتي را روي يك دستگاه فيزيكي ويندوز موبايل تغيير دهيد كهنكته: تنظيمات امنيتي فعلي آن، به شما اجازه ي اين كار را بدهد. دقت كنيد كه اگر تنظيمات امنيتي يك دستگاه

( تغيير دهيد، اين حالت قابل بازگشت نيست. پس در اين مورد احتياط كنيد.Lockedرا به حالت مسدود ) البته مدير امنيت دستگاه در اين حالت به شما هشدار خواهد داد. با استفاده از شبيه ساز دستگاه به راحتي

مي توانيد تمامي حالت هاي امنيتي را آزمايش نماييد. مي توانيد هر تنظيم امنيتي را كه از پيش تعريف شدهDevice Security Managerبا استفاده از برنامه ي

( برنامه كنيد. به عالوه مي توانيد فهرست تماميimportاست، فعال كنيد يا تنظيم امنيتي جديد را وارد )تأييديه هاي امنيتي نصب شده روي دستگاه ويندوز موبايل يا شبيه ساز دستگاه را به دست آوريد.

67

Page 68: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

Device Security Manager: برنامه ي 35شکل

تعريف شوند. مثال زير را داخل ويژوالXMLتنظيمات امنيتي دستگاه ها مي تواند داخل پرونده هاي مي توانيد ببينيد:2008استوديو

<wap-provisioningdoc /> <characteristic type="SecurityPolicy" /> <parm name="4102" value="1" />

<parm name="4122" value="0" />

<parm name="4123" value="0" /> </characteristic /></wap-provisioningdoc />

آزمايش سطوح مختلف دسترسي در تنظيمات امنيتي مختلف حال كه ياد گرفتيد چطور تنظيمات امنيتي مختلف را اعمال كنيد، چند آزمايش را انجام مي دهيم. قطعEه كEد

Win32 APIزير به عنوان يك مثال ساده مي تواند نقطه ي آغاز باشد. اين قطعه كد از يك تابع تأييد شده ي قEEرار دهيEEد و بEEراي هEEر كEEدام تأييديEEه )DLLاستفاده مي كند. اگر شما اين قطعEEه كEEد را در يEEك برنامEEه يEEا

certificateهاي مختلف بگيريد، يا حتي بدون تأييديه اجرا كنيد در نهايت خواهيد توانست كاركرد برنامه را در ) تنظيمات مختلف امنيتي آزمايش كنيد.

[DllImport("coredll.dll")]public extern static void PowerOffSystem();

private void btnInstructions_Click(object sender, EventArgs e)

{ PowerOffSystem();

}

68

Page 69: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com هEاي تأييEEد شEده باشEد، بEا اجEراي آن مي بينيEد كEه بالفاصEله شEبيه سEازAPIاگر برنامه مجاز به فراخواني

دستگاه بسته مي شود چون خاموش شده است و اگر برنامه مجاز به اين فراخواني نباشد هيچ اتفEEاقي نمي ناديده گرفته مي شود. اگر شما بخواهيد در نواحي محافظت شده ي سيستم فايلي يا رجيسEتريAPIافتد و

مواجه خواهيد شد. )UnauthorizedAccessExceptionدستگاه بنويسيد با خطاي دسترسي غير مجاز )

نصب برنامه تظيمات امنيتي دستگاه روي نصب برنامه ها هم اثر مي گذارد. تا اينجاي مقاله، فرض بر اين بوده است كEEه

Device نصب مي شوند و تنظيمات امنيتي نEEيز از طريEEق 2008نصب نرم افزار ها از داخل ويژوال استوديو Security Managerصورت مي گيرد. صد البته هنگامي كه در حال برنامه نويسي هستيد اين امكان، كار شما

را خيلي آسان مي كند، ليكن در نهايت شما برنامه نان را منتشر خواهيEEد كEEرد و بEEه همين دليEEل بايEEد تجربEEه ( داشته باشيد و اين يعني برنامه ي شما بهend usersمطلوبي در زمينه ي نصب برنامه براي كاربران نهايي )

منتشر شود، كاربر بايد فايلCAB منتشر گردد. اگر برنامه تان به صورت فايل MSI يا CABصورت يك فايل را به داخل دستگاه ويندوز موبايل خودش كپي كند و توسط برنامه ي اكسپلورر آن را باز و اجEEرا نمايEEد. اگEEر

( قرار دهيد كاربران مي توانند ازMSI )يا همان Microsoft Installer را داخل يك فايل CABهم بخواهيد فايل طريEEق وينEEدوز كEEامپيوتر دسEEكتاپ خودشEEان زمEEاني كEEه دسEEتگاه وينEEدوز موبايEEل شEEان از طريEEق برنامEEه ي

ActiveSync در ويندوز ايكس پي يا برنامه ي Windows Mobile Device CenterهEون بEدر ويندوز ويستا يا س كامپيوتر متصل است، برنامه را نصب كنند.

بEEدون امضEEا روي آنCABاگر تنظيمات امنيتي دستگاه سختگيرانه باشد ممكن است اجازه ندهEEد كEEه فايEEل هم امضEEايCABنصب شود. در واقع صرف تأييديه داشتن برنامه تان كEEافي نيسEEت بلكEEه بايEEد بEEراي فايEEل

بEEراي اينcabsigntool.exe يك برنامه ي خط فرمEEاني بEEه نEEام ٦تأييديه بگيريد. ابزار توسعه ي ويندوز موبايل استفاده مي كند. براي راحتي كار بهEEتر اسEEت از خEEط2008 ي ويژوال استوديو signtool.exeكار دارد كه از

را بEEراي يEEافتن اين برنامEEهpath استفاده كنيد كه مجبور نباشيد متغير محيطي 2008فرمان ويژوال استوديو را از طريق خط فرمEEان بEEه شEEما نشEEان ميcabsigntool.exeمقدار دهي كنيد. مثال زير نحوه ي استفاده ي

دهد: cabsigntool "C:\Users\UserVS2008\Documents\Visual Studio 2008\Projects\HOL6SampleApp\DVDsMobileCAB\Debug\DVDsMobileCAB.cab"

"C:\Users\UserVS2008\Documents\Visual Studio 2008\Projects\HOL6SampleApp\DVDsMobileCAB\Debug\DVDsMobileCAB.cab" -f "C:\Program Files\Windows Mobile 6 SDK\Tools\Security\SDK Development Certificates\SampleUnPrivDeveloper.pfx"

و تمام برنامه هEEاي اجEEرايي داخEل آن، بEEا يEك تأييديEEه يDVDsMobileCab.cab با نام CABدر اين مثال فايل را در اينcabsigntool.exe امضا مي شوند. برنامه ي – است Windows Mobile 6 SDKآزمايشي - كه داخل

مسير هم مي توانيد پيدا كنيد:\program files\Windows Mobile 6 SDK\Tools\Security با يك نگاه به دستور هاي خط فرماني باال متوجه مي شويد كه با اين همه دنگ و فنگ اگر قرار باشد هEEر بEEار

اين پارامتر ها را وارد نماييد احتمال بروز خطاي دستوري هست. پس بهEترcabsigntool.exeموقع استفاده از اين دستور ها را قرار دهيد و هر بار آن را فراخواني كنيد. batآن است كه در يك فايل دسته اي

69

Page 70: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

به روز رساني برنامه ها توليد مي شوند در ويندوز موبايEEل امكEEان نصEEب2008بر خالف برنامه هاي دسكتاپ كه در ويژوال استوديو

كه امكان به روز رساني فايل هاي از قبل نصب شده را در صورت تغيير آن در نسخه– ClickOnceبه روش وجود ندارد. ليكن شما مي توانيEEد كEEاركرد مشEEابه اين را مثال بEEه وسEEيله ي وب سEEرويس–ي جديد مي دهد

براي به روز رساني برنامه هاي وينEEدوز موبايEEل خواهيEEدClickOnceايجاد نماييد. در اين مقاله روشي مشابه ديد. اين مثال صرفا يك نقطه ي آغاز خواهد بود و به شما اطالعات كافي خواهEEد داد كEEه خودتEEان بتوانيEEد بEEه

اين روش برنامه هاي تان را به روز كنيد. براي به روز رساني خودكار برنامه هاي تان مي توانيEEد از وب سرويسEEي اسEEتفاده كنيEEد كEEه آخEEرين نگEEارش منتشر شده ي برنامه را اعالم و با نگارش برنامه ي مورد استفاده ي فعلي مقايسه كند. از آن جEEا كEEه شEEما بايد يك برنامه ي در حال اجرا را به روز رساني كنيد بايد يك برنامه ي نصب كننEEده ي مجEEزا - هماننEEد نصEEب

كننده اي كه از ابتدا برنامه تان را روي دستگاه نصب كرده است- بنويسيد.

نصب يك برنامه ي جديد ASP.NETبراي نصب يك برنامه با قابليت به روز رساني خودكار بايد برنامه تان را از طريق يEEك وب سEEايت

نصب كنيد. براي دانلود برنامه، كاربر بايد سايت را براي پيدا كردن محل دانلود آن جستجو كند.

: وب سايت حاوي برنامه و دانلود به روز رساني آن36شکل

شما يك وب سايت مي بينيد كه يك برنامه ي جديد براي دانلEEود بEEه صEEورت آمEEاده دارد. بEEا كليEEك٢در شكل روي آن برنامه نصب نخواهد شد بلكه به جاي آن يك برنامEEه ي نصEEب كننEEده روي دسEEتگاه نصEEب مي شEEود. برنامه ي نصب كننده در همان پوشه اي كه برنامه ي اصلي در آن نصب خواهد شد قرار مي گيرد. برنامه ي

ايجاد خواهد كرد. Program Filesنصب كننده در عين حال يك ميانبر هم نام با برنامه ي اصلي در پوشه ي

70

Page 71: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com روي آن كليEEك و برنامEEه ي بEEهPrograms پس از دانلود برنامه ي به روز رساني، كاربر مي تواند در پوشه ي

روز رساني را اجرا نمايد. از آنجا كه برنامه ي اصلي هنوز قابل دسترسي نيست برنامه ي به روز رساني بEEه(٣جاي آن اجرا مي شود )شكل

اولين اجراي برنامه: 37شکل

برنامه ي به روز رساني از طريق پارامتر خط فرمان متوجه مي شود كه آيا توسط كاربر اجرا شده است يEEا از داخل برنامه ي اصلي. حالت دوم زماني پيش مي ايد كه به روز رساني جديدي داخEEل وب سEEايت منتشEEر

اجEEرا ميForm_Load كه به عنوان بخشEEي از برنامEEه ي بEEه روز رسEEاني داخEEل رويEEداد –شده باشد. كد زير شود- نشان مي دهد كه چطور اجراي بار اول را از اجراي حالت به روز رساني تشخيص دهيم.

private void MainForm_Load(object sender, EventArgs e){ if (_args == null || _args.Length == 0 || _args[0].Length == 0) { _args = new string[1];

_args[0] = initialURL;

label1.Text = Properties.Resources.InstallString; } else

{

label1.Text = Properties.Resources.UpgradeString;

}}

Programزماني كه برنامه نصب مي شود ميانبر داخل پوشه ي FilesرايEEه در اجEEد كEEرا طوري تغيير مي ده Programبعدي كه كاربر برنامه را از داخل پوشه ي FilesهEEه برنامEEاجرا مي كند برنامه ي اصلي اجرا شود ن

ي به روز رساني.

71

Page 72: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

(application updater: نصب برنامه و اجراي آن از طريق برنامه ي به روز رساني )38شکل

پس از نصب برنامه توسط برنامه ي نصب كننده، برنامه ي اصلي به طور خودكEار توسEط نصEب كننEده اش انجام ميMenu | Exitاجرا مي شود. اين كار به محض پايان برنامه ي نصب توسط كاربر از طريق گزينه ي

شود. كد زير نشان مي دهد كه چطور برنامه ي اصلي را از داخل برنامه ي نصب كننده اجرا كنيم. البتEEه كEEد زير همه ي آنچه شما به دنبالش هستيد، نيست ولي مي توانيد به راحتي آن را دستكاري كنيد و بسته به نيEEاز

تان كم و زيادش كنيد:

private void menuExit_Click(object sender, EventArgs e){ if (label1.Text.Equals(Properties.Resources.InstallString) && ! appInstalled) {

Close(); } else {

StartDVDsMobile();

}

}

private void StartDVDsMobile()

{

Process theApp = null;

try { theApp = Process.Start(@"\Program Files\DVDsMobile\DVDsMobile.exe",

Process.GetCurrentProcess().Id.ToString());

}

catch (Win32Exception exc) {

if (exc.NativeErrorCode == ERROR_FILE_NOT_FOUND) {

MessageBox.Show("DVDsMobile.exe not found.");

72

Page 73: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com }

else if (exc.NativeErrorCode == ERROR_ACCESS_DENIED) {

MessageBox.Show("No permissions to start DVDsMobile.exe."); }

}

}

را مي بينيد كه تعيين مي كند آيا برنامه ي اصلي را اجرا نمايEEدmenuExit_Clickدر قطعه كد باال مدير رويداد يا فقط از برنامه ي نصب كننده خارج شود. اگر نگارش جديدتر برنامه نصب شEEده باشEEد، برنامEEه ي بEEه روز

خود را به داخل آن process identificationرساني، نگارش جديد را اجرا مي كند و شناسه ي پردازش يا همان ارسال مي كند كه برنامه ي اصلي بتواند برنامه ي به روز رساني را از حافظه خارج كند. با اين كه در ظEEاهر اين كار ضروري به نظر نمي رسد اما از نظر اين كه توجه كاربر را به اجراي برنامEEه ي جديEEد پيش از اتمEEام

برنامه ي فعلي جلب مي كند مفيد است.

73

Page 74: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

به روز رساني برنامه هر بار كه برنامه توسط كاربر اجرا مي شود، مي تواند يك وب سرويس از همEEان وب سEEايتي كEEه برنامEEه ي نصب كننده را از آن دانلود كرديم، فراخواني نمايد. وب سرويس مي تواند شماره ي آخرين نگEEارش تمEEامي اسمبلي ها مورد استفاده برنامه را اعالم نمايد تا برنامه ي اصلي آن ها را با شماره ي نگارش هEEاي خEEودش مقايسه كند. اگر نگارش هاي جديد در وب سايت منتشر شده باشد برناه يك اعالن به كاربر نشEEان مي دهEEد كه آيا مي خواهد برنامه را به روز نمايد يا اين كه نگارش فعلي را اجEEرا نمايEEد. اين كEEار بEEاعث مي شEEود كEEه آغاز اجراي برنامه كمي طEEوالني تEEر شEEود ولي مEEزيت اين را هم دارد كEEه كEEاربر هميشEEه از آخEEرين نگEEارش استفاده مي كند. براي ساده تر شدن كار، برنامه ي ما وصل بودن يا نبودن شبكه را بررسي نمي كند. البتEEه

اين امكان را فراهم نماييد.Stat & Notification Brokerدر برنامه ي واقعي مي توانيد با استفاده از امكانات

: به روز رساني خودكار در عمل39شکل

Webبراي دانلود نگارش جديد برنامه، برنامه ي به روز رساني از طريق يك كنEEترل مرورگEEر وب ) Browser) مخفي وارد سايت مي شود و برنامه را دانلود مي كند. استفاده از كنترل مرورگر وب، كار دانلEEود برنامEEه را بدون نياز به كار اضافي با وب سرويس امكان پEEذير مي نمايEEد. كEEد مربEEوط بEEه وب سEEايت را در اين مقالEEه اشاره اي نكرده ام ولي شما مي توانيد يك روند كامل از اين كار را در بخش هفتم همين سري مقاله ببينيد. در كد زير مي بينيد كه چطور برنامه ي اصلي بررسي مي كند كه آيا نگارش جديدترش منتشر شده است يEEا

نه:

74

Page 75: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.comprivate void MainFormNoTouch_Load(object sender, EventArgs e)

{ this.Text = Properties.ResourcesNoTouch.MainFormNoTouchTitle;

this.menuItemExit.Text = Properties.ResourcesNoTouch.MenuItemExitText; if (_processID != -1)

{

// We have just been updated, so kill our update process. Process.GetProcessById(_processID).CloseMainWindow();

} else

{

DVDsMobileUpdateService.DVDsMobileUpdateService updateService = new DVDsMobileNoTouch.DVDsMobileUpdateService.DVDsMobileUpdateService();

string[] latestDVDsMobileVersion = updateService.DVDsMobileVersion().Split( new char[] { '.' });

string[] latestDVDsMobileVersionNoTouch =

updateService.DVDsMobileVersionNoTouch().Split( new char[] {'.'});

string[] currentDVDsMobileVersion = _callingAssembly.Split( new char[] { '.' }); Version currentDVDsMobileVersionNoTouch = Assembly.GetExecutingAssembly().GetName().Version; bool update = false;

update = (Convert.ToInt32(latestDVDsMobileVersion[0]) > Convert.ToInt32(currentDVDsMobileVersion[0])) || (Convert.ToInt32(latestDVDsMobileVersion[1]) > Convert.ToInt32(currentDVDsMobileVersion[1])) || (Convert.ToInt32(latestDVDsMobileVersionNoTouch[0]) >

currentDVDsMobileVersionNoTouch.Major) || (Convert.ToInt32(latestDVDsMobileVersionNoTouch[1]) > currentDVDsMobileVersionNoTouch.Minor); if (update) {

if (MessageBox.Show(

"A new version of DVDsUpdate is found! " + "Do you want to install the new version?", "New version available",

MessageBoxButtons.YesNo,

MessageBoxIcon.Question,

MessageBoxDefaultButton.Button2) == DialogResult.Yes) { Process.Start(@"\Program Files\DVDsMobile\DVDsMobileAutoUpdater.exe",

@"http://192.168.2.102:5746/DownloadForm.aspx");

Application.Exit();

} }

}}

75

Page 76: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com را براي بررسي اين كه نگارش جديدتر منتشEر شEده اسEت يEEا نEEه،Form_Loadدر اين قطعه كد مدير رويداد

فEEرا خEEواني ميDVDsMocileUpdateServiceاستفاده مي كنيم. بدين منظور دو متد مربوط بEEه وب سEEرويس شوند. در عين حال برنامه شماره ي نگارش خودش را هم مي خواند و اگر نگارش موجود در سايت جديEEدتر باشد، يك پنجره ي پيغام براي كاربر نمايش داده مي شود كه از ميان دو گزينEEه ي بEEه روز رسEEاني و اجEEراي نگارش فعلي يكي انتخاب نمايد. اگر كاربر گزينه ي به روز رساني را انتخاب نمايد، برنامه ي به روز رسEEاني اجEرا مي شEود و برنامEEه ي اصEلي، خEودش را از حافظEEه خEارج مي كنEد. پس از نصEب نگEارش جديEEد روي

دستگاه، برنامه ي به روز رساني، نگارش جديد برنامه ي اصلي را اجرا مي نمايد.

76

Page 77: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

فصل هفتم توسعه براي وب موبايل

77

Page 78: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.comمقدمه

زماني كه براي ويندوز موبايل برنامه مي نويسيد يك پرسش را همان اول بايد پاسخ دهيد. آيا برنامه به صورت محلي روي دستگاه اجرا خواهد شد؟ با پاسخ به اين پرسش مشخص خواهد شد كه آيا نرم افزار تحت وب مناسب تر هست يا نه. اگر دستگاه مورد نظر فاقد اتصال مطمئن به اينترنت است، نرم افزار تحت وب اصال به درد نخواهد خورد. به عبارت بهتر اگر دستگاه مورد نظر هميشه مي تواند به شبكه ي

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

قابل اجرا است. دستگاه هاي ويندوز موبايل جديد همگي از نرم افزار هاي تحت وب پشتيباني مي كنند و هستند كه بر پايه ي برخي قابليت هاي اينترنت اكسپلورر ساخته شده است. درIEMobileاين را مديون

دستگاه هاي اخير ويندوز موبايل، كاربران درست همانند دستگاه هاي دسكتاپ از اينترنت استفاده مي كنند. AJAX و ASP.NET 3.5تنها تفاوت فقط اندازه ي كوچك تر صفحه ي نمايش است. در ضمن از امكانات

براي كمتر شدن تبادل داده بين كالينت )دستگاه( و سرور استفاده مي نمايند. اين امكان به ويژه در اتصال بسيار كار راه انداز است. GPRSاينترنت با سرعت كم مانند

در اين مقاله اطالعاتي را در باره ي توسعه ي نرم افزار هاي تحت وب موبايل، تنظيم برنامه ي وب براي ويژوال استوديوSmart Device و در نهايت استفاده از كنترل هاي مرورگر داخل پروژه ي AJAXپشتيباني از خواهيد ديد.

نرم افزار هاي تحت وب و پشتيباني از ويندوز موبايل ،٦دستگاه هاي ويندوز موبايل از همان اول مرورگر وب داشتند ولي تا پيش از ارايه ي ويندوز موبايل

امكانات مرورگر مذكور بسيار محدود و بر مبناي نگارش هاي قديمي تر اينترنت اكسپلورر بود. آخرين يك مرورگر باInternet Explorer Mobile 6نگارش )در زمان تأليف اين مقاله( مرورگر ويندوز موبايل با نام

امكانات كامل است كه كيفيت باالي كار با مرورگر وب در دستگاه هاي دسكتاپ را براي كاربر به ارمغان مي آورد. اين مرورگر بهترين سازگاري را با تمامي نگارش هاي مرورگر هاي ويندوز موبايل دارد. امكانات

جديد و پيشرفته ي آن به كاربران كمك مي كند كه كار شان را به سرعت انجام دهند كه در زير به آن هااشاره مي كنيم:

كه به توسعه دهنده گان امكان مي دهد از قابليت٨ اينترنت اكسپلورر 5.7 نگارش Jscriptپشتيباني از AJAX.همانند دسكتاپ در ويندوز موبايل هم استفاده نمايند

امكان نمايش هر دو حالت ويژه ي موبايل و معمولي وب سايت ها را دارد.٦اينترنت اكسپلورر موبايل

بسته به تنظيم كاربر مي تواند به صورت مرورگر دسكتاپ يا مرورگر موبايل٦اينترنت اكسپلورر موبايل عمل كند.

( استفادهZoomكاربران مي توانند از امكانات صفحه ي لمسي و همچنين حالت هاي مختلف بزرگ نمايي )نمايند.

78

Page 79: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

حالت هاي مختلف نمايش وب سايت زماني كه كاربر يك وب سايت را باز يا يك برنامه ي تحت وب را اجرا مي نمايد، مرورگر كالينت توسط يك

شناسايي مي شود و بسته به مقدار متغر مذكور، نرم افزار تحت وب امكاناتUserAgentمتغير رشته اي ( را براي كالينت فراهم مي كند. آخرين نگارش ويندوز موبايل،AJAXبيشتر يا كمتري )مانند پشتيباني از

نگارشي از اينترنت اكسپلورر را استفاده مي نمايد كه به راحتي مي تواند به جاي مرورگر دسكتاپ يا ويندوز موبايل شناسايي گردد. براي اين كار كافي است كه از منوي داخل اينترنت اكسپلورر موبايل گزينه ي

مربوط به آن را انتخاب كنيد.

موبايل در حالت نمايش دسكتاپ و موبايل٦: برنامه ي اينترنت اكسپلورر 40شکل

١ نحوه سوئيچ كردن بين حالت هاي دسكتاپ و موبايل را مي بينيد. در بخش وسطي شكل ١در شكل اينترنت اكسپلورر در حالت ويندوز موبايل اجرا مي شود كه نمايش وب سايت را براي دستگاه ويندوز

نيز همان وب سايت را اين بار در حالت دسكتاپ١موبايل بهينه كرده است. در بخش سمت راست شكل مشاهده مي كنيد. با اينكه صفحه ي نمايش كوكتر است ليكن كاربر همان حالت مرورگر ويندوز دسكتاپ رادارد. در يك دستگاه با امكان صفحه ي لمسي جا به جايي در صفحه ي وب خيلي راحت تر انجام مي شود.

تشخيص قابليت هاي مرورگر اسEEتفاده نماييEEد. مقEEاديرUserAgentبراي تشخيص امكانات مرورگر كالينت مي توانيد از يك متغير رشته اي

زير براي متغير مذكور صرف نظر از نوع دستگاه )استاندارد يا پروفشنال( برگردانده مي شوند: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

كه اولي براي حالت موبايل و دومي براي حالت دسكتاپ است.

79

Page 80: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com را خواهEد داشEت. اگEر مرورگEر درAJAXاگر مرورگر در حالت دسكتاپ اجرا شود به طور خودكار امكانات

اجEEرا شEEود. هEEرie5حالت موبايل اجرا شود بايد كالينت به سرور اعالم كند كه مي تواند در حالت سازگار بEEا يا باالتر باشEEد اين سEEازگاري را دارد. بEEراي اعالم6.12 آن IEMobileمرورگر روي ويندوز موبايل كه نگارش

سازگاي مي توانيد از قطعه كد زير استفاده نماييد:public static bool IsIEMobileWithAjaxSupport(string input)

{ const string mobileBrowser = "IEMobile ";

bool ajaxSupported = false; if (input.Contains(mobileBrowser))

{

string version = input.Substring(input.IndexOf(mobileBrowser) + mobileBrowser.Length);

version = version.Remove(version.IndexOf(';')); string[] versionNr = version.Split(new char[] { '.' });

int IEMobileMajor = Convert.ToInt32(versionNr[0]);

int IEMobileMinor = Convert.ToInt32(versionNr[1]); ajaxSupported = IEMobileMajor > 6 || (IEMobileMajor == 6 && IEMobileMinor >= 12);

} return ajaxSupported;

}: تشخيص امكانات اينترنت اكسپلورر موبايل7كد

يا باالتر باشد مي توانيم توسط قطعه كد زيEEر امكانEEات مرورگEEر6.12اگر نگارش اينترنت اكسپلورر موبايل داخل نرم افزار تحت وبFrameworkInitializedكالينت را به سرور اطالع دهيم. اين كار را در بخشي از متد

دريافت شودpostbackانجام مي دهيم. توجه داشته باشيد كه اين كار يك بار انجام مي شود. هر بار كه پيغام نيسEتClientTarget( بخشEي از صEفحه نيEEازي بEEه مقEدار دهي refreshبراي نمونه به هنگام بارگذاري مجدد )

چون سرور از مقدار آن مطلع شده است.protected override void FrameworkInitialize(){

base.FrameworkInitialize(); if (!IsPostBack) { if (IsIEMobileWithAjaxSupport(Request.UserAgent))

{

ClientTarget = "ie5";

} }}

: ارسال اطالعات مرورگر كالينت به سرور8كد

80

Page 81: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

تشخيص ويندوز موبايل استاندارد از پروفشنال بEEرميUserAgentاز آن جا كه هEEر دو نگEEارش اسEتاندارد و پروفشEEنال وينEEدوز موبايEEل مقEEدار يكسEEان بEEراي

گردانند شما بايد از روش ديگري بEEراي تشEخيص نEوع دسEتگاه اسEتفاده نماييEد. در يEك درخواسEت مرورگEEر اطالعات اضافي نيز به سEرور ارسEال مي گEردد. يكي از اين اطالعEات انEدازه ي صEفحه بEEر مبنEاي پيكسEل

Smartاست. تفاوت اصلي هم در اين جا است. بر خالف برنامه هاي ClientرايEEنرم افزار هاي تحت وب ب ، هر دو نوع استاندارد و پروفشنال ويندوز موبايل از كنEEترل هEEاي يكسEاني اسEتفاده مي نماينEEد. دليلش هم آن است كه مرورگر اينترنت در هر دوي آن ها يكسEEان اسEEت. بنEEا بEEر اين يEEك نEEرم افEEزار تحت وب در دسEEتگاه

( باشد. شما به راحتي با دكمه هاي جابجايي مي توانيدbuttonويندوز موبايل استاندارد مي تواند داراي دكمه ) "( تعEEدادUA-Pixelsروي دكمه ي مورد نظر تان رفتEEه، بEEا دكمEEه ي اكشEEن روي ان كليEEك كنيEEد. فيلEEد هEEدر )"

واقعي پيكسل ها را بر مي گرداند يعني در دو حالت تفكيك گرافيكي باال و معمولي مقادير درست را بEEر ميگرداند.

استفاده نماييد كه اندازهMobileOptimized(tag Eبراي تنظيم مرورگر در حالت نمايش بهينه بايد از برچسب ) ي صفحه ي نمايشي را كه نرم افزار طبق آن توسعه داده شده است، مشخص نمايد. كد زيEEر داخEEل برنامEEه

را بسته به عرض صفحه ي نمايش مقدار دهي مي كند:MobileOptimizedبرچسب protected void Page_Load(object sender, EventArgs e){

if (!IsPostBack) { if (IsIEMobileWithAjaxSupport(Request.UserAgent))

{ if (this.Header != null) { HtmlMeta mobileOptimized = new HtmlMeta(); mobileOptimized.Name = "MobileOptimized";

mobileOptimized.Content = Request.Headers["UA-pixels"].Split(new char[] { 'X', 'x' })[0]; Header.Controls.Add(mobileOptimized); } }

}

}: تنظيم عرض سمت راست صفحه براي راحتي كاربر9كد

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

81

Page 82: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com

همان صفحه ي وب را مي بينيد كه بEEراي نمEEايش در دو دسEEتگاه اسEEتاندارد و پروفشEEنال وينEEدوز٢در شكل موبايل بهينه شده است.

: بارگذاري صفحه در اندازه ي فونت متفاوت در دستگاه هاي مختلف41شکل

قطعه كد زير نشان مي دهد كه چگونه مي توانيد اندازه ي قلم كنترل هاي وب را بسته به دستگاه و به ويژه عرض صفحه ي نمايش دستگاهي كه برنامه روي آن اجرا مي گردد، تغيير دهيEEد. در اين جEEا بايEEد از امكانEEات

ASP.NET code( ممنون باشيد و اين كه مي توانيEEد مشخصEEات كنEEترل هEEا را در فايEEل كEEد پس زمينEEه 3.5 – behind(.تغيير دهيد

protected void Page_Load(object sender, EventArgs e){ string currentTime = DateTime.Now.ToLongTimeString();

if (!IsPostBack) { if (IsIEMobileWithAjaxSupport(Request.UserAgent)) {

if (this.Header != null)

{

HtmlMeta mobileOptimized = new HtmlMeta(); mobileOptimized.Name = "MobileOptimized"; mobileOptimized.Content = Request.Headers["UA-pixels"].Split(

new char[] { 'X', 'x' })[0];

Header.Controls.Add(mobileOptimized);

pageWidth = Convert.ToInt32(mobileOptimized.Content); } }

}

if (pageWidth < 240) {

Label1.Font.Size = System.Web.UI.WebControls.FontUnit.Small;

Label2.Font.Size = System.Web.UI.WebControls.FontUnit.Small; Label3.Font.Size = System.Web.UI.WebControls.FontUnit.Small;

82

Page 83: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com Label4.Font.Size = System.Web.UI.WebControls.FontUnit.Small;

Label5.Font.Size = System.Web.UI.WebControls.FontUnit.Small; DropDownList1.Font.Size = System.Web.UI.WebControls.FontUnit.Small;

Button1.Font.Size = System.Web.UI.WebControls.FontUnit.Small; Menu1.Font.Size = System.Web.UI.WebControls.FontUnit.Small;

}

} : تنظيم اندازه ي فونت متناسب با مدل دستگاه كالينت10كد

مي بينيد كه اينترنت اكسپلورر موبايل آخرين تكنولوژي هاي موجود در نگارش دسكتاپ را تEEيز پشEEتيباني ميكنEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEد كEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEه اغلب امكانEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEات

ASP.NET 3.5.را در موبايل در اختيار تان قرار داده است تركيب وب و اسمارت كالينت

Smartاگر يEك برنامEه ي اسEمارت كالينت ) Client( رEترل مرورگEك كنEد از يEد بايEEعه مي دهيEتوس )Browser ControlرEEتفاده ار مرورگEEان اسEEما امكEEاستفاده كنيد. كنترل مرورگر در آخرين نگارش ويندوز موبايل به ش )

ASP.NETوب در دسEEترس را مي دهEEد و اين يعEEني امكEEان اسEEتفاده از از داخEEل يEEكAJAX و امكانEEات 3.5 برنامه ي اسمارت كالينت. تركيب وب و اسمارت كالينت اين امكان را مي دهد كه كاربر حEEتي بEEدون اتصEEال به شبكه نيز برنامه را اجرا نمايد. اگر اتصال شبكه برقرار باشد كاربر مي تواند از كنEEترل مرورگEEر اسEEتفاده نمايد و مثال به داده هاي بانك اطالعاتي روي سرور دسترسEEي پيEEدا كنEEد. اين ويEEژگي مثال در حEEالتي كEEه چنEEد كاربر به طور هم زمان روي داده هاي يكساني در بانك اطالعاتي كار مي كنند از تداخل پيش گيري مي نمايد چون اين كار كامال توسط سرور انجام مي شود. امتياز ديگEEر اين روش بEEه هنگEEام پEEردازش هEEاي سEEنگين از داخل يك كنترل مرورگر خودش را نشان مي دهد مثال براي دريافت اطالعEEات نقشEEه هEEاي زميEEني. بEEه جEEاي

استفاده از وب سرويس شما مي توانيد تمام عمليات سروري را داخل يك كنترل مرورگر انجام دهيد. مرورگرUserAgentكنترل مرورگر كه در برنامه ي اسمارت كالينت خود از آن استفاده مي كنيد همان مقدار

مستقل اينترنت اكسپلورر موبايل را بر مي گرداند. اما كنترل مرورگر را نمي توان به حالت موبايل معEEرفي كرد. از آن جا كه دستگاه ويندوز موبايل صفحه نمايش كوچكي دارد ممكن است بخواهيد صفحات خاصEEي را براي تركيب كنترل مرورگر در داخل يك برنامه ي اسمارت كالينت ايجاد نماييد. كد نمونه ي زيEEر يEEك برنامEEه ي كامل را تشان مي دهد كه اتصال شبكه اينترنت را تشEEخيص مي دهEEد و در صEEورت وصEEل بEEودن دسEEتگاه امكان نمايش يك صفحه ي وب حاوي اطالعات در داخل يك كنEترل مرورگEEر هسEت. اگEر شEبكه قطEEع شEود كاربر مي تواند آدرس هاي جديد را وارد نمايد ولي نمي تواند صفحات آن ها را مEEرور نمايEEد. البتEEه اين مثEEال

بسيار ساده است و در نمونه ي برنامه ي واقعي امكانات بيشتري مي توانيد قرار دهيد.

public partial class Form1 : Form{

private SystemState nrNetWorkConnections;

private SystemState deviceCradled;

public Form1() { InitializeComponent();

nrNetWorkConnections = new SystemState(SystemProperty.ConnectionsCount);

nrNetWorkConnections.Changed +=

new ChangeEventHandler(nrNetWorkConnections_Changed); deviceCradled = new SystemState(SystemProperty.CradlePresent); deviceCradled.Changed += new ChangeEventHandler(deviceCradled_Changed);

}

private void Form1_Load(object sender, EventArgs e) {

bool isCradled = (int)deviceCradled.CurrentValue != 0;

int nrNetworks = (int)nrNetWorkConnections.CurrentValue; tbURL.Select(tbURL.Text.Length, 0);

btnGo.Enabled = isCradled || nrNetworks > 0;83

Page 84: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.com }

void deviceCradled_Changed(object sender, ChangeEventArgs args) {

bool isCradled = (int)args.NewValue != 0; int nrNetworks = (int)nrNetWorkConnections.CurrentValue;

btnGo.Enabled = isCradled || nrNetworks > 0;

} void nrNetWorkConnections_Changed(object sender, ChangeEventArgs args)

{ bool isCradled = (int)deviceCradled.CurrentValue != 0;

int nrNetworks = (int)args.NewValue;

btnGo.Enabled = isCradled || nrNetworks > 0; }

private void btnGo_Click(object sender, EventArgs e) {

webBrowser1.Navigate(new Uri(tbURL.Text));

}}

: يك برنامه ي كامل اسمارت كالينت كه اتصاالت شبكه را تشخيص مي دهد11كد

تركيب اسمارت كالينت همراه با وب در وقع بهترين حالت از دو روش را در اختيار تان قEEرار مي دهEEد. شEEما مي توانيد بهره وري كاربر همراه با توان پردازش را روي سرور قEEرار دهيEEد. اگEEر داده هEEا بEEه طEEور مركEEزي ذخيره شوند مي توانيد يEك كEپي محلي از آن هEا را )حEEتي از طريEEق وب سEرويس( دانلEود كنيEد. اين روش مسأله ي تداخل را حل مي كند و ميزان داده هاي قابل دسترس روي دستگاه مي تواند به همان مقدار مورد نياز كاربر محدود گردد. اين كار صرفا براي صرفه جويي فضاي حافظه دستگاه نيست بلكه به لحEEاظ امنيEEتينيز مهم است چون باعث مي شود داده هاي حساس كمتري در هر زمان روي دستگاه قابل دسترس باشند.

برنامه ي تحت وب از داخل يك مرورگر و به صورت بخشي از يك برنامه ي اسمارت: 42شکل كالينت

84

Page 85: m0911.com · Web viewمقدمه ي مترجم. اين کتاب الکترونيکي در اصل يک سري مقاله ي 7 قسمتي برنامه نويسي ويندوز موبايل

http://m0911.wordpress.comفهرست تصاویر

New Smart Device Project.......................................................................................................6: پنجره ي 1شکل 8.............................................................................................2008: محيط طراحي فرم ويژوال استوديو 2شکل 10.....................................................: نخستين برنامه شما در حال اجرا در شبيه ساز دستگاه ويندوز موبايل3شکل 13..................................................................: برنامه ي ويندوز موبايل در حال اجرا روي شبيه ساز دستگاه4شکل 14.................................................................................................................: تنظيم مشخصات شبيه ساز5شکل 15................................................................................: اتصال شبيه ساز تلفن همراه به شبيه ساز دستگاه6شکل 16........................................................................: شبيه ساز دستگاه و شبيه ساز تلفن همراه در حال اجرا7شکل 17.............................................................................................................: دريافت پيامك داخل يك برنامه8شکل 18.............................................................................: مدير شبيه ساز در حال اجراي يك شبيه ساز دستگاه9شکل 19...............................................................................................................: تنظيمات شبيه ساز دستگاه10شکل 21................................................................: مدير امنيت دستگاه در حال اجرا از داخل شبيه ساز دستگاه11شکل 26...................................................................................... در نماي طراحي فرم2008: ويژوال استوديو 12شکل 27............................................................: خطوط راهنما بهترين دستيار شما در تركيب بندي واسط كاربر13شکل 28............................. حرفه اي در حالت عمودي، كنترل ها نه ثابت شده اند و نه بندكشي٦: ويندوز موبايل 14شکل 28................................ حرفه اي در حالت افقي، كنترل ها نه ثابت شده اند و نه بندكشي٦: ويندوز موبايل 15شکل 29...................................... حرفه اي در حالت افقي، با كنترل هاي ثابت و بندكشي شده٦: ويندوز موبايل 16شکل 30...................................................................................................: تغيير جهت نمايش در حالت طراحي17شکل 31.....................................................................: فرم پايه ي برنامه براي دستگاه ويندوز موبايل استاندارد18شکل 32..........................................................................: فرم پايه ي مشتق شده براي ويندوز موبايل حرفه اي19شکل 38...........................................................................................: كنترل سفارشي براي اعتبار سنجي كاربر20شکل 39........................................................................................................: كنترل سفارشي داخل يك برنامه21شکل )ورود داده ي عددي( در حالتNumericTextBox )اعتبار سنجي كاربر( و UserCredentials: كنترل هاي 22شکل

40..........................................................................................................................طراحي و اجرا داخل شبيه ساز44........................................: نرم افزار قطب نماي الكترونيكي كه يك كنترل سفارشي را استفاده مي كند23شکل GPSID.........................................................................................................................45: دياگرام كالس 24شکل 47.....................................................( به هنگام بروز خطاCompass: تغيير مشخصه هاي كنترل قطب نما )25شکل GPS................................................................49: قطب نماي الكترونيكي در حال اجرا و نمايش داده هاي 26شکل FakeGPS..........................................................49: اشتراك پوشه به هنگام مكان يابي شبيه سازي شده با 27شکل 54.....................................................................................................( هاي با نوع دادهDataSet: ديتاست )28شکل 55........................................................: فرم هاي توليد شده ي خودكار در محيط طراحي ويژوال استوديو29شکل 57.................................................زمان الزم براي بارگزاري و نمايش داده ها و جا به جايي بين ركورد ها: 30شکل 59......................................................................................................... هاي با نوع دادهSqlCeResultSet: 31شکل 61.......................................................................... به منبع داده ي نادرستProduct ID: اتصال جعبه متن 32شکل Order_DetailsResultSet.............................62( و انتساب آن به binding source: افزودن دستي منبع اتصال )33شکل 63............(٣: زمان الزم براي بارگزاري و نمايش داده ها و جا به جايي بين ركورد ها )مقايسه كنيد با شكل 34شکل Device Security Manager.....................................................................................................70: برنامه ي 35شکل 72..............................................................................: وب سايت حاوي برنامه و دانلود به روز رساني آن36شکل 73...........................................................................................................................اولين اجراي برنامه: 37شکل 74..................................(application updater: نصب برنامه و اجراي آن از طريق برنامه ي به روز رساني )38شکل 76...........................................................................................................: به روز رساني خودكار در عمل39شکل 81.............................................. موبايل در حالت نمايش دسكتاپ و موبايل٦: برنامه ي اينترنت اكسپلورر 40شکل 84.....................................................: بارگذاري صفحه در اندازه ي فونت متفاوت در دستگاه هاي مختلف41شکل 86..................برنامه ي تحت وب از داخل يك مرورگر و به صورت بخشي از يك برنامه ي اسمارت كالينت: 42شکل

85