نخستين برنامه ي بانك اطلاعاتي من در سيلور رايت نگارش ٢

ملفّات مشابهة
ISI Web of Knowledge )منبع: وبسایت کتابخانه مرکزی دانشگاه تهران( ::معرفي خذ بر ISI web of knowledge دشسب ي اػز و فشا و ذ دػششػي ث : ISI Web of Science

كروم عوارض بهداشتي راهكارهاي اندازه گيري و كنترل تكثير : واحد بهداشت حرفه اي مركس بهداشت استان قم زمستان 98 oh.muq.ac.ir بهداشت حرفه ای استان قم

Microsoft Word - C#2

ه ض ع: ثشسػ ساثغ فش گ ػبصهب ت ػؼ الگ ث ج د و ف ت دس ث وبسػتب ب اهبم خو )س ( دوتش ػل ؿش ؼت هشوض للت ت شاى دا گب ػل م پضؿى خذهبت ث ذاؿت دسهب ت شاى پ ٥ ب

باسو تؼالی 1 فصلناهم علم ی ژپو هش ی هن راهی سنتی - اسالمی

ورقة عمل الدرس الثاني تطبيقي اخلاص على هاتفي... برنامج App Inventor اعداد املعلمة : اماني ممدوح املصري مدرسة امحد شوقي الثانوية للبنات اختار اإلجابة ا

تاريخچه

ا زمش ٠ ش األعج ػ ذ خ عال خ ا غزاء ا أصذسد صاسح ا صذخ ا ؼب خ ا زمش ٠ ش االعج ػ ذ خ عال خ ا غزاء جبء وب زب : أ- الفبالد ر ف: 2- ر ا

التاريخ: االمتحان النهائي لمساق برمجة متقدمة תכנות מתקדם موعد أ الزمن: ساعتان فقط الخميس 2017/7/27 )10 عالمات( السؤال األول for او )while الالزمة لما

جامعة المنيا - كلية العلوم Minia University Faculty of Science رشع ١ ت ا غز ا ثب 2019 /2018 ثش ب ح ا ى ١ ١ بء ا س ٠ ١ خ االع ثب غخ ا عشث ١ خ ا ؤ ا عذي

عربي Sign-Code Website Guide فيما يلي دلي ا ل لطلب اسم مستخدم جديد لConnect Sell من خ لل موقع.Sign-Code يسمح لك الموقع بالدخول اإلداري على اسم المستخد

Microsoft Word - SolutionOOPFinal2011.doc

kh English To recognize the new words. To form meaningful sentences. To understand a short story. Reading : Anchor. Practice reading the story with yo

Microsoft Word - 50-John

Basic Invoice Template for Word

علوم و تكنولوژي محيط زيست ، شماره 22 ، پاييز 83

Microsoft Word - Excel VBA

Banner – Hold Information SOAHOLD

مدرسة هارون الرشيد الثانوية للبنين المهارات العملية / تكنولوجيا المعلومات ( الثاني عشر) إعداد/ أ. خالد الح

PowerPoint Template

چک ذ مدیریت سرمایة اجتماعی.1 مشارکت سازمانهای مردم نهاد در فرآیند دادرسی کیفری به منسلة سرمایة اجتماعی مهدی شیدائیان علی عسگریمروت مسلم واحدی اس

آزمون سراسري قرآن و عترت حفظ 15 جسء زهاىپاسخگ يي: 80 دقيق مهرماه 1393 توضيحات: 1- گزينه صحيح را در پاسخ نامه عالمت بزنيد 2- براي پاسخ غلط يک سوم نمره

السالم عليكم و رحمة هللا شرح ربط قاعدة بيانات Access بال.. C# مذا ستستفيد من هذا الموضوع!! -معرفة طريقة صنع قاعدة بيانات بالAccess -ربط قاعدة البيانات

Schedule Planner User Guide Target Audience: Students This tool can help you better plan your course schedule by generating a visual representation of

c1

Microsoft Word - 47-Matthew

اع اء ا مث ١ ) رغ ١ اال ساق( ظ ١ فح غك ؾاس ٠ ع - اعال / االع ٠ ح سل Tahani Yousif Mobarak Hussein اتشا ١ ع ١ عثذ عضا اتشا ١

"رنا :صمص لكبلبل روص قصس نا!عييهب : ىل " او!لا! رن ددعلا لوالا امج6 ت راينهال يف رن 0 5 -!فوسمليفدملا طع!هي:! رن ةلمج ضلزث!م قسربلىئممق " زك! ىد

Microsoft Word - Access VBA

الم ب س ط ة الع ر ب ي ة الت ر ج م ة Language: العربية (Arabic) Provided by: Bible League International. Copyright and Permission to Copy Taken from th

BND

Cambridge University Press Cambridge IGCSE Arabic as a First Language Coursebook Luma Abdul Hameed, Hanadi Al Amleh, Shoua Fakhouri

How To Make Connection Between Oracle DB Server 9i & Oracle Developer 6i

Microsoft Word - Oracle1

Basic Invoice Template for Word

ن خطبة الجمعة المذاعة والموزعة بتاريخ 15 من شوال 1439 ه الموافق 2018/6/29 م م ن ال م ن اه ي الل ف ظ ي ة ن ا م ن س ي ئ ات أ ع م ال ن ش ر ور أ ن ف سن ا

(WMConf6 & ESConf4)

Eng.M.Abou Elela Ubuntu Install 1 Facebook /Computer Learn Books

نقـــد و تمحيـــص روايات المهدي (الشيعية)

همیشه بهار با نام علمی (Calendula officinalis) به دلیل استفاده در جنبه های دارویی و زینتی بیش از بیش مورد توجه و تحقیق قرار گرفته است

ر ت ب م ف األخ ؼ إ ل األ ث ق ؿ ك ز ننا:..... ر ت ب م ف األ ث ق ؿ إ ل األخ ؼ ك ز ننا:..... أ ض ع د ا ر ة ع ل الش ك ؿ األ ث ق ؿ ك ز ننا أ ض ع د ا ر ة ع

الحث على اغتنام الأوقات بفعل الطاعات

فسم التاريخ---امريكا الشمالية المرة الثانية النقل في قارة امريكا الشمالية 1 -خصائص طرق النقل في القارة : ٣ وظذ ثب و د ػخ ا طشم االعب ٤ ت ا عبئظ ا ز خ

مختبر البرمجة والتحليل العددي قسم علوم الجو جمل التحكم والشرط والتكرار المرحلة الثانية PROGRAM CONTROL, CONDITION AND LOOP STATEMENTS الجمل الشرطية :-

برمجة متقدمة -1-

الفرق بين البرمجة الإجرائية و البرمجة المسيرة بالأحداث :

Stat 111 Ch 2 محمد عمران السنة التحضيرية رياضيات واحصاء

عرض تقديمي في PowerPoint

فهرست هزينه هاي طرح پيشنهادي راه اندازي سرويس اينترنت

خكبثبت شآى سر و ث اغل ثحج: 1 ا ى ا سبم ؿ ثشاى هب س ضي ضذ ث اغل ثحج ثشهىگشد ن: ثحج دس ا ي ث د :»آ ب خكبثبت ض ب ى اختػبظ ث حبؾش ي دس هزلس تخبقت داسد ثشا

هزالجت بی رز ع ی 18 تب 29 عبل پشؽه هعاونت بهذاشت دفتر سالهت جوعيت خانىاده وهذارس اداره سالهت جىاناى 2

إيناس السيد محمد الشعراوى أستاذ مساعد قسم الحاسب كلية التربية - الجبيل المعلومات الشخصية الجنسية : مصرية تاريخ الميالد / 11 / م القسم علوم الحاس

ثؼ اهلل ا شح ا شح ٨ کفایتسنجی دانشهای ادبی به منظور توسعة آنها 1 ح ذ ػب ٧ ش ٥ لشد چکیده ا ٠ ٧ دا ؾ ١ ب ٥ ادث ٦ چ ٠ ث ٠ دػت آ ذ ا ذ ثشا ٥ د ذا ش ١ ب ٥

Microsoft Word - Question Bank-II Sem. BA Arabic Core Course, Informatics with DTP

(قفزات جديدة لمفهوم البحر في الشعر العربي المعاصر)

بسم اهلل الرمحن الرحيم الوحدة الثانية الفيجول بيسك Microsoft VISUAL BASIC احلمد اهلل الذي أكرمين و منحين الفرصة لتوفري لكم هذا امللخص املنقى للوحدة ال

دور ا ا ا ا ى ا ب ا رس ا ر م د إ ا أ أ در ن ا - ا دان ا ذ ا ا ر أ ا

دائرة اللغة العربية المادة المطلوبة المتحان اإلعادة للعام الدراسي : الصف: الثامن المهارة )الفهم واالستيعاب + التحليل األدبي( النحو المادة ال

سا وبي تىويل و دى اظ بس به هبليبتي ػوىشد سبل 1393 دس تيشهب سبل 1394 اػضبي هحتشم داساي دش ا اضتغبل سبصهبى ظبم ه ذسي سبختوبى ثب سالم احتشام ثبػ بيت ث لض

د. ط در ءة ز ا ت ا دزة (درا ا ا ت) د. ط در را ر ا م م ا ا ا : ا ت ا ا ا م وا ا ي و إ ى ا ت ا ا ا دو إ و دة ا و أ اد ا. و ف ا ا إ وا ا ت ا دزة م ا أ ا

أػذثد ثالعضجرر آ جي ظطف بسم هللا السحمن السحيم كل زبى ذنى علما صدق هللا العظيم مركسة الصف الثالث الاعدادى 7102 / 7102 الفصل الدزاس ى الاول عام م أعداد

دا طگب ػل م پضضىي هؼب ت دسهبى هذيشيت اه س پشستبسي ایدز در کودکان ايذص ثيوبسي است و ت سط يه يش س ث بم يش س مع ايو ي ا سب ي)اچ آي ي( ه تمل هي ض د. ايي ي

ک ي DOI: /jfwp ا زان طج ؼ مىبثغ مجل چ ة فزآيرد ب ي جىگل 1397 پب ش 3 ضمبر 71 دير ظ یا جادهه در موجود آبروهای قطر فنی ار

دولة فلسطني التخطيط الوطني ادلكاني ادلخطط الوطني حلماية ادلوارد الطبيعية وادلعامل التارخيية 0

) NSB-AppStudio برمجة تطبيقات األجهزة الذكية باستخدام برنامج ( ) برمجة تطبيقات األجهزة الذكية باستخدام برنامج ( NSB-AppStudio الدرس األول ) 1 ( الدرس

Application-1st page

النسخ:

ػ ا جشذي س ػؼ ش افضاس ثشاي ػيؼش ػب ي ذ ص ثبي Windows Mobile Application Development C#, Win Mobile,.NET, Dev, WinForm, GPS, Custom Control, XML,, SQL- Server, SQL-CE, AJAX, Web mstruys, dougturn ذي ػجذا ي () http://www.codeproject.com 20 سيش ب 1389 88.1.2.3.4.5 ػ ا اك ي و بر و يذي ؤ ف شػغ ػ ح ششػ سبسيخ ا شبس ؼذد سؼذاد كفح ػ ب ي فل ب $فبسػي# ػ ب ي فل ب $ا يؼي# ايؼبد خؼشي ثش ب ؿجي ػبص دػش ب ذيشيز ؿجي ػبص س ػؼ ي ثش ب ثب WinForm افض د و شش ػفبسؿي اػشفبد اص GPS مذ اي ثش 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 6. Device Security and Application Deployment 7. Mobile Web Development مذ ي ششػ اي وشبة ا ىشش يىي دس اك يه ػشي مب ي 7 لؼ شي ثش ب يؼي ي ذ ص ثبي اػز و دس اػف ذ 1388 فش سدي 1389 ثخؾ ث ثخؾ سشػ دس ثال شش د. يى ثشاي ساحشي وبس خ ا ذ ب سشػيح داد و سا دس يه فبي شدآ سي ثبص ش بي. يؼ ذ ب اي ؼ ػ مب اص وبسو ب و ذب ي يىش ػبفز ؼش ذ. يؼ ي ب و ذب ي و ي ذ ص ثبي سا س يذ شش د اػز. اص اي س ئ و ب ت حش يبر اي اطش ثشاي ثش ب يؼب ي و ي خ ا ذ اسد د يبي ي ذ ص ثبي ث ذ ػ د ذ خ ا ذ ث د. خ ؿحب خ ا ؿذ و ظش دي بد خ د سا اص شيك آدسع ثال يب ث آدسع اي ي mehdi.abd@gmail.com اسػب فش بييذ. 1

فهرست مطالة فصل نخست... 4 لت يظ ا اػش دي 2008 ايؼبد خؼشي ثش ب ي ي ذ ص اثضاس بي اهبفي س ػؼ ش افضاس...5 ثبي...7 فصل دوم... 11 بسؽ بي خش ف ؿجي ػبص دػش ب... 11 اػشاي ؿجي ػبص دػش ب اص داخ يظ ا اػش دي... 2008 11 س ظي خلبر ؿجي ػبص دػش ب... 14 اػشفبد ي ص ب اص ؿجي ػبص دػش ب ؿجي ػبص س ف شا... 15 دسػز وشد اسلب داخ ؿجي ػبص س ف شا... 16 اسػب دسيبفز ديب ه... 17 و شش ؿجي ػبص دػش ب س ػي ثش ب ي ذيش ؿجي ػبص دػش ب... 11 رخيش ي س ظي بر ؿجي ػبص دػش ب ثشاي اػشفبد بي ثؼذي... 11 اػشفبد اص ؿجي ػبص دػش ب ثشاي آص بيؾ س ظي بر ا يشي خش ف... 12 خ دوبس ػبصي ذيش ؿجي ػبص... 11 فصل سوم... 14 دػش ب بي ي ذ ص ثبي اػشب ذاسد... 15 دػش ب بي ي ذ ص ثبي 6 حشف اي... 15 2 شاحي يه اػي وبسثش ػبد دس ي ذ ص ثبي 6 حشف اي... 16 ايؼبد ش افضاسي و ثش ا ذ ثب ػ ز بي خش ف كفح بيؾ ػبص بس ثبؿذ... 17 ث ذوي يب طبثز وشد و شش شاحي ثش ب اي و س ي دػش ب بي خش ف وبس ب... 17 و ذ... 12 اسص ثشي فش ب... 11 س ػ ث بثغ ػيؼش... 14 فصل چهارم... 16 افض د و شش بي ػفبسؿي ث ثش ب ي خ دسب... 17 و شش بي وبسثش $ػفبسؿي#... 17 و شش بي اسص ثشي ؿذ... 11 و شش بي ػفبسؿي... 41 اػشفبد اص و شش ػفبسؿي داخ يه ثش ب... 44

افضد ا الػبر شث ى ث ح ػغشافيبيي ث ثش ب... 45 ث س ص سػب ي و شش بي اػي وبسثش دس يه ثش ب ي چ ذ دشداصؿي... 41 آص بيؾ ثش ب بي حؼبع ث ح ػغشافيبيي... 41 فصل پنجم... 51 51... SQL Server Compact Edition صيش ػبخز... SQL Server 2005 Compact Edition 51 اػشفبد اص ديشبػز بي داساي ع... 51 اػشفبد اص SqlCeResultSets ثب ع داد... 51 ؿى 31: SqlCeResultSet بي ثب ع داد... 51 فصل ششم... 65 مذ... 66 ا يز دس دػش ب بي ي ذ ص ثبي... 66 ؼ ص بي لت ش افضاس... 66 سأييذي بي ش افضاس... 67 ػ ح دػششػي ش افضاس... 67 س ظي بر ا يشي دػش ب... 67 ؼ ص اػشا فبي بي وشبثخب ي...DLL 61 آص بيؾ ثش ب دس حب ز بي خش ف س ظي بر ا يشي... 61 لت ثش ب... 71 ث س ص سػب ي ثش ب لت يه ث س ص سػب ي ب... 71 ثش ب ي ػذيذ... 71 ثش ب... 76 ؿى 39: ث س ص سػب ي خ دوبس دس ػ... 76 فصل هفتم... 71 ش افضاس بي سحز ة دشيجب ي اص ي ذ ص ثبي... 12 حب ز بي خش ف بيؾ ة ػبيز... 11 سخيق لبث يز بي فهرست ش س ش... 11 سخيق ي ذ ص ثبي اػشب ذاسد اص دش ف ب... 11 تصاویر... 17 3

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

مذ يظ ا اػش دي 2008 بسؽ حشف اي ث ؿ ب اي ا ىب سا ي د ذ و ش افضاس بيي ث صثب بي ؼ ي (C/C++) يب وذ بي ذيشيز ؿذ.NET) (C#/Visual Basic ثشاي دػش ب بي ثب ػيؼش ػب ي ذ ص ثبي س ػؼ د يذ. دس اي مب ؿ ب يبد ي يشيذ و يظ ا اػش دي 2008 سا شا ثب اثضاس بي س ػؼ ي ش افضاس دس ي ذ ص ثبي لت و يذ خؼشي ثش ب ي ذ ص ثبي خ د سا ثشاي بسؽ 6 اي ػيؼش ػب ايؼبد بييذ. ث ػال ثب ؿجي ػبص دػش ب ي ذ ص ثبي آؿ ب ي ؿ يذ و ا ىب آص بيؾ ثش ب بي ي ذ ص ثبي سا ث ؿ ب ي د ذ ؿ ب ؼج س يؼشيذ و ثشاي اي وبس ث س فيضيىي يه دػش ب الؼي ي ذ ص ثبي $ ظال Pocket PC يب #Smart Phone داؿش ثبؿيذ. لت يظ ا اػش دي 2008 اثضاس بي اهبفي س ػؼ ش افضاس ا ش يظ ا اػش دي 2008 سا ثب س ظي بر ديؾ فشم لت بييذ ضي ي Smart Device Development ثشاي س ػؼ ي ش افضاس ي ذ ص ثبي فؼب خ ا ذ ث د. ش د ثش ب ي يظ ا اػش دي سا بي آ و س كي ي و ثب اػشفبد اص آ آخشي ث س ص سػب ي ب ػش يغ ده ب سا لت بييذ. (MSDN) دغ اص لت يه ي ه ثشاي ث س ص سػب ي بيؾ ي د ذ دغ اص س د ث حيي يظ ا اػش دي اص ي File New Project ضي ي Smart Device Project سا ا شخبة بييذ. اي ضي دس ش د صثب #C Visual Basic.NET لبث دػششػي اػز. ثب فشم اي و ؿ ب يه دش ط ث صثب #C دس ي ذ ص ثبي بسؽ 6 ايؼبد ي بييذ ت سا ادا ي د ي. ثذي ظ س دس د ؼش ي Project Types ضي ي #C سا ثبص وشد Smart Device سا ا شخبة بييذ. ب ذ ثمي ي ا اع دش ط ب ب ح رخيش ػبصي آ ث س ديؾ فشم سؼيي ي شدد دس ػي حب ؿ ب خ ا يذ س ا ؼز و ب ح د خ ا خ د سا ثشاي دش ط سب سؼيي بييذ. دغ اص سأييذ اي ا الػبر د ؼش ي ػذيذ ثب ػ ا Add New Smart Device Project ػ ز اهبف وشد ا اع خش ف دش ط بي ي ذ ص ثبي بيؾ داد ي ؿ د. لج اص ايؼبد خؼشي ثش ب ي ي ذ ص ثبي ف شػز ثبصؿ ي Target Platform سا ثبص و يذ. ا ش يظ ا اػش دي 2008 سا ث ك سر اػشب ذاسد لت وشد ثبؿيذ فمي ا اع حذ دي اص دػش ب بي ي ذ ص ثبي سا خ ا يذ ديذ و Windows Mobile 6 ثي آ ب يؼز. ثشاي اي و ثش ا يذ دس ػيؼش زو س دش ط ايؼبد بييذ ثبيذ اثضاس س ػؼ ي آ يؼ ي Windows Mobile 6 SDK سا لت وشد ثبؿيذ. اي اثضاس س ػؼ ؿب ؼش ذار ثش ب بي ظب فبي بي وشبثخب اي سلب يش حيي ؿجي ػبص اثضاس بي الص سا ث يظ اػش دي اهبف ي بيذ سب ث و ه آ ب ثش ا يذ ثش ب بي سد ظشسب سا س يذ و يذ. اي اثضاس س ػؼ سا ث ك سر ؼضا ثبيذ لت وشد ثبؿيذ چ ثؼذ اص اساي يظ ا اػش دي ث ثبصاس ث ك سر ؼشم س يذ س ا ي ثبصاس ؿذ ا ذ. اثضاس بي س ػؼ (SDK) ػذيذسش ش ع سش يض ثؼذ ب لبث دػششع خ ا ذ ث د. دس دبيي د ؼش ي Add New Smart Device Project ي ه س د ث كفح ي اي شش شي Windows Mobile Developer Center لشاس داسد و اثضاس بي ػذيذسش سا ي س ا يذ اص اي كفح دسيبفز بييذ. ا ش اص لج اثضاس س ػؼ ي Windows Mobile 6 سا دس حيي يظ ا اػش دي 2005 لت دغ اص آ 2008 سا لت د ايذ ثبيذ اثضاس س ػؼ سا ؼذد لت و يذ ش دس حيي 2008 لبث دػششع خ ا ذ ث د. 5

ؿى :1 د ؼش ي New Smart Device Project حب ا ش حذال يىي اص د بسؽ Professional Standard اثضاس س ػؼ ي ي ذ ص ثبي 6 سا لت وشد ايذ ي س ا يذ خؼشي ثش ب ي خ د سا ثشاي دػش ب ثب ػيؼش ػب ي ذ ص ثبي 6 ث يؼيذ. 6

ايؼبد خؼشي ثش ب ي ي ذ ص ثبي ثشاي اي ثش ب ثبيذ ضي ي Windows Mobile 6 Professional SDK سا دس ثخؾ Target Platform ا شخبة بييذ. ا جش ؿ ب ص ي س ا يذ ثشاي سؼذاد صيبدي اص دػش ب بي ي ذ ص ثبي دػش ب بي ػ ي Windows CE ثش ب ث يؼيذ. ثب لت ش د بسؽ اثضاس س ػؼ ي ي ذ ص ثبي 6 دس يظ ا اػش دي 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 Compact Framework و صيش ؼ ػ اي اص فشي سن وب.NET ثشاي س يذ ش افضاس دػش ب بي ؿ ذ Device) (Smart اػز ثش ب ث يؼيذ..NET Compact Framework سا دس بسؽ بي 2.0 3.5 ي س ا يذ دس حيي يظ ا اػش دي 2008 اػشفبد بييذ. ا ش ي خ ا يذ ثشاي دػش ب بي لذي ي سش يب بسؽ بي لج ي.NET Compact Framework ثش ب ث يؼيذ ثبيذ يظ ا اػش دي 2005 سا لت و يذ و ا جش خبسع اص ح ك ي اي ت ي ثبؿذ. يى ؿ ب ي س ا يذ ص ب بسؽ بي 2005 لت بييذ. ثشاي ايؼبد يه دش ط ي Smart Device شاح صيش سا ا ؼب د يذ: 2008 سا دس يه ػيؼش.1.2.3.4.5 اسد حيي يظ ا اػش دي 2008 ؿ يذ. ضي ي Project سا اص ي File->New ا شخبة بييذ. دس ثخؾ Project types ايشذا #C Visual ػذغ Smart Device سا ا شخبة بييذ. ب دش ط ح رخيش ػبصي آ سا سؼيي وشد OK سا ثض يذ. د ؼش ي دي شي بثك ؿى 1 بيؾ داد ي ؿ د و دس آ ع دش ط (Template) اثضاس سد اػشفبد platform) (Target بسؽ.NET Compact Framework سؼيي خ ا يذ وشد. دس ثخؾ Target Platform ضي ي Windows Mobile 6 Professional SDK ا شخبة بييذ..6.7.8 بييذ. اص ف شػز.NET Compact Framework version ضي ي.NET Compact Framework Version 3.5 سا ا شخبة اص ف شػز Templates ا ي Device Application سا ا شخبة بييذ. ثؼذ اص اي OK سا صديذ دش ط ي Smart Device solution ايؼبد ي ؿ د و ؿب : شػغ بي شث ى ث اػ ج ي بي سد اػشفبد دس ثش ب. دش ذ ي AssemblyInfo.cs و ا الػبر ؿشوز حل ش افضاسي بسؽ آ سا دس اي دش ذ رخيش ي بييذ. دش ذ ي Form1.cs و حب ي وذ ث صثب يظ ا #C ثشاي اػي وبسثشي ا ي ي ثش ب اػز. دش ذ ي Program.cs حب ي وذ ث صثب يظ ا #C و دس الغ م ي ؿش ع اػشاي ثش ب ي ؿ ب اػز. 7

ا ش چيض خ ة ديؾ سفش ثبؿذ ؿ ب حيي شاحي فش يظ ا اػش دي 2008 سا ث ك سر صيش خ ا يذ ديذ. ؿى 2: حيي شاحي فش يظ ا اػش دي 2008 دس ؿى 2 چ ذ ثخؾ اص حيي شاحي يظ ا اػش دي 2008 سا ي ثي يذ. ثخؾ ثضسي ػ ز چخ كفح و ؿى يه دػش ب ثبي ثب ػيؼش ػب ي ذ ص سا ب ي د ذ دس الغ ث ػبي شاح فش دس ثش ب بي ؼ ي اػز. ؿ ب ي س ا يذ و شش بي سد يبص اػي وبسثشي سا اص ػؼج اثضاس آ ا شخبة وشد داخ Form1 دس ح سد ظش لشاس د يذ. د ؼش ي ػ ز ساػز ثبال ث ب Solution Explorer اػز و س ب دش ط ب و ثخوي اص ثش ب ي ؿ ب ؼش ذ - فبي بي داخ ش وذا اص آ ب سا ث ك سر بي دسخشي view) (tree ب ي د ذ. دس ثخؾ دبيي د ؼش ي Solution Explorer ؿ ب د ؼش ي ثب ػ ا Properties سا ي ثي يذ و دس آ ي س ا يذ خلبر ش وذا اص و شش بي ا شخبة ؿذ ي اػي وبسثشي سا ثجي يذ سغييش د يذ. ىش : ا ش د ؼش ي Properties بييذ. سا دس كفح يظ ا اػش دي ذاسيذ ي س ا يذ ضي ي Properties Window سا دس ي View فؼب ثخؾ دي ش دس حيي يظ ا اػش دي 2008 ف شػز ثبص ؿ ي Target Device اػز و دس ؿى 2 ثب خي لش ض ثيوي ؿى خق ؿذ اػز. دس اي ؼب ؿ ب ي س ا يذ سؼيي و يذ و ثش ب سب سا ثشاي اػشا دس وذا دػش ب يب وذا ؿجي ػبص س ػؼ ي د يذ. 8

ثشاي اي و ا ىب بر ػ يبسي ث ثش ب سب اهبف و يذ شاح صيش سا ا ؼب د يذ. يه و شش دو اص ػؼج اثضاس ثىيذ س ي Form1 لشاس د يذ. دس د ؼش ي Properties خل ي Name سا اص مذاس ديؾ فشم button1 ث btnclickme سغييش د يذ. دس ب د ؼش خل ي Text سا اص button1 ث ME! Click سغييش د يذ. يه و شش ثشچؼت اص ػؼج اثضاس ثىيذ س ي Form1 لشاس د يذ سي سغييش ا ذاص ثذ يذ و س ب ػشم Form1 سا ثذ ؿب ذ. دس د ؼش ي Properties خل ي Name سا اص مذاس ديؾ فشم label1 ث lblinfo سغييش د يذ. دس ب د ؼش مذاس خل ي Text سا خب ي و يذ. ثشاي اي و خلبر Form1 دس د ؼش ي Properties ظب ش ؿ د س ي ح د خ ا ي اص Form1 و يه و يذ. مذاس خل ي MinimizeBox سا False لشاس د يذ سب ثب و يه س ي دو ي OK و دس ؿ ي ػ ز ساػز ثبالي Form1 ؼز اػشاي ثش ب س ب ؿ د. س ي دو ي ME! Click داث و يه و يذ سب ذيش س يذاد Click سا ث دو اهبف بييذ. دس ح ي اص يشاي ش وذ و ىب ب لشاس داسد وذ صيش سا اهبف بييذ..1.2.3.4.5.6.7.8.9.10 lblinfo.text = "Button '" + btnclickme.text + "' clicked at " + DateTime.Now.ToLongTimeString(); ىش : ؿ ب حي ؿش وذ لبث يز بيؾ س ي و بر و يذي... حيي يشاي ش وذ سا و ش وذا اص دػش س ب ػجبسار سبيخ ؿذ سا ثشاي ساحشي سخيق دسػز ث د آ ث س خبكي بيؾ ي د ذ ب ذ خ ا يذ وشد. چ ي Intellisense يض ؿ ب سا دس اسد وشد دػش س ا ؼ ب و ه خ ا ذ وشد. 9

ثشاي آ بد ػبصي اػشاي ثش ب سب شاح صيش سا ا ؼب د يذ. اص ي Build ضي ي Build Solution سا ا شخبة و يذ. ثب فشم اي و يچ خ بيي دس سبيخ دػش س بي ثش ب ذاؿش ثبؿيذ ديغب Build succeeded دس اس هؼيز يظ ا اػش دي 2008 بيؾ داد خ ا ذ ؿذ. ثشسػي و يذ و ضي ي Windows Mobile 6 Classic Emulator دس ف شػز ثبصؿ ي Target Device ا شخبة ؿذ ثبؿذ. اص ي Debug ضي ي Start Debugging سا ا شخبة و يذ..1.2.3 ثؼذ اص چ ذ حظ ؿجي ػبص والػيه ي ذ ص ثبي بسؽ 6 اػشا ي ؿ د. دس ك سر ض.NET Compact Framework 3.5 دس ؿجي ػبص وذي لت خ ا ذ ؿذ. دس شح ي دبيب ي ثش ب ي ؿ ب لت اػشا خ ا ذ ؿذ. ثشاي آص بيؾ اػشاي ثش ب سب شاح صيش سا ا ؼب د يذ. ؿى 3: خؼشي ثش ب ؿ ب دس حب اػشا دس ؿجي ػبص دػش ب ي ذ ص ثبي اسد ثش ب و دس ؿجي ػبص دس حب اػشا اػز ث يذ دو ي ME! Click سا و يه بييذ. ش ي سا و دس ثشچؼت س ي فش ظب ش ي ؿ د خ ا يذ ديذ. ثب ش ثبس و يه س ي دو ي ثي يذ و ػبػز بيؾ داد ؿذ س ي ثشچؼت ث س ص ي ؿ د. ثشاي خش ع اص ثش ب دو ي OK سا دس ؿ ي ػ ز ساػز ثبالي كفح ي ثش ب و يه و يذ. ثب ا شخبة ضي ي Save State and Exit اص ي File ثش ب ي ؿجي ػبص آ سا ثج ذيذ. اص يظ ا اػش دي 2008 خبسع ؿ يذ..1.2.3.4.5 10

فصل دوم شثيه ساز دستگاه و مذيريت شثيه ساز 11

مذ ا ش ؿ ب س ػؼ د ذ ي ثش ب بي ي ذ ص ثبي ثبؿيذ حش ب ثب ؿجي ػبص دػش ب آؿ ب ؼشيذ. اي يه اثضاس ساي ب ثشاي آص بيؾ اػشاي ثش ب بي سب ثش س ي ا اع خش ف دػش ب بي ثب ػيؼش ػب ي ذ ص ثبي ثب ذ بي خش ف اػز ثذ اي و يبص ث س ي ي دػش ب بي الؼي ثبؿذ. دس اي مب ؿ ب ثب ح ي وبس ؿجي ػبص دػش ب ثشاي آص بيؾ ثش ب بي خ د آؿ ب ي ؿ يذ اي و چ ؿجي ػبص سا س ظي بييذ سب دليمب ثش ا يذ ػ ىشد اثضاس سا و شش و يذ. ث ػال چ ي اػشفبد اص ؿجي ػبص سا ث ك سر سشويجي ثب س ف شا يض خ ا يذ آ خز و ثش ا يذ س بع بي س ف ي اسػب دسيبفز ديب ه سا آص بيؾ بييذ. دس بيز خ ا يذ ديذ و چ ي س ا يذ ث و ه ثش ب يؼي اص ذيش ؿجي ػبص ثشاي و شش ؿجي ػبص بي خش ف اص داخ يه ثش ب ي دػىشبح اػشفبد و يذ. بسؽ بي خش ف ؿجي ػبص دػش ب بسؽ 1.0 ؿجي ػبص دػش ب شا ثب يظ ا اػش دي 2005 ػشه ؿذ. اي اثضاس ث ؿ ب ا ىب ي داد و ثذ يبص ث دػش ب الؼي ي ذ ص ثبي ثش ب بي خ د سا آص بيؾ و يذ. ث حن اساي ي بسؽ 1.0 بسؽ 2.0 ؿجي ػبص يض شا ثب اثضاس س ػؼ ي ي ذ ص ثبي 6 ػشه ؿذ و ػ ىشد وبسايي آ ؼجز ث بسؽ 1.0 ؼششؽ يبفز. دس ثخي اص شاح لت اثضاس س ػؼ ي ي ذ ص ثبي 6 بسؽ 2.0 ؿجي ػبص دػش ب يض ػبي ضي بسؽ 1.0 ي شدد. دس الغ س ب ي دش ط بي ي ذ ص ثبي ؿ ب و ثب يظ ا اػش دي 2005 س ػؼ داد ايذ اص بسؽ ػذيذ اػشفبد خ ا ذ وشد. حشي ا ش ؿ ب دالسفش ملذ سا ي ذ ص ثبي 6 سؼيي ى يذ ثخ ا يذ چ ب اص بسؽ 2005 اػشفبد بييذ ثبص ث شش اػز و حذال يه اثضاس س ػؼ ي ذ ص ثبي 6 سا لت و يذ سب فمي اص ػشػز ثبالسش ث ى اص ديشفز بي آ ب ذ ا ىب س ظي بر ػضء ث ػضء ثشاي ثخؾ بي خبف دػش ب يب ا ىب ؿجي ػبصي اسلب ثي ػي اػشفبد بييذ. بسؽ 0.3 آخشي بسؽ ؿجي ػبص دػش ب $دس ص ب بسؽ اي مب # اػز و شا ثب يظ ا اػش دي 2008 ػشه ؿذ اػز ث س خ دوبس بسؽ بي لج ي لت ؿذ س ي ػيؼش ؿ ب سا ثب بسؽ ػذيذ ػبي ضي ي بيذ. بسؽ 0.3 ػال ثش ث ج د وبسآيي ؼجز ث بسؽ 0.2 اص اػي بي COM ذيش ؿجي ػبص دػش ب اػشفبد ي و ذ. ث ػال ا ىب و شش ؿجي ػبص ب سا اص شيك ثش ب يؼي ثشاي اسد صيش فشا ي ػبصد: اػشاي (instance) خ دوبسػبصي اػشاي ؿجي ػبص ب سغييش س ظي بر ؿجي ػبص 12

اػشاي ؿجي ػبص دػش ب اص داخ يظ ا اػش دي 2008 چ ذ س ؽ ثشاي اػشاي ؿجي ػبص اص داخ يظ ا اػش دي 2008 ػ د داسد. وبفي اػز و يىي اص ا اع ؿجي ػبص ب سا و جك ثش SDK يظ ي دالسفش ملذ ثش ب ي ؿ ب اػز اص داخ يظ ا اػش دي 2008 ا شخبة و يذ ثش ب سب سا اػشا و يذ. لج اص اػشاي ثش ب سب س ي ؿجي ػبص ا شخبة ؿذ ثش ب سب وب ذبي ي ؿ د ؿجي ػبص يض ا ش دس حب اػشا جبؿذ ثبال ي آيذ ث يظ ا اػش دي 2008 شل ي ؿ د. ثؼذ اص ػبخش ؿذ ثش ب ي اػشايي دس ك سر ض SQL Server CE شا ثب بسؽ دسػز.NET Compact Framework ث س خ دوبس دس دجي ػبص دػش ب اػشا خ ا ذ ؿذ. ؿى 4: ثش ب ي ي ذ ص ثبي دس حب اػشا س ي ؿجي ػبص دػش ب 13

س ظي خلبر ؿجي ػبص دػش ب اغ ت ا لبر ى اػز ثخ ا يذ ثش ب ي ذ ص ثبي سب سا ثب س ظي بر خش في اص دػش ب آص بيؾ و يذ. ثشاي اي حب ز ب ؿجي ػبص دػش ب اي ا ىب سا ث ؿ ب ي د ذ و سؼ يضار خش في سا ؿجي ػبصي بييذ. ظال ثشاي يضا ؿبسط خلي اص ثبسشي و ثخ ا يذ ثش ب سب سا دس حب ز ثبسشي هؼيف ا شحب و يذ. يب اي و يه وبسر ؿجى ي ؼبصي سا ث وبسر ؿجى ي فيضيىي خ د و س ي وب ذي سش سب ؼز شل بييذ چ ي د سر اسسجب ي (COM) ؼبصي ؿجي ػبص سا ث د سر اسسجب ي فيضيىي س ي وب ذي سشسب شل بييذ. يب اي و د ؿ ي خبكي سا ثي وب ذي سش خ د $و س ي آ ثش ب سا س ػؼ ي د يذ# ؿجي ػبص $اص شيك د ؼش ي خلبر# ث اؿششان ث زاسيذ. د ؿ ي اؿششاوي ث ك سر وبسر حبفظ Card) (Storage داخ ؿجي ػبص دػش ب ب ذ خ ا ذ ؿذ. ثب اػشفبد اص د ؿ اؿششاوي ي س ا يذ فبي ب سا ثي ؿجي ػبص وب ذي سشي و داسيذ ثش ب سب سا س ي آ س ػؼ ي د يذ جبد و يذ. ثشاي بيؾ د ؼش ي خلبر ؿجي ػبص اص ي File ؿجي ػبص ضي ي Configure سا ا شخبة بييذ. ثب و يه س ي ضي ي Options دس ي Tools يظ ا اػش دي 2008 يض ي س ا يذ ي د ؼش ي خلبر سا ب ذ بييذ. اثشذا دس د ؼش ي Options ضي ي Device Tools سا ثبص وشد Devices سا و يه و يذ. دس د ؼش اي و ثبص ي ؿ د ؿجي ػبص سد ظش سب سا ا شخبة س ي Properties و يه بييذ. ثب و يه س ي Emulator Options د ؼش ي Emulator Properties ثبص خ ا ذ ؿذ. ؿى 5: س ظي خلبر ؿجي ػبص 14

اػشفبد ي ص ب اص ؿجي ػبص دػش ب ؿجي ػبص س ف شا اسد ثؼيبسي ديؾ ي آيذ و ثخ ا يذ اػشاي ش افضاس سب سا دس س ف شا آص بيؾ و يذ. ظال ش افضاس ؿ ب ى اػز ؿ بس يشي س ف يب اسػب دسيبفز ديب ه سا ا ؼب د ذ. ثشاي اي ساد ؿجي ػبص دػش ب ثؼيبس فيذ خ ا ذ ث د چشا و و ه ي و ذ سب ثذ يبص ث يه س ف شا الؼي س ب ي حب ز بي آ سا آص بيؾ بييذ. ؿجي ػبص س ف دس بسؽ 0.2 ثبالسش لبث دػششع اػز. ؿجي ػبص س ف شا سا اص ي Start/All Programs / Windows Mobile 6 SDK / Tools / Cellular Emulator اػشا بييذ. ديؾ اص آ و ؿجي ػبص دػش ب سا شا ثب ؿجي ػبص س ف شا اػشفبد بييذ ثبيذ د سر ػشيب ؿ بس 0 ؿجي ػبص دػش ب سا ث د سر ػشيب ي و دس اس هؼيز ثش ب ي ؿجي ػبص س ف شا بيؾ داد ي ؿ د شل بييذ. دس ؿى 3 ؿ ب د سر ػشيب ؿ بس 0 سا دس كفح ي خلبر ثش ب ي ؿجي ػبص ي ثي يذ و ثشاي اسسجبى ثب ثش ب ي ؿجي ػبص س ف شا ث د سر COM3 شل ؿذ اػز. دغ اص اسلب د سر ػشيب ثبيذ ؿجي ػبص دػش ب سا سا ا ذاصي ؼذد (reset) و يذ سب ؿجي ػبص س ف شا وبس و ذ. حب ي س ا يذ: ؿى 6: اسلب ؿجي ػبص س ف شا ث ؿجي ػبص دػش ب شفش ؿ بس س ف دسيبفز س بع س ف ي اػشفبد اص اسلب GPRS داخ ي ؿجي ػبص دػش ب ثشاي اسلب ث ؿجى اسػب دسيبفز ديب ه ا شخبة يىي اص د حب ز ؿجى 3G 2G دشداصؽ فش ب بي ػ ح دبيي د 15

دسػز وشد اسلب داخ ؿجي ػبص س ف شا دغ اص اسلب ؿجي ػبص دػش ب ث ؿجي ػبص س ف شا ؿ ب آص بيؾ بي ش ػي سا ثب آ ي س ا يذ ا ؼب د يذ. ؿ ب ثالفبك ي س ا يذ س بع س ف ي چ ي ديب ه اص / ث ؿجي ػبص دػش ب داؿش ثبؿيذ. ث ػال ي س ا يذ اسلب ؿجى ي GPRS اص شيك ؿجي ػبص دػش ب دسػز و يذ. ثشاي يبد يشي دسػز وشد اسلب ؿجى دس ؿجي ػبص دػش ب ث آدسع صيش شاػؼ و يذ: http://msdn.microsoft.com/en-us/library/bb158505.aspx دس ؿى 4 چ ذ اسلب ديشب و ثي ؿجي ػبص دػش ب ؿجي ػبص س ف شا فؼب ؼش ذ ي ثي يذ. دس دغ ص ي ي ؿجي ػبص دػش ب ثش ب ي اي شش ز اوؼذ سس سا ي ثي يذ و يه ة ػبيز سا ثبص وشد اػز. ا الػبسي و اص شيك اسلب GPRS سػيذ اػز جك آ چ دس اس هؼيز ؿجي ػبص دػش ب ي ثي يذ ث ؿ ب ب ي د ذ و GPRS شل ؿذ اػز. ؿجي ػبص س ف شا اسلب GPRS سا ثب اػشفبد اص اسلب ؿجى اي وب ذي سشي و س ي آ اػشا ؿذ اػز فشا ي و ذ. دس ؿى 4 ؿ ب ثش ب ي ذيش س بع ؿجي ػبص س ف شا سا ي ثي يذ و ثب ؿجي ػبص دػش ب س بع شفش اػز. دس ػؼج ش Phone Number ي س ا يذ ش ؿ بس س ف ي سا اسد بييذ دو ي Dial سا ثض يذ. ثالفبك ثؼذ اص اي وبس داخ ؿجي ػبص دػش ب ديغب س بع س دي call) (incoming سا خ ا يذ ديذ ب ؿ بس اي و ؿ ب اص داخ ؿجي ػبص س ف شا شفش ايذ بيؾ داد خ ا ذ ؿذ. ؿى 7: ؿجي ػبص دػش ب ؿجي ػبص س ف شا دس حب اػشا 16

اسػب دسيبفز ديب ه يه لبث يز ؿجي ػبص س ف شا اسػب / دسيبفز ديب ه ث / اص ؿجي ػبص دػش ب اػز. س ػ و ذي و كشف دسيبفز ديب ه اص شيك ؿجي ػبص دػش ب يؼز. ث حن دسيبفز ديب ه دغ اص ا الع داد ث وبسثش ديب ه دسيبفشي دس د ؿ ي inbox ؿجي ػبص دػش ب رخيش ي شدد. دس ػي حب ؿ ب يض ي س ا يذ ديب ه سا اص شيك ثش ب ي خ دسب دسيبفز و يذ. ي لبث يز ث ؿ ب ا ىب بر ش ػي ي د ذ ث خل ف ص ب ي و ؿ ب ثش ا يذ يه ثش ب سا و س ي يه دػش ب ي ذ ص ثبي اػشا ي ؿ د اص سا د س و شش و يذ. يب ثش ب ي ؿ ب ديب ه سا ث س ا حلبسي دسيبفز وشد $ث دا ا ذاخش # سا س د آ ث ػيؼش سا ؼذ د بيذ يب اثشذا آ سا ؼذ د ػذغ ث د ؿ ي inbox داخ دػش ب اسػب بيذ. ث يظ دس حب شي و ؿ ب اص ديب ه ثشاي و شش ثش ب سب اػشفبد ي و يذ ى اع ديب ه بي ثؼيبسي سا ث دػش ب اسػب بييذ. سشويت ؿجي ػبص دػش ب ؿجي ػبص س ف شا ثشاي چ ي حب ز بي سؼز ثش ب يچ ضي اي خ ا ذ داؿز ؿ ب ث ؿجى ي فيضيىي س ف شا يب ظال د ػي وبسر د ػذد ؿي دس بيز ضي ي ديب ه ث ادشاس س س ف شا يبص خ ا يذ داؿز. ث د ي حذ ديز اي مب ثشاي س هيح ؿجي ػبص دػش ب ب ث ػضئيبر ح ي دسيبفز ديب ه اص شيك ثش ب يؼي اؿبس ي و ي. ثشاي ا الػبر ثيشش ث شػغ MSDN آدسع صيش شاػؼ و يذ: http://msdn.microsoft.com/enus/library/microsoft.windowsmobile.pocketoutlook.messageinterception.messageinterceptor.aspx دس ؿى 5 ؿ ب يه ثش ب ي ثي يذ و ديب ه بيي سا و ثب ػجبسر Control Message آغبص ؿ ذ ػذا دسيبفز ي بيذ. ش ثبس و ديب ه س ػي دػش ب و دس حب اػشاي ثش ب ي SMS Capture اػز دسيبفز ي ؿ د اثشذا س ػي ثش ب ثشسػي ي ؿ د. ثش ب ش ديب ه سا دس يه ػؼج ش بيؾ ي د ذ خل ي Text يه و شش LinkLabel سا ثشاثش ثب ؿ بس س ف اسػب و ذ ي ديب ه لشاس ي د ذ. وبسثش خ ا ذ س ا ؼز ث ػبد ي ثب و يه س ي ؿ بس س ف بيؾ داد ؿذ ثب فشػش ذ ي ديب ه س بع س ف ي ث يشد. ؿى 8: دسيبفز ديب ه داخ يه ثش ب 17

و شش ؿجي ػبص دػش ب س ػي ثش ب ي ذيش ؿجي ػبص دػش ب يظ ا اػش دي 2008 اثضاسي ث ب ManagerDevice Emulator داسد و ثشاي و شش ؿجي ػبص بي دػش ب - و س ي وب ذي سش يضثب لت ؿذ اػز- ثشاي اػشاي اي ثش ب اص ي Tools ضي ي Device Emulator Manager سا ا شخبة و يذ. ثش ب ي ذيش ؿجي ػبص ف شػشي اص ؿجي ػبص بي دػش ب ب سا ث ك سر داس دسخشي ث ؿ ب ب ي د ذ ؿ ب ي س ا يذ ث ؿجي ػبص دػش ب سد ظش خ د شل ؿذ دػش ب ي سا حزف يب اهبف د دس بيز دػش ب سا خب ؽ و يذ. اهبف وشد ؿجي ػبص دػش ب ا ىب ثؼيبس فيذي اػز چ اي لبث يز سا فشا ي و ذ ؿجي ػبص دػش ب س ػي ثش ب ي (ActiveSync) دس ي ذ ص ايىغ دي Windows Mobile Device Center دس ي ذ ص يؼشب 7 ث وب ذي سش يضثب شل شدد. اي ثش ب ث حن اػشا ا ىب ي د ذ و ؿجي ػبص دػش ب حش يبر خ د سا ؼب ػبصي (Syncronize) و ذ ث اي شش ز شل شدد يب ث ػي ي فبي.CAB ثش ب اي سا اص وب ذي سش يضثب س ي ؿجي ػبص دػش ب لت و ذ. ىش : ؿ ب ثبيذ ثش ب ي ActiveSync يب Windows Mobile Device Center سا ثشاي اسلب ؿجي ػبص دػش ب ث وب ذي سش دس ػيؼش خ د لت وشد ثبؿيذ. دس ه اسلب اص شيك DMA $دػششػي ؼشمي ث حبفظ ; Access #Direct Memory سا يض ثبيذ فؼب بييذ. $س.ن # http://msdn.microsoft.com/en-us/library/aa188173.aspx ؿى 9: ذيش ؿجي ػبص دس حب اػشاي يه ؿجي ػبص دػش ب دس ؿى 6 ي ذ ص ثبي 1.6 سا ي ثي يذ و دس يه كفح ي شثؼي داخ ذيش ؿجي ػبص اػشا ؿذ اػز.دغ اص اػشاي ؿجي ػبص ثش ب ي ذيش ؿجي ػبص ثشاي اسلب ث آ ث وبس ي س د. ثشاي و شش ؿجي ػبص ب اص داخ ذيش ؿجي ػبص ثبيذ س ي ؿجي ػبص سد ظش سب اص يؼز بيؾ دسخشي و ي ؿجي ػبص بي لت ؿذ سا ب ي د ذ ساػز و يه و يذ ضي ي سد ظش سب سا اص ي Actions س ي ؿجي ػبص دس حب اػشا ا شخبة بييذ. ث حن اسلب ث ؿجي ػبص دػش ب خ ا يذ ديذ و ثش ب ي ActiveSync يب Windows Mobile Device Center ثبال ي آي ذ. 18

رخيش ي س ظي بر ؿجي ػبص دػش ب ثشاي اػشفبد بي ثؼذي ثب ثش ب ي ذيش ؿجي ػبص اي ا ىب ؼز و ؿ ب س ظي بر خبف سد ظشسب سا ثشاي ش ع ؿجي ػبص دػش ب رخيش بييذ. ظال يه ؿجي ػبص ايؼبد ي و يذ و ي ثب ثبسشي 50" وبسر حبفظ اي و س ي يه د ؿ ي خبف س ي وب ذي سش يضثب س ظي ؿذ اػز ثبال ثيبيذ. ثذي ظ س دس ثش ب ي ذيش ؿجي ػبص يىي اص ؿجي ػبص بي لت ؿذ سا ا شخبة دغ اص ساػز و يه س ي آ ضي ي Connect سا ثض يذ. ث ب اػشاي ؿجي ػبص ي س ا يذ س ظي بر آ سا سغييش د يذ س ػي ضي ي Save As اص ي ساػز و يه داخ ذيش ؿجي ػبص س ظي بر ػذيذ سا رخيش بييذ.اي س ظي بر رخيش ؿذ ث ك سر يه ب ؿجي ػبص ػذيذ داخ ذيش ؿجي ػبص ديذ خ ا ذ ؿذ. دس داس دسخشي My Device Emulators داخ ذيش ؿجي ػبص ي س ا يذ اي ؿجي ػبص دػش ب ب سا ثجي يذ. ثب اي وبس كشفب يه فبي حب ي س ظي بر ثش ج بي ع خبف ؿجي ػبص سد ظش ؿ ب ايؼبد ي ؿ د ثب ش ثبس ايؼبد يه ؿجي ػبص ثب س ظي بر ػذيذ حبفظ ي چ ذا ي ثشاي آ س ي بسد ديؼه ؿ ب اخشلبف ي يبثذ. ؿى 10: س ظي بر ؿجي ػبص دػش ب دس ؿى 7 اي اص س ظي بر ؿجي ػبص دػش ب سا ي ثي يذ و يه وبسر حبفظ دس ؼيش C:\Users\Public\Documents س ي وب ذي سش يضثب ثشاي آ سؼشيف ؿذ اػز حب ز ثبسشي 50" سا يض ث ب اػشا ؿجي ػبصي وشد اػز. ش ثبس و اي ؿجي ػبص خبف اػشا ؿ د ي س ظي بر اص اثشذا ثشلشاس خ ا ذ ث د. 19

اػشفبد اص ؿجي ػبص دػش ب ثشاي آص بيؾ س ظي بر ا يشي خش ف ب ي و اص ؿجي ػبص دػش ب ثشاي آص بيؾ ثش ب بي ي ذ ص ثبي سب اػشفبد ي و يذ ثب فشم اسلب يظ ا اػش دي ث ؿجي ػبص دػش ب يچ ب ؼي ثشاي لت اػشاي آ ب خ ا يذ داؿز. ؿجي ػبص ب ذ يه ي ذ ص ثبي وب ثذ حذ ديز ا يشي ثشاي ؿ ب وبس خ ا ذ وشد. ثؼش ث س ظي بر ا يشي س ي دػش ب الؼي ي ذ ص ثبي ى اػز ؿ ب ى اػز حذ ديز بي ا يشي ثشاي دػششػي ث آ داؿش ثبؿيذ. ثب اػشفبد اص يظ ا اػش دي 2008 خ ا يذ س ا ؼز س ظي بر ا يشي سد ظشسب سا س ي ؿجي ػبص اػ ب بييذ. يى س هيح اي و چ س ظي بر ا يشي سا ي س ا يذ دس ي ذ ص ثبي اػ ب و يذ خبسع اص ح ك ي اي مب اػز. اص شيك ادسع صيش دس ػبيز يىش ػبفز ي س ا يذ ث سفلي س ظي بر ا يشي ي ذ ص ثبي سا ثجي يذ: http://msdn.microsoft.com/en-us/library/bb416353.aspx $ث ص دي حش يبر اي كفح سشػ خ ا ذ ؿذ. ششػ # اػ ب س ظي بر ا يشي خبف دس ؿجي ػبص دػش ب ػشساػز آػب اػز. ثؼذ اص اػشاي يه ؿجي ػبص دػش ب ي س ا يذ س ظي بر ا يشي فؼ ي آ سا اػشخشاع بييذ. ثذي ظ س اص ي Tools يظ ا اػش دي 2008 ضي ي Device Security Manager سا ا شخبة بييذ. دغ اص اي س ظي بر ا يشي ديؾ فشم حيي يظ ا اػش دي 2008 سا خ ا يذ ديذ. س ػي Device Security Manager ي س ا يذ س ظي بر ا يشي ؿجي ػبص دػش ب دس حب اػشا چ ي سأييذي بي لت ؿذ سا ثجي يذ. ىش : اص ثش ب ي Device Security Manager ػ ز اػشخشاع ثشسػي س ظي بر ا يشي دػش ب الؼي $فيضيىي# ي ذ ص ثبي ي س ا يذ اػشفبد و يذ. 20

ثشاي اػ ب س ظي بر ا يشي ػذيذ دس يه ؿجي ػبص دػش ب شاح صيش سا ا ؼب د يذ: 1. اص ثش ي Device Security Manager ضي ي Security Configuration سا ثض يذ 2. اص ف شػز Security configuration س ظي بر سد ظشسب سا ا شخبة و يذ. 3. س ي ثش ي Deploy to Device داخ Device Security Manager و يه و يذ سب س ظي بر ا يشي سد ظشسب س ي ؿجي ػبص اػ ب ؿ د. ؿى 11: ذيش ا يز دػش ب دس حب اػشا اص داخ ؿجي ػبص دػش ب 21

خ دوبس ػبصي ذيش ؿجي ػبص وبسآيي ذيش ؿجي ػبص دػش ب ث ك سر يه ػشي اؿيبي (Component Object Model) COM اػز و ي س ا ي ثب آ ب ثش ب بي دػىشبح ي ذ ص ثشاي و شش ذيش ؿجي ػبص ث يؼي. ث ػ ا ظ ؿ ب ي س ا يذ ث صثب #C ثش ب اي ث يؼيذ و ث يه ؿجي ػبص خبف شل ؿذ آ سا اػشا بيذ. ثشاي ايؼبد يه ثش ب ي دػىشبح ي ذ ص Apllication) (Desktop و اص ا ىب بر ذيش ؿجي ػبص اػشفبد بيذ شاح صيش سا ا ؼب د يذ: دس حيي يظ ا اػش دي 2008 يه ثش ب ي Visual #C Windows application ايؼبد بييذ. يه شػغ اػ ج ي Microsoft.DeviceEmulatorManager.Interop.9.0 سا ث دش ط اهبف و يذ. ىش : حشي ا ش بسؽ ػذيذسشي اص ؿجي ػبص دػش ب سا اػشفبد بييذ الص اػز و فبي اػ ج ي سد يبص دس ؼيش \Program Files\Microsoft Device Emulator\1.0\Microsoft.DeviceEmulatorManager.Interop.9.0.dll ػ د ثبؿذ چشا و بسؽ ػذيذسش ؿجي ػبص دػش ب دس اك يه اسسمب اص بسؽ ديي آ اػز. ثشاي بيؾ س ب ي ا الػبر شث ى ث ؿجي ػبص بي رخيش ؿذ دس وب ذي سش خ د ث ك سر يه داس دسخشي (TreeView Control) اص ل ؼ وذ صيش دس ثخؾ ذيش س يذاد % IDeviceEmulatorManager اػشفبد ي و ذ. Load فش اك ي ثش ب سب اػشفبد بييذ. اي وذ اص اي ششفيغ.1.2.3 %$ س.ن # 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; 22

ث س ؽ بث ي س ا يذ ا الػبر س ب ي ؿجي ػبص بي لت ؿذ سا ثب اػشفبد ح م ي while اي ششفيغ %% IEnumManagerSDKs ث دػز آ سيذ..4 %%$ س.ن # http://msdn.microsoft.com/en-us/library/bb531190.aspx دغ اص ثبصيبثي ا الػبر س ب ي خب اد ي ؿجي ػبص ب ثب س ؽ بث خ ا يذ س ا ؼز ا الػبر سه سه ؿجي ػبص بي شؼ ك ث ش SDK سا دس ح م ي while دي شي ثب اػشفبد اص اي ششفيغ %%% IEnumVMIDs ث دػز آ سيذ..5 %%%$ س.ن # http://msdn.microsoft.com/en-us/library/bb531183.aspx دغ اص دػششػي ث يه ؿجي ػبص خبف ثب اػشفبد اص س ا ب ي س ا يذ آ سا و شش بييذ. ظال ثب فشاخ ا ي س ا بيConnect %%%%. IDeviceEmulatorManagerVMID دس اي ششفيغ Shutdown Uncradle Cradle.6 %%%%$ س.ن # http://msdn.microsoft.com/en-us/library/bb531187.aspx 23

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

مذ س ػؼ ي ش افضاس ي ذ ص ثبي ؿجب ز صيبدي ث س ػؼ ي ش افضاس دس دػىشبح داسد ث يظ ص ب ي و يىي اص د صثب يظ ا ثيؼيه يب يژظ ا ػي ؿبسح دار ز سا اػشفبد ي و يذ. ؿ ب ب اثضاس بي س ػؼ ي ثش ب بي ي ذ ص دػىشبح سا ثشاي ي ذ ص ثبي ژ اػژشفبد ژي و يژذ يى سفب ر بيي يض ثي اي د حيي ؼز. دػش ب بي ي ذ ص ثبي كفح ي بيؾ و چه سش بثغ حذ د سش داس ذ چ ژي لبثژ ح ث د اغ ت ثبسشي اػشفبد ي و ذ. اي مب ا الػبسي سا دس ثبس ي چ ي ش افضاس بي ي ذ ص فش ثشاي دػش ب بي ي ذ ص ثبي ث ؿ ب خ ا ژذ داد دس بيژز ؿژ ب يژبد ژي يشيذ و چ س ش افضاس ب سا ثشاي اػشفبد اص ا ىب بر دػش ب بي ي ذ ص ثبي س ػؼ د يذ دس ػي حب ح اع سب ث ؿبسط ثبسشي ثبؿژذ كفح بيؾ ثش ب سب ثذ س ػ ث ػ ز كفح ي بيؾ دػش ب دسػز ػ و ذ. دػش ب بي ي ذ ص ثبي ذ بي ش ػي داس ذ دػش ب بي ي ذ ص ثبي دس ثبصاس ثؼيبس ش ع ؼش ذ ث ػال بسؽ بي خش في اص ي ذ ص ثبي سا اػشفبد ي و ذ. دس اي مب ژ ژب ثژب بسؽ 6 ي ذ ص ثبي $ ش د يشايؾ اػشب ذاسد حشف اي# وبس خ ا ي وشد. دػش ب بي ي ذ ص ثبي اػشب ذاسد اي دػش ب ب اغ ت ث ب اػ بسر ف $س ف ؿ ذ# دس ثبصاس ؼش ذ. ي اي دػش ب ب ا ىب ژبر س فژ سا داس ژذ ژيى كژفح ي ؼژي Screen) (Touch ذاس ذ. ؼ ال ثشاي وبس ثب آ ب ث يه دػز يبص داسيذ operation).(one-hand ثشاي س ػؼ ش افضاس بيي وژ ثژب ايژ دػش ب ب وبس و ذ ؿ ب اثضاس س ػؼ ي ي ذ ص ثبي 6 اػشب ذاسد ) SDK (Windows Mobile 6 Standard سا شا ثژب يژظ ا اػژش دي 2005 يب ثبالسش يبص داسيذ. دػش ب بي ي ذ ص ثبي 6 حشف اي اي دػش ب ب ػ ذسب ث ب دبوز دي ػي PC=PPC) (Pocket ؿ بخش ي ؿ ذ. اي دػش ب ب ثؼوب ا ىب بر س ف سا يض داس ذ ژي ژ ي آ ب ث كفح ي ؼي ؼ ض ؼش ذ. ؼ ال ثشاي وبس ثب اي دػش ب ب ث د دػز شا ثب يه و شش ؼي يبص داسيذ. (. ثژشاي س ػژؼ ژش افضاس بيي و ثب اي دػش ب ب وبس و ذ ؿ ب اثضاس س ػؼ ي ي ژذ ص ثبيژ 6 حشفژ اي ) SDK (Windows Mobile 6 Professional سا شا ثب يظ ا اػش دي 2005 يب ثبالسش يبص داسيذ. بسر بيي و س ػؼ د ذ ثبيذ داؿش ثبؿذ س ؽ بي س ػؼ ي ش افضاس بي ي ذ ص ثبي دػىشبح دس حيي يظ ا اػش دي 2008 سفب ر چ ذا ي ثب ذاس ذ. دغ اص س د ثژ حژيي يظ ا اػش دي 2008 ؿ ب سل ي ي يشيذ و چ ع دش ط اي سا دس چ دالسفش ي آغبص و يذ. ػذغ يظ ا اػش دي يژه دژش ط ي ا يژ ثژب يه فش خب ي بيؾ ي د ذ و دس آ فش اػي وبسثش سا شاحي و يذ. ػ ذ سشي سفب ر ث ب س ػؼ ي ش افضاس ي ژذ ص ثبيژ كژفح بيؾ و چه دس ػي حب ش ع سد اػشفبد دس دػش ب ب اػز. سفب ر ثؼذي سا ص ب ي ش ػ ي ؿ يذ و و ثخ ا يذ و شش ژبي اػژي وبسثش سا اص ػؼج اثضاس يظ ا اػش دي 2008 ثىيذ س ي فش لشاس د يذ. سؼذاد حذ دي و شش دس مبيؼ ثب دالسفش دػىشبح دس دػژششع ؿژ ب خ ا ذ ث د. اي حذ ديز دس يشايؾ اػشب ذاسد ثيشش اص يشايؾ حشف اي ي ذ ص ثبي اػز. اص آ ػب و دػش ب بي ي ذ ص ثبي اػژشب ذاسد كفح ي ؼي ذاس ذ ثشخي و شش بي يشايؾ حشف اي ي ذ ص ثبي دس يشايؾ اػشب ذاسد وبسآيي ذاس ذ. ايؼبد اػي وبسثشي ثشاي ثش ب يؼ ي ب ويذ و شش ب اص ػؼج اثضاس يظ ا اػش دي س ب وشد لشاس داد آ س ي يه فش يب داخ يه و شش وب شي ش (Container) - و ثشاي ش ث ذي و شش ب س ي فش لشاس داد ايذ- اص شفي ي س ا يذ چ ذ فش دس ثش ب سب داؿش ثبؿژيذ خ دسب و شش ي دسػز و يذ و اص يه و شش ػ د شك ؿذ ثبؿذ يب اي و اص اثشذا يه و شش سا وب ال خ دسب ايؼبد و يژذ. ػژال ثژش ايژ و شش بي ػبد سؼذادي د ؼش ي ىب ؼز و ؿ ب سا و ه خ ا ذ وشد سب ثش ب سب ث ثش ب بي ػ ي اػژشب ذاسد ي ژذ ص ثبيژ ؿجي ثبؿذ. 25

شاحي يه اػي وبسثش ػبد دس ي ذ ص ثبي 6 حشف اي يه دش ط ي ػذيذ دس حيي يظ ا اػش دي 2008 ايؼبد و يذ. ع دش ط ثبيذ Smart Device project دس يىي اص صثب ژبي #C يژب يژظ ا ثيؼيه دار ز ثبؿذ. دالسفش ملذ سا Windows Mobile 6 Professional SDK ا شخبة بييذ. يظ ا اػش دي 2008 يه فش خب ي ثب اثؼبد ش بػت ثب دالسفش ملذ ث ؿ ب بيؾ خ ا ذ داد و ث ؿى يه دػش ب ي ذ ص ثبي اػز سب ث حذ ا ىب ؿجي سش ثبؿذ ثژ آ چژ دس الؼيز اػشفبد ي شدد. ثب اػشفبد اص ػؼج اثضاس Device Controls $ؿى #1 ي س ا يذ و شش بي سد ظش سب سا س ي فش لشاس د يذ. ؿى 12: يظ ا اػش دي 2008 دس بي شاحي فش 26

خت! ثيىبس ب يذ و شش بي خش في سا و ي س ا يذ دس شاحي اػي وبسثش اػشفبد و يذ ب ي ثي ذاصيذ. ا ش ثشخي اص آ ب ثژ چژ سژب آؿ ب يؼش ذ ث ششي وبس اي اػز و آ ب س ي فش لشاس د يذ خل بي آ ب وبسوشد ش وذا سا ب ؼژ و يژذ كژذ ا جشژ سا ژبي آ الي سا ث يبد داؿش ثبؿيذ. يىي اص سشي چيض بيي و ث ب شاحي اػي وبسثش ث چ خ ا ذ آ ذ ح ي وبس شاح اػي وژبسثش اػز. دلز و يذ و چ س و ه سب خ ا ذ وشد ح لشاس يشي و شش ب سا سشاص و يذ و ششي فبك ي ى سا ثشاي آ ب دس ظش ث يشيژذ. خ ى سا ب Lines) (Guide و ه صيبدي خ ا ذ وشد سب دس ا ذن ص ب ي اػي وبسثش سا خي ي خ ؽ دػز شاحي و يژذ. دس ؿژى 2 لژشاس يشي دو بي button2 button1 سا دس د حب ز افمي ػ دي ؼجز ث ي ثي يذ و ث و ه خ ى ثبسيه آثي س ج ژبي آ ب ؼجز ث سشاص ؿذ ا ذ. ؿى 13: خ ى سا ب ث ششي دػشيبس ؿ ب دس سشويت ث ذي اػي وبسثش ايؼبد ش افضاسي و ثش ا ذ ثب ػ ز بي خش ف كفح بيؾ ػبص بس ثبؿذ س ع صيبد دػش ب ب ذ بي آ ب ثبػض ؿذ اػز و س ػؼ ي يه ش افضاس و ثش ا ذ دس سؼذاد ش ػي دػش ب وبس و ذ ا ذوي ديچيذ ثبؿذ. يظ ا اػش دي ث ؿ ب ا ىب ث ذوي طبثز وشد و شش بي اػي وبسثش سا فشا ي و ذ. ثب اثضاس س ػؼ ي ي ذ ص ثبي 6 ي س ا يذ ا الػبسي دس ثبس ي لبث يز بي دػش ب بسؽ بي ػيؼش ػب دػش ب ث دػز آ سيذ. يى دس اي مب ب س ي چ ذ سد خبف حذ د وبس ي و ي : س ػ ث يضا بثغ آصاد ػيؼش ثبسشي اػشا دس دػش ب بي ي ذ ص ثبي 6 بيؾ دسػز دس ش د حب ز افمي ػ دي چ ي دػش ب بيي ثب كفح بيؾ شثغ ؿى ثب ػ دي و $دس ص ب بسؽ اي مب # دػش ب بي ي ذ ص ثبي اػشب ذاسد ػ ز بي خش ف كفح ي بيؾ سا دشيجب ي ي و ذ ي ى اػز دس آي ذ اي ا ىب فشا ؿ د. دس ثشخي اسد بيؾ ا الػبر دس كفح ي افمي ثبػض ساحشي ثيشش وبسثش خ ا ذ ؿذ. يظ ا اػش دي ث ب شاحي اػي وبسثش يه ثش ب ي ي ذ ص فش و ه سب خ ا ذ وشد سب و شش ب دس يه لؼيز خبف طبثز وشد يب ث ذوي و يذ. ث ذوي يب طبثز وشد و شش ب ثشاي ئ ؿذ اص اي و يه فش دس ش د حب ز افمي ػ دي ث دسػشي بيؾ داد خ ا ذ ؿذ ي س ا يذ و شش ب سا دس ح خبكي داخ يه و شش بف ق (Parent) ب ذ فش يب دب Control) (Panel طبثز يب ث ذوي بييذ. ىش ي سفب ر ثي ث ذوي (Dock) سظجيز (Anchor) و شش ب اػز. ص ب ي و ؿ ب يه و شش سا ؼجز ث يه يب چ ذ ج ي يه وب شي ش طبثز ي و يذ ػت خ ا ذ ؿذ و خشلبر ؼت ث ج بي طبثز ؿذ ثب سغييش ػ ز بيؾ طبثز ث ب ذ. ب ث ذوي يه و شش ؿ ب ج اي اص وب شي شش سا و و شش ثبيذ دس آ لؼيز لشاس ث يشد سؼيي ي و يذ. ا ش و شش سا ث ش چ بس ج ث ذوي و يذ دس اي ك سر آ و شش س ب ػ ح و شش بف لؾ $فش يب وب شي ش# سا خ ا ذ د ؿب ذ. 27

ثشاي ف يذ ث شش سفب ر ث ذوي سظجيز و شش ب وبسوشد آ ب دس ػ ز بي خش ف كفح ي بيؾ يه فش ػبد ايؼبد ي و ي سؼذادي و شش ثشچؼت سا (Label) - و ش وذا س دغ ص ي ي شفب ر ثب ثمي داؿش ثبؿذ س ي آ لشاس ي د ي. ا جش اي اػي وبسثشي ؿبيذ ث ظش ثي لشف ثبؿذ يى سشي اػشفبد ي آ دس حب حبهش ي ف يذ ث ذوي سظجيز و شش ب سغييش هؼيز آ ب ث ب سغييش ػ ز ثي افمي ػ دي اػز. $ؿى #3 ؿى 14: ي ذ ص ثبي 6 حشف اي دس حب ز ػ دي و شش ب طبثز ؿذ ا ذ ث ذوي ػ ثشچؼت ثباليي س ي يه دب لشاس شفش ا ذ د ثشچؼت دبيي ي س ي خ د فش. ثشاي س ب ي و شش بيي وژ س ي فژش لژشاس ژي د يژذ ثبيژذ خل بي سظجيز آ سا حزف و يذ چشا و يظ ا اػش دي ث ك سر ديؾ فشم ي و شش ب سا ؼجز ثژ جژ ژبي ثژبال ػژ ز چژخ وب شي ش ؿب طبثز ي و ذ. اػي وبسثش دس حب ز ػ دي خ ة ث ظش ي آيذ ي ث حن سغييش ػ ز اص ػ دي ث افمي ژىالسي دژيؾ ژي آيذ. وبفي اػز ث ؿى 4 س ػ و يذ. ؿى 15: ي ذ ص ثبي 6 حشف اي دس حب ز افمي و شش ب طبثز ؿذ ا ذ ث ذوي ثالفبك خ ا يذ ديذ و س ب ي و شش بي ثشچؼت و دس بيؾ ػ دي لبث ديذ ث د ذ دس بيؾ افمي ديذ ي ؿ ذ. ثخي اص دژب ي وژ ؿب ثشچؼت ثباليي اػز اص كفح ثيش سفش اػز. ث ي حب ز ثشچؼت دبيي ي وب ال ح ؿژذ اػژز ػژ ز ساػژز چژخ كژفح ي بيؾ دس حب ز ػ دي خب ي ب ذ ا ذ. اي يؼ ي حب ز افمي كشفب ثخي اص كفح بيؾ حب ز ػ دي اػي وبسثش سا ب ي د ذ. ثشاي سفغ اي ى ثذ يبص ث وذ يؼي وبفي اػز اص ث ذوي سظجيژز و ژش ژب ثژ دسػژشي اػژشفبد بييژذ. ثژب اػژشفبد اص خلژ ي Anchor ي س ا يذ يه و شش سا ؼجز ث يه يب چ ذ ج ي كفح ي بيؾ طبثز داسيذ. يؼ ي خشلبر آ ؼژجز ثژ جژ ژبي سؼيژي ؿذ دس ش حب شي اص ػ ز بيؾ طبثز ي ب ذ. ثب اػشفبد اص خل ي Dock يض سؼيي ي و يذ و يه و شش چ ؼجز ثژ جژ ژبي و شش بف ق خ دؽ سشاص ؿذ يب ثخي اص كفح ي بيؾ سا دش و ذ. ثب ث ذوي چ ذ و شش ث يه ج و شش بف ق ؿب ثبػژض خ ا ژذ ؿژذ 28

و شش بي سد ظش ث ك سر دز ػش لشاس يش ذ. دس اي ظب ػ ثشچؼت ثباليي داخ يه دب لشاس شفش ا ذ. ثبالسشي ثشچؼت ث ذوي ذ اػز ؼجز ث ج بي چخ ساػز ثبالي دب طبثز ؿذ اػز. ث ػجبسسي ي س ا فز و ث ػ ز ثبالي فش ث ذوي ؿژذ اػژز. دس ش د حب ز ػ دي افمي فبك ي ثشچؼت ثب ج بي ثبال چخ ساػز سغييش خ ا ذ وشد. ثژ ژ س ژخق دس حب ژز ژبيؾ افمژي ا ژذاص ثشچؼت ثضسي سش ي ؿ د سب فبك بي زو س سغييش ى ذ. د ثش چؼت دي ش داخ دب و س ي بيؾ داد ي ؿ ذ- ثژ ػژ ز دژبيي دب ث ذوي ؿذ ا ذ. ؿ بس ي سشسيت order) (tab خق ي و ذ و وذا يه اص ثشچؼت ب بيؾ داد ؿژ ذ. ا ژش ػ ژز ژبيؾ سا ثژ افمي سغييش د يذ ي و شش بي س ي فش چ ب لبث ب ذ خ ا ذ ث د ي ػ ح فش س ػي و شش ب دش خ ا ذ ؿذ. $ؿى #5 ؿى 16: ي ذ ص ثبي 6 حشف اي دس حب ز افمي ثب و شش بي طبثز ث ذوي ؿذ اػي وبسثشي و دس ؿى 5 ي ثي يذ ث شاست ث شش اص ؿى 4 اػز چ و شش ب ثشاي بيؾ افمي سغييش ا ذاص داد ؿذ ا ذ. ثشاي اي و دػز سب ثيبيذ چ س ثب اػشفبد اص سظجيز يب ث ذوي و شش ب سا ػب بيي و يذ وبفي اػز و ي ثيشش لز زاؿش حب ز بي خش ف سا آص بيؾ و يذ. 29

دس حيي شاحي يظ ا اػش دي 2008 ث ساحشي ش د حب ز ػ دي افمي سا ي س ا يذ آص بيؾ و يذ. س ي ؿى دػش ب ساػز و يه ضي ي Rotate Left يب Rotate Right سا ا شخبة بييذ. $ؿى #6 سا دي ش آ اػز و فش سا ا شخبة $و يه# وشد دو بي س ي اس اثضاس سا ثشاي سغييش ػ ز بيؾ اػشفبد و يذ. شاحي ثش ب اي و س ي دػش ب بي خش ف وبس و ذ ؿى 17: سغييش ػ ز بيؾ دس حب ز شاحي ث ب ايؼبد ش افضاسي و س ي يىي اص دالسفش بي ملذ اثضاس س ػؼ ي ي ذ ص ثبي 6 $اػ اص اػشب ذاسد يب حشف اي# وبس و ژذ ژي س ا يژذ دالسفش فؼ ي سا ث دالسفش ملذ دس اثضاس س ػؼ ي دي شي سغييش د يذ. دس اي حب ز ش افضاس ث دالسفش دي شي سجژذي ژي ؿژ د يؼ ژي يژظ ا اػش دي 2008 ثش ب ي ؿ ب سا سغييش ي د ذ. ا ش ثخ ا يذ ثش ب اي سا و دس ي ذ ص ثبي 6 حشف اي ػبخش ايذ ثژ دالسفژش دي ژشي سجژذي و يذ ىالسي سا ديؾ س ي خ د خ ا يذ داؿز. اص آ ػب و يشايؾ اػشب ذاسد ي ذ ص ثبي 6 ثژ ؼژجز يژشايؾ حشفژ اي آ و شژش ژبي و ششي سا دس اػي وبسثش دشيجب ي ي و ذ و شش بي دشيجب ي ذ سا ثبيذ ث و شش بيي سغييش د يذ و دس دالسفش ػذيژذ وب ذبيژ اػژشا ؿ ذ. يظ ا اػش دي 2008 وبس سجذي سا ث ساحشي ا ؼب خ ا ذ داد. اص ديذ ب س ػؼ ي ش افضاس ايذ ي ثشسش آ اػز و ثشاي ػژبد سژش ؿژذ ثحض ػبص بسي دالسفش ب الي ي % ثيضي غ الػيه سا اص الي ي اػي وبسثش ػذا و ي. و شش بي اػي وبسثش وژ دس دالسفژش ػذيژذ دژشيجب ي ي ؿ ذ س ػي يظ ا اػش دي 2008 ػال ز زاسي ي ؿ ذ دس ػي حب يظ ا اػش دي 2008 ث ؿ ب دي بد ي د ذ و و شش ژبي زو س سا ث ضديه سشي حب ز جك ثب دالسفش ػذيذ سجذي و يذ. ا ش خ اػشيذ و دش ط سب سا ث دالسفژش ملژذ دي ژشي سجژذي و يژذ ژي س ا يذ اص ا ىب بر اسص ثشي فش ب Inheritance) (Visual Form اػشفبد و يذ سب ثب يه دفؼ وذ يؼي ثش ا يذ ثش ب سب سا دس دالسفژش ژبي خش ف اػشا بييذ. % Business Logic اي اك الح سا سشػ ىشد. ا ش ا ف ؼشيذ سلذيك ي و يذ و جبيذ اي چ ي ػجبسسي سا سشػ وشد. ا ش اي اك الح ثشاي سب آؿژ ب يؼژز»ث يش ذ بي خ د دػز ض يذ!«وبفي اػز ب جي دس ثبس ي ؼ بسي الي ث الي ي ش افضاس سا ب ؼ و يذ. $ ششػ # 30

اسص ثشي فش ب يظ ا اػش دي 2008 ا ىب بر وب شاحي سا دس ص ب اسص ثشي يه فش اص فش دي ش ث ؿ ب ي د ذ. ثشاي ف يذ ث شش ثب يه فش دبي ؿژش ع ي و ي و م ي آغبصي خ ا ذ ث د ثشاي س يذ ش افضاسي و دس دالسفش بي خش ف ي ذ ص ثبي وبس و ذ. ثب ػ د اي و ى اػز ايژ وبس دس ب ا غيش هش سي ث چ ثيبيذ يى سؼشث ي ايؼبد يه فبي وشبثخب اي والع library) (class - و فش دبي سا ايؼبد ي و ژذ- ثؼيبس اسصؽ ذ خ ا ذ ث د. اي ه ع ص ب ي و ؿ ب يبد ث ي شيذ وذ ا و ش ش ب د س ف ش ب ي ا س ص ثژ ش ي ؿژذ لبثژ سغ ي يژ ش ؼژ ش ذ وژذ ا ؿژب يؼش ذ ا يز ثيششي داسد. ثشاي اي و ثش ا يذ و شش ب يب وبسوشد آ ب سا سغييش د يذ ثبيذ خلژ ي Access Modifier و شژش ژ سد ظش سا ث مذاسي غيش اص Private سغييش د يذ. دس ؿى 7 يه فش دبي ي ثي يذ و ث ػ ا شح ي آغبص ثش ب سب اػشفبد ي ؿ د. ؿى 18: فش دبي ي ثش ب ثشاي دػش ب ي ذ ص ثبي اػشب ذاسد فش دبي حب ي يه و شش يشاي ش (Edit) - و ي كفح سا دش وشد - يه اػز. اي ثش ب يه يشاي ش ش ػبد اػز. اي ثش ب فبي ش ي ايؼبد ي و ذ حش اي فبي ش ي ػ د سا سغييش ي د ذ چ ي ا ىب سغييش ب يب حزف فبي ش ي سا فشا ي و ذ. ثب اي وژ فبي بي ايؼبد ؿذ س ػي اي ثش ب ب فبي بي ش ي ػبدي ؼش ذ يى ثشاي ذيشيز ساحز آ ب في شش وژشد ؿژب دؼژ ذ فبيژ سا خل ف اي ثش ب لشاس داد اي. فش دبي ثشاي ي ذ ص ثبي اػشب ذاسد شاحي ؿذ اػز. د ي ؾ س ؿژ اػژز. ي ژذ ص ثبيژ اػژشب ذاسد ؼجز ث حشف اي و شش بي و ششي داسد. ثشاي ذيشيز فبي ب د فش دي ش دس ظش شفش اي و يىي ف شػز فبي بي ػژ د سا ژب د ذ دي شي ثشاي سغييش ب يب حزف آ ب اػشفبد ؿ د. اص آ ػب و ي ذ ص ثبي اػشب ذاسد كفح ي ؼژي سا دژشيجب ي ژي و ژذ س ژب ي ػ يبر فبي ب اص شيك ضي بي ا ؼب ي ؿ ذ. دس اي مب ب س هيحبر شث ى ث يشاي ش ش ي سا خ ا ي فژز س ي ايؼژبد ژش افضاسي و س ي ا اع خش ف دػش ب ب وبس و ذ ش شوض ي ؿ ي. ش چ ذ و ثش ب ي ژ ي Mobile Edit ثژشاي دا ژ د د دػژز ژب ؼز. دس ؿى 8 ؿ ب فش اك ي سا دس حب اػشا س ي ي ذ ص ثبي 6 حشف اي ي ثي يذ. ثب ػ د سفب ر ظب شي اؽ ثب آ چ دس ؿى 7 ديذ ايذ ي اي فش اص ب فش اك ي و دس ؿى 7 ديذيذ شك ؿذ اػز. فمي يه و شش خل ف ي ذ ص ثبي 6 حشف اي ث آ اهژبف ؿژذ اػژز. يؼ ي يه Document List ب س و اص ب ؾ ديذا اػز ثشاي بيؾ ف شػز فبي ب ث وبس ي س د. ثب اي وژ فژش اكژ ي حژب ي يژه 31

و شش يشاي ش ش اػز ي ث ب شاحي آ سا ي ثي يذ چ و شش»ف شػژز فبيژ ژب«List) (Document س ي آ لژشاس شفشژ اػز. داخ ثش ب ثب وذ يؼي وبسي ي و ي و و شش»ف شػز فبي ب«دس ص ب ي و الص يؼز ب داد د. و شش بيي وژ ثخژي اص فش دبي ؼش ذ دس فش شك ؿذ ث اسص ي سػ ذ. و شش بيي سا و اص شيك اسص ثشي دس فش ػذيذ لشاس شفش ا ذ ثب يه ػال ز ف ؾ دس ؿ ي ثبال ػ ز چخ ؿب $ ب ذ و شش # خق ي ؿ ذ. ؿى 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()); 32

ثؼش ث ع دػش ب يىي اص د فش MainFormNoTouch يب MainFormTouch سا ث ػ ا فش اك ي ثش ب ژ ژب اػژشفبد ژي و ژي. ضيز اكالي اسص ثشي فش اي اػز و ب ا ىب بر فش اك ي (Main) سا دس ي ذ ص ثبي حشف اي د ثبس اػشفبد ژي و ژي. ژظال ا ژش وژبسثش ضي ي New سا دس و يه و ذ كشف ظش اص ع دػش ب ي و ثش ب دس آ اػشا ي ؿژ د ژذيش س يژذادي handler) (event وژ ثژشاي ضي ي New ي دس كفح ي 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 لژ شاس داسد وژ اليژژ ي اػژژي وژبسثش سا ثژ ژ س وب ژ اص اليژ ي اد يىيژژ الػيژژه Logic) (Application ػذا ي و ذ. ا ش ثش ب دس دػش ب ثب ػيؼش ػب ي ذ ص ثبي حشف اي اػشا ؿ د يىي اص لبث يز بيي وژ ثبيژذ دس اثشذاي اػشاي ثش ب غيش فؼب ؿ د و شش»ف شػز فبي ب«اػز. اي وبس سا ثب اث ب ذيش س يذاد menunew_click بثك ل ؼژ وژذ صيژش ا ؼب ي د ي : protected override void menunew_click(object sender, EventArgs e) base.menunew_click(sender, e); documentlist.visible = false; MinimizeBox = false; ص ب ي و وبسثش دس ي ذ ص ثبي حشف اي ضي ي New سا ا شخبة ي بيذ اثشذا وذ ؿش ؿذ دس فش دبي اػشا ي ؿ د ػذغ د خژي وژذ و فمي دس ي ذ ص حشف اي دس دػششع ؼش ذ اػشا ي ؿ ذ. اي دػش س ب ث سشسيت ثشاي خفي وشد و شش»ف شػز فبي ژب«ثژشاي ديژذ ؿذ و شش»ػؼج ش «بيؾ يه دو ي OK دس اس ػ ا فش اػشا ي ؿ ذ. ثشاي اث ب ذيش س يذاد menunew_click ثبيذ آ سا ث س دػژشي ثژ فبيژ MainFormTouch.cs اهژبف بييژذ. ا ژش س ي ضي ژ ي New دس حيي شاحي فش داث و يه و يذ يظ ا اػش دي يه ذيش س يذاد ػذيذ ث ژب menunew_click_1 ايؼژبد ژي و ژذ وژ دس ص ب اػشا دغ اص فشاخ ا ي ذيش س يذاد menunew_click اك ي دس فش دبي فشاخ ا ي خ ا ذ ؿذ. 33

س ػ ث بثغ ػيؼش كشف ظش اص ذ دػش ب ش ص ب و فش اك ي ثش ب خفي ؿ د $دس دغ ص ي لشاس يشد# يه س يذاد فشاخ ا ي ي ؿ د. ث س ژبث ص ژب ي و فش اك ي ثش ب ؼذد فؼب ي ؿ د دس ديؾ ص ي ي ذ ص لشاس ي يشد س يذاد دي شي فشاخ ا ي ي ؿ د. اي س يذاد ب سا ي س ا ي ثشاي آصاد ػبصي بثغ ػيؼش ب ي و ثش ب دس دغ صي اػشا ي ؿ د اػشفبد بيي. $ ظال غيش فؼب وشد سبي ش# دس اي حب ثش ب حبفظ ي سد اػشفبد اؽ سا ص ب ي و يبصي ث آ يؼز آصاد ي بيذ حشي اال ىب اص و ششي دشداصؽ ث سجغ آ و ششي س ا ثبسشي اػژشفبد ژي و ذ. ا ش ثش ب ي 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); 34

س يذ ش افضاس بيي و دس ش د يشايؾ حشف اي اػشب ذاسد ي ذ ص ثبي وبس و ذ ا ىب دزيش اػز ا ب اي و فىشي ثژشاي ؼ ژبسي ژش افضاس ثى يذ ثؼيبس اػبػي اػز. ث يظ ص ب ي و ض ثبؿيذ ا ىب بر ػخز افضاسي خش ف سا دس دػش ب بي ش ع دس ظش ث يشيذ اي وبس ديچيذ سش خ ا ذ ث د و كذ ا جش اص ح ك ي اي مب خبسع اػز. ؿى 9: ثش ب ي Mobile Edit دس حب اػشا س ي دػش ب بي خش ف ثشاي اػشفبد اص اصص ثشي فش ب دس حيي شاحي Windows Forms ثبيذ يه ايذ ي دسػز حؼژبثي داؿژش ثبؿژيذ. ا جشژ ژش و شش ژي سا ي س ا يذ س ي فش دبي لشاس د يذ ث ؿش ي و ثخ ا يذ آ سا دس فش بي شك ؿذ يض اػشفبد بييذ. فمژي يبدسژب ثبؿژذ ا ژش ژي خ ا يژذ وبسوشد يه و شش سا دس فش شك ؿذ سغييش د يذ ثبيذ خل ي Modifiers و شش سا ثب protected يب public مذاس د ژي و يژذ. ا ژش خل ي Modifiers يه و شش سا ثب private مذاس ثذ يذ دس فش شك ؿذ فمي ي س ا يذ آ سا خفي يب ث ذوي وشد يب آ سا سغييژش ا ذاص ثذ يذ. 35

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

مذ س ػؼ ي ش افضاس ي ذ ص ثبي ؿجب ز صيبدي ث س ػؼ ي ش افضاس دس دػىشبح داسد ث يظ ص ب ي و يىي اص د صثب يظ ا ثيؼيه يب يژظ ا ػي ؿبسح دار ز سا اػشفبد ي و يذ. ؿ ب ب اثضاس بي س ػؼ ي ثش ب بي ي ذ ص دػىشبح سا ثشاي ي ذ ص ثبي ژ اػژشفبد ژي و يژذ يى سفب ر بيي يض ثي اي د حيي ؼز. دػش ب بي ي ذ ص ثبي كفح ي بيؾ و چه سش بثغ حذ د سش داس ذ چ ژي لبثژ ح ث د اغ ت ثبسشي اػشفبد ي و ذ. دس اي مب يبد ي يشيذ و چ س ش افضاس بي ثش ج بي ي ذ ص فش ثشاي ثبي ايؼبد و يذ. و شش بي ػفبسؿي سا ث ثش ب سب اهبف و يذ چ ي ػبخش و شش بي ػفبسؿي ثب دشيجب ي وب حيي شاحي سا س شي و يذ. ث ػال وبسثشد ػژخز افژضاس GPS داخژ ژش افژضاس چ ي ث س ص سػب ي مبديش و شش بي اػي وبسثش سا داخ يه ثش ب ي چ ذ دشداصؿي Threaded) (Multi سا يض فشا خ ا يذ شفز. افض د و شش بي ػفبسؿي ث ثش ب ي خ دسب ا ژش ثژ ژب س ػژؼ ي ثش ب ژ ي ي ژذ ص ثبيژ ثژ و شژش ژبي خبكژي يژبص ديژذا و يژذ وژ دس ؼ ػژ ي و شژش ژبي اػژشب ذاسد.NET Compact Framework يؼش ذ سا ح بي صيش سا ديؾ س خ ا يذ داؿز: يه و شش اػي وبسثش فمي ثشاي ثش ب ي فؼ ي سب دسػز و يذ يه و شش اػي وبسثش و دس ثش ب ي دي ش لبث اػشفبد ثبؿذ دسػز و يذ يه و شش اػي وبسثش ثب ا ىب بر سد ظشسب خشيذاسي و يذ دس اي مب ػ س ؽ ايؼبد و شش ب سا اص اثشذا اص شيك اػشفبد ي ؼذد سشويت ثب و شش بي ػ د يبد خ ا يذ شفز. و شش بي وبسثش $ػفبسؿي# اي و شش ب ؼ ال ثب سشويت چ ذ و شش ػ د دسػز وشد يه و شش ػذيذ ث وبس ي س ذ. دس يظ ا اػش دي 2008 ايؼبد و شش ژبي وبسثش ث س وب س ػي يىي اص ا اع دش ط ي آ Project) (User Control دشيجب ي ي ؿ د. لشي يه و شش ػذيذ ايؼبد ي و يذ يژه كفح ي شاحي ب ذ وب شي ش دذيذ ي آيذ و و شش ب سا س ي آ لشاس ي د يذ. ثب يه و شش وبسثش ؿ ب ي س ا يذ چ ذ و شژش ػژ د سا ثژب سشويت و يذ ث سي و ث ب اػشفبد اص و شش سشويجي ػ ىشد آ ب ذ يه و شش فشد ثبؿژذ. دس ؿژى 1 ؿژ ب يژه و شژش وژبسثش داخ يظ ا اػش دي 2008 ي ثي يذ. و شش زو س ؿب د و شش ثشچؼت (Label) د و شش ػؼجژ ژش (TextBox) اػژز وژ ژي س ا يذ ثشاي اػشجبس ػ ؼي وبسثش ظال ثشاي س د ث يه ػيؼش ثب ه ا الػبسي اػشفبد و يذ. ص ب ي و دژش ط وب ذبيژ ژي ؿژ د ايژ و شژش دس ا ػ ج ي شث ى ث خ د ؽ ر خ ي ش ي ؿ د سب د س آي ذ س ػ ي ش د ش ط ي دي ش ي ژذ ص ثبيژ ا ػژ ش فبد ژ شدد. د س ايژ و شژ ش وژب سث ش وذ ي ؼژي چ ذا ي دغ اص لشاس داد و شش ػفبسؿي س ي آ الص يؼز. س ب وذ سد يبص داخ اي و شش وبسثش ػجبسر اػز اص سؼشيف د شغيش ثژب ػژ ح دػششػي ػ ي (Public) ث ش ا ي ث د ػ ز آ سد ب وب سث ش ز س ا ط د ا خ يژ ه ث ش ب ژ چ ژ ي مژذ ا س د ژي ژب وژب سث ش ا ػژ ز. خ لژ ي Password $ زس اط # فمي خ ا ذ ي (Read-only) اػز سب وبسثش سا ؼج س و ذ و حذال يه زس اط ي ؼبص ثژشاي خژ دؽ دس ظژش ث يژشد. اػشجبس ػ ؼي زس اط دس داخ ثش ب ا ؼب ي ؿ د داخ و شش وبسثش. د ي اي ا ش ساحشي وبس ثژب و شژش ا ىژب اػژشفبد ي ؼژذد اص آ اػز. 37

ؿى 20: و شش ػفبسؿي ثشاي اػشجبس ػ ؼي وبسثش ثشاي اػشفبد اص و شش اػشجبس ػ ؼي وبسثش داخ ثش ب وبفي اػز آ سا اص ػؼج اثضاس يظ ا اػش دي ثىيذ س ي فش ثي ذاصيژذ. و شژش اػجشژشا ػ ؼي وبسثش ث س خ دوبس دس ػؼج اثضاس ب داد ي ؿ د. ثبيذ خؼز س ي ثخؾ General ػؼج اثضاس ساػز و يژه و يژذ اص ژ ي ثژبص ؿذ ضي ي Choose Items سا ثض يذ ث فبي اػ ج ي و حب ي و شش اػشجبس ػ ؼي وبسثش اػز اؿبس و يذ سب و شش زو س دس ػؼج اثژضاس ظب ش ؿ د. دس ؿى 2 ؿ ب چ ي بيؾ و شش اػشجبس ػ ؼي Credentals) (User سا داخ ثش ب ي ثي يذ. ا ش ث ػؼج اثضاس ژ ث شيژذ و شش ثب ب UserCredentals سا دس ثخؾ General ػؼج اثضاس خ ا يذ ديذ و ث آػب ي ي س ا يذ آ سا س ي فش خژ د لژشاس د يژذ. دژغ اص اي وبس ؿ ب دس د ؼش ي خلبر (Properties) يه خل ي - UserName و لبث مذاس د ي دس حيي شاحژي دس ػژي حژب ثژ ك سر وذ يؼي داخ ثش ب اػز- ي ثي يذ. دس ػي حب خل ي Password سا ثب س خبوؼششي دس د ؼش ي خلبر خ ا يذ ديژذ و ث د ي فمي خ ا ذ ي ث د آ اػز. اي خل لبث مذاسد ي يؼز ي مذاسؽ دغ اص آ و س ػي وبسثش ث ب اػژشاي ثش ب ژ اسد ؿذ لبث ثبصيبثي $خ ا ذ # خ ا ذ ث د. 38

ؿى 21: و شش ػفبسؿي داخ يه ثش ب و شش بي اسص ثشي ؿذ ب ي ا لبر ظال يه و شش ػ ي.NET Compact Framework سا اػشفبد ي و يذ يى الص داسيذ و وبسوشد آ بثك د خ ا ؿ ب سغييش و ذ. ظال يه ػؼج ش (TextBox) و فمي ػذد سا ث د دس آ اسد د. ا جش ؿ ب ي س ا يذ ث وبسثش اػبص د يذ و ش چ خ اػز اسد بيذ دغ اص س د ا الػبر دس داخ ثش ب آ سا اػشجبس ػ ؼي و يذ. ا ب ايؼبد يه و شش ػفبسؿي خ ا داخ ثش ب سب يب ث ك سر يه و شش ؼضاي شك ؿذ اص ػؼج ش ػبدي و كشفب وبساوشش بي ػذدي $دليمب# ث ب س د داد ب ثذزيشد ايذ ي ث ششي اػز. دس اي س ؽ ؿ ب وذ يؼي و ششي سا دس ثش ب سب خ ا يذ داؿز چشا و اػشجبس ػ ؼي داخ و شش اسص ثشي ؿذ ي (inherited) ػؼج ش ك سر ي يشد. ثب ػ د حذ د ؿذ لبث يز بي اي ػؼج ش ػذيذ دس مبيؼ ثب ػؼج ش ؼ ي ثبص ػؼج ش ػذيذ ا ىب بر وب شاحي ؿب ي خل ب س يذاد بي ػؼج ش اك ي سا دس اخشيبس ؿ ب لشاس ي د ذ. ث ػال ا ش و شش ضث س سا ث س ؼضا ايؼبد وب ذبي و يذ دس ثش ب بي شؼذدي ي س ا يذ اص آ اػشفبد بييذ. ثشاي ايؼبد يه و شش ثب ب numerictextbox ث ك سر ؼضا خؼز يه دش ط ي ػذيذ اص ع Class Library سا دس ثش ي Smart Device Project ا شخبة ايؼبد و يذ. چ ذ خي وذ ثشاي سجذي يه ػؼج ش ؼ ي ث ػؼج ش ػذدي سد ظش يبص خ ا يذ داؿز و كشفب اػبص ي س د داد بي ػذدي و يذ BackSpace سا ث وبسثش ي د ذ. 39

public 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); ص ب ي و ؿ ب وذ ثب و ذ ي شذ اك ي سا ي يؼيذ ثبيذ سؼيي و يذ و شذ والع دبي $اك ي# چ لغ ي س ا ذ فشاخ ا ي ؿ د. بثك ؼش ذار اسص ثشي دس ثش ب يؼي ؿيء شا ب ي و شذ OnKeyPress سا دس يه والع شك ؿذ ثب ي و ي ثبيذ ئ ؿ ي و شذ OnKeyPress شؼ ك ث والع دبي فشاخ ا ي ي ؿ د سب دس اك ديغب شث ى ث س يذاد دسيبفز شدد. اص آ ؼب و و شش و ذ ي س يذاد TextChanged فمي داد بي ػذدي سا دسيبفز ي و ذ ؿ ب دغ اص اػشجبس ػ ؼي وبساوشش بي س دي ي س ا يذ شذ والع دبي سا فشاخ ا ي بييذ. اػشفبد اص ػؼج ش ػذدي داخ ثش ب ث ب س ؽ اػشفبد اص و شش اػشجبس ػ ؼي وبسثش اػز و دس ثخؾ لج ي ي مب ديذيذ. ؿى 22: و شش بي UserCredentials $اػشجبس ػ ؼي وبسثش# NumericTextBox $ س د داد ي ػذدي# دس حب ز شاحي اػشا داخ ؿجي ػبص 40

و شش بي ػفبسؿي ا ش ي خ ا يذ و شش بي ػ د سا د ثبس اػشفبد $ثبص يؼي# و يذ ي ث و شش بي ػذيذ يبص داسيذ ي س ا يذ و شش ػفبسؿژي خ دسژب سا ث ؼژژب صيذ. ؼ ژژ ال ايژژ ژژ ع و شژژ ش ژژب ا ص م ژژ ي كژژ ف ش ؿژژ ش ژژي ؿژژ ذ ح شژژي ا ژژ ش ث ش ا يژژذ ثژژ ػ ژژ ا ظژژب آ ژژب س ا ا ص وژژال ع System.Windows.Forms.Control اسص ثشي بييذ و حذال وبسآيي بي ػ ي و شش ب سا داؿش ثبؿ ذ. ث اي ع و شش ب دػز ػبص Controls) (Own Drawn ي ي ذ. دس يظ ا اػش دي 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 اػشفبد ي و يذ دس اػشفبد اص اي والع ب ث وذ اك ي شاػؼ ي و يذ دبوؼبصي آصاد ػبصي بثغ سد اػشفبد دغ اص ش ثژبس سشػي ثؼيبس اػز. دس #C ث شش اػز اص والع بيي اػشفبد و يذ و يه شذ Dispose سا ث ك سر سشويت ثب دػش س using ديژبد وژشد ثبؿ ذ. دػش س using سو ي ي و ذ و Dispose حشي دس ثش ص خ ب ث ب فشاخ ا ي شذ بي يه ؿئ اػشا ژي ؿژ د. دس الژغ ؿژ ب اص ثبثز ذيشيز خ ب ب Handling) (Exception خيب سب ساحز اػز. ظال ي خ ا يذ يه ش سا بيؾ د يذ. 41

ي س ا يذ ل ؼ وذ صيش سا اػشفبد بييذ آ سا داخ شذ 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 دي ژش ژ الص داسيژذ يىژي Font دي ژشي SolidBrush و ش د ي اي ب ث ب فشاخ ا ي DisplayLabelInfo ايؼبد ي ؿ ذ. ص ب ي و اي اؿيب سا ثب دػش س using ث وبس ثجشيژذ دبوؼبصي آ ب وبسآيي ثبالسشي خ ا ذ داؿز چ شذ Dispose دسػز دس ص ب ي و و شش ثش ب ث خژبسع اص حژذ د ي سؼشيژف $دػششػژي# ؿيء ي س د فشاخ ا ي ي ؿ د دس شيؼ دػش سار و ششي ث ب دبوؼبصي حبفظ Collection) (Garbage اػشا ي ؿ د چ يبصي ث فشاخ ا ي 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 base.onpaint(pe); 42

دس وذ لج ي فشم ثش اي اػز و ؿ ب يه ژ اص ژ ع Bitmap ثژب ژب memorybitmap چ ژي يژه ژ اص ژ ع Image ثژب ژب someimage دس بيز يه ؼش ي ثشاي سشػي سل يش دس داخ آ ايؼبد مذاس د ي ا ي وشد ايذ. فشاخژ ا ي شژذ base.onpaint دس ا ش بي شذ OnPaint ثبػض خ ا ذ ؿذ و آ چ دس س يژذاد Paint ا ص دژ يؾ ا ص ايژ ط جژ ز ؿژذ ا ػژ ز دژغ ا ص ژبيؾ ح ش يژب ر س ػژ ي شژذ OnPaint ؿ ب س ي آ ب بيؾ داد خ ا ذ ؿذ. ثشاي اهبف وشد ا ىب بر شاحي ث و شش ػفبسؿژي سژب ثبيژذ يژه فبيژ.xmta - وژ ژ ع خبكژي اص فبيژ XML اػژز ايؼژبد بييژذ. يظ ا اػش دي 2008 ثب اػشفبد اص IntelliSense $سبي خ ؿ ذ# اي ا ىژب س ا ثژ ؿژ ب ژي د ژذ وژ يژ ه فبيژ خ لژب ر ص ژب ش ا حژي File) (Design-Time Attribute ث دش ط ي سب اص داخ ػ ؿ اوؼذ سس اهبف بييذ. ل ؼ وذ صيش يه اص اي ع فبي سا ژب ي د ذ يه خل ثشاي و شش ػفبسؿي ؿ ب ثب يه سد ث ذي ه ػي ايؼبد ي و ذ دس د ؼش ي خلبر يظ ا اػژش دي 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> 43

اػشفبد اص و شش ػفبسؿي داخ يه ثش ب دغ اص ايؼبد يه و شش ػفبسؿي آ سا داخ يه ثش ب اػشفبد ي و يذ. ا ش ؿ ب ا ىب بر شاحي سا ثشاي و شش ػفبسؿي سب ث دسػشي ايؼژبد وشد ثبؿيذ و شش ػفبسؿي سا ث ػؼج اثضاس يظ ا اػش دي اهبف وشد ثبؿيذ لشاس داد آ دس اػي وبسثشي ثش ب سژب ب ژذ و شژش ژبي اػشب ذاسد خ ا ذ ث د. دس ؿى 4 اػي وبسثش يه ثش ب ي ل ت بي ا ىشش يىي سا ي ثي يذ و اص يه و شش ػفبسؿژي Compass Control اػشفبد وشد اػز. ب س و ي ثي يذ ا ىب بر وب شاحي شا ثب سؼذادي خل ثشاي اي و شش دس دػششع لشاس داسد. ثژ ػژال ژي ثي يذ و ي خل ب مذاس ديؾ فشم ش سا ب دس ثبس ي ح ي اػشفبد اص آ خل داس ذ. ثشاي ػبخش اي اػژي وژبسثش ثبيژذ يه»و شش ل ت ب«سا داخ MainForm ثي ذاصيذ يه و شش (Menu) ثشاي فؼب / غيش فؼب ػبصي دسيبفز داد ب اص يش ژذ ي داخ ي GPS ث ثش ب افض د ؿذ اػز. ؿى 23: ش افضاس ل ت بي ا ىشش يىي و يه و شش ػفبسؿي سا اػشفبد ي و ذ ثؼذ اص اي و ثش ب ا الػبر ح ػغشافيبيي GPS سا دسيبفز وشد ػ ز ػشػز حشوز وبسثش دس كفح ي»و شش ل ت ب«بيؾ داد ي ؿ د. ثشاي ث س ص سػب ي اي داد ب»و شش ل ت ب«سؼذادي خل دس اخشيبس ثش ب يغ لشاس داد اػز و اص داخ ثش ب لبث مذاس د ي ؼش ذ مبديشي سا و اص يش ذ ي GPS خ ا ذ ي ؿ ذ ب ي د ذ. 44

افضد ا الػبر شث ى ث ح ػغشافيبيي ث ثش ب دػش ب بي ي ذ ص ثبي 6 5 داساي يه سا ا ذاص (GPS Intermediate Driver=GPSID) GPS ؼش ذ و ثشاي ؿ ب ثژ ػ ژ ا يژه س ػؼ د ذ دسيبفز ا الػبر ىب ػغشافيبيي اص شيك GPS چ ي ث اؿششان زاسي ػخز افضاس آ ثي ثش ب بي خش ف ثؼيبس آػب خ ا ذ ث د. ثب ؼششؽ دػش ب بي ؼ ض ث GPS الص اػز و ا الػبسي ساػغ ث س يذ ش افضاس ثش ج بي آ داؿش ثبؿيذ. ثشاي ث دػز آ سد ا الػبسي دس ص ي سا ا ذاص GPS يىش ػبفز ث آدسع صيش شاػؼ بييذ: http://msdn.microsoft.com/en-us/library/ms850332.aspx اثضاس بي س ػؼ ي ي ذ ص ثبي 6 5 سؼذاد صيبدي وذ ثش ب ي ثشاي 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 اػژشفبد بييژذ. ثژذي ظژ س ثبيژذ ايژ اػژ ج ي سا دس ػ ؿژ خ دسژب اسد (import) و يذ. يه شػغ ث والع GPSID سا ث ػ ؿ سب ثيفضاييذ سب اػشفبد اص آ دس ثش ب سب ا ىب دژزيش ژشدد. ديژب شا داد ژب شذ بي شسجي ثب والع اػشفبد ؿذ دس اي مب دس ؿى 5 بيؾ داد ؿذ اػز. ؿى 24: ديب شا والع GPSID والع Gps م ي آغبص وبس ؿ ب ثب ػخز افضاس آ اػز. دس اي والع شژذ بيي ثژشاي دسيبفژز ا الػژبر ىژب ػغشافيژبيي GPS ثژ كژ سر ثالدس ب ػ د داسد دس ه يه س يذاد و ث ب سغييش ا الػبر ىب فشاخ ا ي ي ؿ د. شژذ بيي يژض ثژشاي فؼژب /غيش فؼژب ػبصي ػخز افضاس GPS ؼز. ديؾ اص دسيبفز ا الػبر ىب ي اص يش ذ ي GPS خؼز الص اػز و يه ؿيء ػذيذ اص ع Gps ايؼبد شژذ Open سا ثژشاي آ فشاخژ ا ي و يذ. اي وبس ثبػض ي ؿ د و ا ش ثش ب ي ؿ ب ا ي اػشفبد و ذ ي ػخز افضاس GPS س ي اي دػژش ب اػژز ػژخز افژضاس GPS فؼژب شدد. دغ اص دبيب اػشفبد اص آ ا ش ثش ب ي ؿ ب آخشي اػشفبد و ذ ي GPS س ي دػژش ب اػژز ثبيژذ شژذ Close سا ثژشاي ؿژيء GPS فشاخ ا ي و ي سب ػخز افضاس GPS سا غيشفؼب و ذ. اي وبس ثبػض ي ؿ د و ث ب يژبص ذاؿژش ثژ GPS ثژبسشي دػژش ب ثي ژ د لژشف شدد. 45

ل ؼ وذ صيش چ ي فؼب /غيش فؼب ػبصي اسلب ث ػخز افضاس 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; ا ش وبسثش ثخ ا ذ ثش ب سا ثج ذد ثبص ثبيذ اسلب GPS سا ل غ و يذ ث ي د ي ثبيذ دس ذيش س يذاد Closing $ثؼش ثش ب # ثشسػي و يذ و ا ش ص GPS فؼب اػز آ سا غيش فؼب بييذ اص ف شػز س يذاد LocationChanged خبسع ؿ يذ (unsubscribe) شذ Close اص ؿيء Gps سا فشاخ ا ي و يذ. وبس اك ي ثش ب ي ل ت بي ا ىشش يىي دس ذيش س يذاد gps_locationchanged ا ؼب ي ؿ د. ش ثش ب اي ي س ا ذ ثب اػشفبد اص ذيش س يذاد دس آ طجز ب (subscribe) و ذ. ش ص ب و ا الػبر ىب ي GPS سغييش و ذ ذيش س يذاد ثش ب ثشاي وبس س ي اي سغييشار فشاخ ا ي ي ؿ د. طجز ب دس س يذاد LocationChanged سو ي ي و ذ و ثش ب ي ؿ ب دس ش حظ ث آخشي ا الػبر ىب ي دػششػي داسد ا جش ثب اي فشم و ػخز افضاس 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(); ثب اي و خل بي صيبدي ثشاي والع Gps ؼز ؿ ب دس اي ذيش س يذاد فمي خل ژبي Heading $ػ ژز# Speed $ػژشػز# سا ي ث ي يذ. چ ش اف ض ا س ك شفب ي ه ل ژ ت ژب ي ا ى ش ش يىژي ا ػژ ز ثژ ژ ي خژب ش خ لژ ژبيي ب ژذ Lattitude $ػژشم ػغشافيژبيي# $ Longitude ػغشافيبيي# يؼش ذ. اص آ ػب و ا الػبر دسيبفشي اص ب اس ى اػز ث دسػشي خ ا ذ ذ الص اػز و دسػژز 46

ث د مبديش خل بي سد ظش سب سا ثشسػي و يذ. دس بيز ثبيذ شذ Invalidate فشاخ ا ي و يذ سب ا ش حذال يىژي اص داد ژبي خ ا ژذ ؿذ سغييش وشد ثبؿذ»و شش ل ت ب«سا ث س ص بيذ. ا ش ثب وذ ثبال و ثشاي ذيش س يذاد gps_locationchanged ؿش ايذ- ثش ب سب سا وب ذبي اػشا بييژذ ثژب خ ژبي ص ژب اػژشا اػژ خ ا يذ ؿذ. ف ديغب خ ب اي اػز و ؿ ب ي س ا يذ داد بي»و شش ل ت ب«سا ث س ص و يذ. ش صيش سا دس ش ديغب خ ا يذ ديذ: Control.Invoke must be used to interact with controls created on a separate thread Control.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 يب والػي و آ سا ذيشيز ي و ذ اص چ ذ دشداصؽ اػشفبد ي و ذ اي ب چيضي اػز و ثبيذ اظجؾ ثبؿيذ. ؿى 25: سغييش خل بي و شش ل ت ب #Compass$ ث ب ثش ص خ ب 47

ث س ص سػب ي و شش بي اػي وبسثش دس يه ثش ب ي چ ذ دشداصؿي اؿشجب ي و ثيشش س ػؼ د ذ ب ش افضاس ث آ دچبس ي ؿ ذ اي اػز و ػؼي ي و ذ ث س ؼشمي اص داخ دشداصؽ فؼژب و شژش ژب ي ا ػژ ي وژ ب سث ش س ا سغ ي يژ ش د ژ ذ يژ ب ثژ آ ژ ب د ػ ش ش ػژ ي د يژذ ا و ژ ذ. ايژ وژب س ؼژ ش ثژ اوژ ؾ غ يژ ش شظژ ش ژي ؿژ د. د س ژ ب س ؽ 1.0.NET Compact Framework ثش ب دز ػش لف ي ؿ د. دس بسؽ 2.0 يب ثبالسش شيؼ ا ذوي ث شش اػز. ب ي و ثخ ا يژذ يژه و ش ش ا ػ ي وب سث ش س ا ا ص د ا خ د شد ا ص ؽ دي ش ي $غ ي ش ا ص د شد ا ص ؿژي وژ و شژ ش ژ سد ظژ ش د س د ا خژ آ اي ؼژبد ؿژذ ا ػژ ز# سغ ي يژ ش د يژذ خ ژب ي NotSupportedException ايؼبد ي شدد. دس ؿى 6 ؿ ب اي سد سا دس ثش ب ي ل ت بي ا ىشش يىي ي ثي يذ. ثشاي سفغ اي ى ثبيذ خ دسب سا ض ث سػبيز اي لب ثى يذ و :»فمي دشداصؿي $يب شذي# و و شش اػي وبسثش سا ايؼبد ژي و ژذ ژي س ا ذ آ سا سغييش د ذ«ص ب ي و ثخ ا يذ يه و شش سا داخ دشداصؽ فؼب سغييش د يذ ي ثبيذ شذ Control.Invoke سا فشاخژ ا ي و يژذ. اي شذ يه بي ذ ي خل ف سا دس دشداصؿي و ث ذاس ذ ي د ؼش ي handle) (window حب ي آ و شش دػششػژي داسد $ دس الژغ آ سا ايؼبد وشد اػز# فشاخ ا ي ي و ذ. حب ي س ا يذ ذيش س يذاد 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(); ); داخ ذيش س يذاد gps_locationchanged ي ثي يذ و compass1.invalidate ث س ؼشمي فشاخ ا ذ ي ؿ د ث ى اص داخ شژذ دي شي ث ب compass1.invoke فشاخ ا ي ي ؿ د. ا ش ثب ثحض بي ذ بي ثي ژب delegates) (anonymous آؿژ ب جبؿژيذ ايژ س ؽ ثشاي سب ب ف خ ا ذ ث د. دس ذيش س يذاد gps_locationchanged اي لبث يژز #C 2.0 ثژشاي فشاخژ ا ي compass1.invalidate اص داخ compass1.invoke اػشفبد ي ؿ د. دس ػي حب اي ا ىب ؼز و شذ ػذا ب اي ثشاي فشاخژ ا ي compass1.invalidate فشاخ ا ي آ اص داخ UpdateDelegate سؼشيف ؿ د. چ و شش Compass فمي اص يه ػب فشاخ ا ي ي ؿ د اػشفبد اص بي ژذ ي ثژي ب ثبػض خ ا ذ ؿذ و وذ يؼي و سب سش ؿ د. 48

ثب اي سغييشار ي س ا يذ ثش ب ي ل ت بي ا ىشش يىي سا ثذ خ ب اػشا ا الػبر ب اس اي GPS سا اص شيك GPSID دسيبفز بييذ. ؿى 26: ل ت بي ا ىشش يىي دس حب اػشا بيؾ داد بي GPS حب اي ػؤا دس ر سب ؼز و اي ش افضاس اال داخ ؿجي ػبص دػش ب اػشا ي ؿ د ي ا الػبر ب اس اي GPS سا دسيبفز ي و ژذ. دغ چ وبس ي و ذ آص بيؾ ثش ب بي حؼبع ث ح ػغشافيبيي ا ش ثش ب اي ث يؼيذ و اص GPS اػشفبد ي و ذ آص بيؾ آ ثش ب داػشب دي شي اػز. اغ ت يش ذ ژبي GPS دس فوژبي ثؼژش يؼ ژي ب ػبيي و ؿ ب اآل ؼش ايذ ثش ب ي يؼيذ ػ ي و ذ. ث ػال ا ش وبس و ذ ا الػبر دسيژبفشي اص ژب اس شثژ ى ثژ يژه ح اػز ؿ ب ب س ػؼ آص بيؾ ثش ب ي س ا يذ حشوز و يذ سب ا الػبر ػذيذ سا دسيبفز بييذ. ثشاي ح اي ى اثضاس س ػژؼ ي ي ذ ص ثبي 6 يه اثضاس ث ب FakeGPS داسد و فبي بي داد ي ش ي حب ي ا الػبر GPS سا ثشاي ؿجي ػژبصي وژبسوشد دػژش ب GPS اػشفبد ي بيذ. ثش ب بيي و اص GPSID اػشفبد ي و ذ ثذ يبص ث دػشىبسي ي س ا ژذ اص ثش ب ژ ي FakeGPS ثژشاي ؿژجي ػژبصي حب ز الؼي ػخز افضاس GPS اػشفبد بي ذ. اص آ ػب و FakeGPS س ي ؿجي ػبص دػش ب وبس ي و ذ ؿ ب ي س ا يذ ش افضاس بي دي ش سا يض ثب اػشفبد اص آ اػشا آص بيؾ و يذ. ثشاي اػشفبد اص FakeGPS وبفي اػز و آ سا س ي دػش ب يب ؿجي ػبص آ لت بييذ. اي ثش ب ث ك سر يه فبي CAB ي ثبؿذ. ثژشاي لت آ س ي ؿجي ػبص دػش ب وبفي اػز و د ؿ ي حب ي فبي FakeGPS سا دس د ؼش ي Emulator Properties ث اؿششان ث زاسيذ سب ب ذ وبسر حبفظ ي ػب جي ػ و ذ. ؿى 27: اؿششان د ؿ ث ب ىب يبثي ؿجي ػبصي ؿذ ثب FakeGPS 49

داخ ؿجي ػبص دػش ب ي س ا يذ ثب File Explorer ث داخ وبسر حبفظ Card) (Storage ثش يذ و ث د ؿ ي اؿششاوي اؿبس ي و ژذ. فبي CAB شث ى ث FakeGPS سا ا شخبة اػشا و يذ سب ثش ب اؽ دس ؿجي ػبص لت شدد. ثش ب ي FakeGPS ژشا ثژب سؼژذادي فبيژ ش ي حب ي ا الػبر GPS لت خ ا ذ ؿذ. ؿ ب ي س ا يذ فبي بي ش ي خ دسب سا و حب ي ا الػژبر 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 ثش ب سا دس ؿجي ػبص اػشا و يذ ػذغ آ سا فؼب و يذ فبي داد ي GPS سد ظش سب سا ا شخبة بييذ. دس بيز س ي دو ي Done و يه و يذ سب اسػب داد ب ث داخ GPSID آغبص شدد. ؿى 9: ا شخبة فبي داد ي GPS داخ ثش ب ي FakeGPS اي ي آ چيضي ث د و ثشاي آص بيؾ ثش ب بي جش ي ثش GPS ث آ يبص داؿشيذ. حب س ي ؿجي ػبص دػش ب س ي دػش ب فيضيىي $ الؼي# ي ذ ص ثبي ي س ا يذ ثش ب سب سا آص بيؾ و يذ. دغ اص لت س ظي FakeGPS ي س ا يژذ ثش ب ژ ي ل ژت ژبي ا ىشش يىژي سا اػشا و يذ. 50

پنجم فصل مقذمه اي تر SQL Server CE 51

مذ س ػؼ ي ش افضاس ي ذ ص ثبي ؿجب ز صيبدي ث س ػؼ ي ش افضاس دس دػىشبح داسد ث يظ ص ب ي و يىي اص د صثب يظ ا ثيؼيه يب يژظ ا ػي ؿبسح دار ز سا اػشفبد ي و يذ. ؿ ب ب اثضاس بي س ػؼ ي ثش ب بي ي ذ ص دػىشبح سا ثشاي ي ذ ص ثبي ژ اػژشفبد ژي و يژذ يى سفب ر بيي يض ثي اي د حيي ؼز. اي سفب ر ث ب اػشفبد اص ثب ه ا الػبسي ؼز. اغ ت ثش ب ب اص ثب ه ا الػبسي اػژشفبد ي و ذ. ثشاي رخيش ػبصي داد دس دػش ب ؿ ب ث ػ ا س ػؼ د ذ دػز سب ثبص اػز و اص چ س ؿي اػشفبد و يذ. دس اي مب ژ ژب جي ساػغ ث SQL Server 2005 Compact Edition س ؽ بي خش ف دػششػي ث داد بي ح ي رخيش ؿذ س ي دػش ب خ ا يژذ ديژذ. ب د س ؽ شفب ر دػششػي ث داد ب سا ا ص حب وب س آيي ص ب ال ص ث ش ا ي ا ػ ش ا ي ض ا وژذ ؿژ ش ؿژذ مبي ؼژ خژ ا ي وژ شد. د س ظژب ژب ي وذ يؼي د ػذ Order_Details Orders اص ثب ه ا الػبسي ي Northwind سا اػشفبد وشد اي. بسؽ ژ سد اػژشفبد ي ثب ژه ا الػبسي SQL Server 2005 Compact Edition 3.5 شا ثب يظ ا اػش دي 2008 اػز. SQL Server Compact Edition س ع ب ب بسؽ بي SQL Server بيي و س ي دػش ب بي ي ذ ص ثبي اػشا ي ؿ ذ ى اػز ؿ ب سا ػش دس و ژذ. دس ص ژب بسؽ اي مب سشي بسؽ بي SQL Server 2005 و دس حب اػشفبد ثش س ي دػش ب بي ي ذ ص ثبي ؼش ذ ث ؿشح صيش ا ذ: :SQL Server Mobile 3.0 شا ثب يظ ا اػش دي SQL Server 2005 2005 شش ؿذ. اي ژبسؽ س ي وژب ذي سش ژبي و چه PC$ #Tablet اػشا ي ؿ د. اص ص ب ي و اثضاس بي س ػؼ س ي وب ذي سش بي دػىشبح لت ي ؿ ذ اي بسؽ س ي بؿژي بي خبكي اػشا ي ؿ د. SQL Server Mobile دس ػب 2006 شش ؿذ سب حذ صيژبدي ثژش دبيژ ي :SQL Server 2005 Compact Edition 3.1 3.0 ػبخش ؿذ اػز. اي بسؽ SQL Server CE س ي دػش ب بي ي ذ ص ثبي دس ػي حب س ي دػىشبح ب خ سبح ژب ثذ حذ ديز اػشا ي شدد. SQL Server CE ػبص بسي صيبدي ثب يشايؾ بي خش ف SQL Server داسد ا ىب ژبر وب ژ ثب ه ا الػبسي ساث اي سا دس ميبع و چه فشا ژي و ژذ. ايژ ژبسؽ SQL Server CE س ي حبفظژ ي اكژ ي سا (ROM) دػش ب بي ي ذ ص ثبي 6 لت ي ثبؿذ. :SQL Server 2005 Compact Edition 3.5 SP1 دس ػب 2007 ث ك سر دا د ؼشم شش ؿژذ دس ػژي حژب داخژ يژژژظ ا اػژژژش دي 2008 يژژژض ػژژژ د اػژژژز. ثژژژش ج ژژژبي س ػژژژؼ ي SQL Server CE 3.1 س يژژژذ ؿژژژذ اػژژژز. اي بسؽ SQL Server CE ا ىب ؼب ػبصي ثب ػش س بي يىش ػبفز سا اص شيك ػژش يغ Microsoft Syncronization ثشاي ADO.NET فشا ي ػبصد. صيش ػبخز SQL Server 2005 Compact Edition SQL Server CE يه ثب ه ا الػبسي ػجه اػز ثش خالف بسؽ بي دي ش SQL Server ث ك سر يه دشداصؽ شا ثب ثش ب اي و اص آ اػشفبد ي و ذ اػشا ي ؿ د. اي ثذا ؼ ي اػز و SQL Server CE ث ك سر يه ػش س ؼضا ديبد ػبصي ذ اػز. ثب ه ا الػبسي آ دس يه فبي فشد ثب دؼ ذ sdf رخيش ي ؿ د چ ي ا ىب ؼب ػبصي حش يبر آ ثي يه وب ذي سش دػىشبح دػش ب ي ذ ص ثبي اص شيك ثش ب ي اوشي ػي ه (ActiveSync) دس ي ذ ص ايىغ دي يب ثش ب ي RDA دس ي ذ ص يؼشب يب ػ ػ د داسد. ا ىب بر ديشفش سش ؼب ػبصي س ػي (Windows Mobile Device Center) WMDC دس دػششع اػز. چ ي ادغب وذي وشد ػش يغ ؼب ػبصي ADO.NET ثشاي ؼب ػبصي ثي ػش س چ ذ دػش ب حشي دشيجب ي اص ػيؼش سخيق سذاخ دس اسدي و داد ب س ػي چ ذ وبسثش ث ك سر ص ب دس حب ث س ص سػب ي ؼش ذ اص ػ ا ىب بر SQL Server CE اػز. اي بسؽ اص SQL Server داساي ػ ح خش ف ا يشي اػز ب ذ ثمي ثب ه بي ا الػبسي ي س ا ذ ثب و 52

ي س ض حبفظز ؿذ داد بي داخ آ ب يض س ض بسي ؿ ذ. اي ه ع ث خل ف ثشاي دػش ب بي ي ذ ص ثبي و دس ؼشم ؿذ يب ػشلز ؼش ذ اػز. ث يظ ص ب ي و ثب ه ا الػبسي س ي وبسر حبفظ رخيش ي ؿ د وبسر حبفظ ثيشش دس ؼشم ػشلز اػز. اي مب س ي سشويت SQL Server 2005 Compact Edition 3.5 يه ش افضاس ذيشيز ؿذ ثحض ي و ذ. ؿ ب چ ذ س ؽ خش ف دسع سغييش ثبصيبثي داد ب سا اص داخ يه ثش ب ي ذيشيز ؿذ و ش وذا افك خب ف خ د سا داسد خ ا يذ ديذ. ثشاي مبيؼ ي س ؽ ب ثب يىذي ش ب اص ثب ه ا الػبسي Northwind ػذ بي Order Detail Orders سا ا شخبة وشد اي. ثشاي اػشفبد اص اي ثب ه ا الػبسي - و دس ؼيش C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Samples ب ؼيش ديؾ فشم لت يظ ا اػش دي 2008 لشاس داسد- الص اػز و يظ ا اػش دي 2008 سا ثب ؼ ص ذيش ػيؼش elevations) (administrator دس ي ذ ص يؼشب يب ػ اػشا بييذ. دس غيش اي ك سر ا ىب اسلب دػششػي ث ثب ه ا الػبسي سا خ ا يذ داؿز. اػشفبد اص ديشبػز بي داساي ع اػشفبد اص ديشبػز بي داساي ع يه س ؽ آػب ثشاي دػششػي ث ثب ه ا الػبسي SQL Server CE اػز. مژذاس صيژبدي اص وژذ ثژ كژ سر خ دوبس س يذ ي ؿ د. يى ديشبػز دس الغ يه وذي اص داد ب دس حبفظ ي اك ي اػز و اص جغ داد ب ژذ SQL Server CE اػژشخشاع ؿذ اػز. ث ػجبسر دي ش ديشبػز يه وذي فيضيىي اص داد بيي اػز و ؿ ب ثب آ ب وبس ي و يذ. اي ثذا ؼ ي اػز و ص ب الص اػز سژب داد ب اص ثب ه ا الػبسي دس ديشبػز ثبس زاسي ؿ ذ سغييشار ك سر شفش س ي داد ب ث س خ دوبس س ي ثب ه ا الػبسي اػ ب ژي ؿژ ذ. ث ب مذاسد ي ا ي ي ديشبػز اص آ ػب و ؿ ب س ي وذي داد ب دس حبفظ ي اك ي وبس ي و يذ وبس ثب داد ب ثؼيبس ػژشيغ ا ؼژب ژي ؿ د. ثشاي وبس ثب ثب ه بي ا الػبسي حؼي ى اػز ثب ى و ج د حبفظ ي اك ي اػ ؿ يذ. 53

ؿى 28: ديشبػز (DataSet) بي ثب ع داد 54

دس ؿى 1 يظ ا اػش دي 2008 سا ي ثي يذ و يه دش ط اص ع Smart Device شا ثب يژه جژغ داد Source) (Data وژ ثژ ثب ژه ا الػبسي Northwind شل اػز. داخ Data Source Wizard د ػذ Order Detail Orders ا شخبة ؿذ ا ذ و ث جژغ داد ي داساي ع شل ؼش ذ. ب س و دس د ؼش ي Data Sources ي ثي يذ ساث ي ثي Order Detail Orders ثژ ژ س خ دوژبس ثشاي ؿ ب ايؼبد ؿذ اػز. ا ش ي خ ا يذ بيؾ د ػذ شل (master-detail) سا دس اػي وبسثش داؿش ثبؿيذ ثبيذ و شش بي سد ظش سب سا اص د ؼش ي Data Sources س ي فش ثىيذ. ثشاي ذاسي خ دوبس ساث ي ثژي ػژذ ژب الص اػژز وژ ا الػژبر ػژذ Order Detail سا شا ثب ػذ Orders ا شخبة بيي. ؿى 29: فش بي س يذ ؿذ ي خ دوبس دس حيي شاحي يظ ا اػش دي دس ؿى 2 فش بيي سا و ث س خ دوبس ايؼبد ؿذ ا ذ ي ثي يذ. ثذ يبص ث وذ يؼي ي س ا يذ ا الػبر ثب ه ا الػبسي Northwind سا ثجي يذ. س ب وبسي و ا ؼب ؿذ اػز وذي داد ب داخ ديشبػز دس حبفظ ي اك ي اػز. حب يبص داسيذ ئ ؿ يذ و سغييشار دس ثب ه ا الػبسي ث س دائ ي رخيش ؿ ذ. وذي و س ػي يظ ا اػش دي 2008 س يذ ؿذ اػز فمي ي س ا ذ داد ب سا دس MainForm ب د ذ. $وذ #1 وذ بي دي شي ػ ز بيؾ ا الػبر خالك د ؼش ي ىب ي يشايؾ داد ب س ػي يظ ا اػش دي س يذ ؿذ اػز. ديؾ اص مذاس د ي و شش بي اػي وبسثش س ػي داد بي ديشبػز احش بال ثبيذ سؿش ي اسلب string) (connection سا ثشاي ك ؿذ ث ثب ه ا الػبسي SQL Server CE سغييش د يذ. ث يظ ثشاي ثب ه ا الػبسي حبفظز ؿذ س ػي زس اط ا ش افؼبس ثش ب سا ث دػز يظ ا اػش دي ثذ يذ سؿش ي اسلب حب ي زس اط خ ا ذ ث د و اي خ د يه ايشاد ا يشي اػز. 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()) 55

this.orderstableadapter.fill(this.northwinddataset.orders); 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: وذ س يذ ؿذ ي خ دوبس ثشاي مذاس د ي ا ي ي و شش بي اػي وبسثش س ػي داد بي ديشبػز دس ذيش س يذاد MainForm_Load داد ب اص ثب ه ا الػبسي Northwind ث ديشبػز - و داد ب سا س ػي اسلب داد binding) (data ثشاي وبسثش ب ي د ذ- وذي ي ؿ ذ. وذ اهبف ثشاي بيؾ ػضئيبر افضد ػفبسؽ $سو سد# ػذيذ ؿش ؿذ اػز. ثشاي ثشسػي وبسآيي اي س ؽ دس ثبصيبثي داد ب اص ثب ه ا الػبسي ي س ا يذ دس اثشذاي ذيش س يذاد MainForm_Load ص ب سا ثب اػشفبد اص ؿيء وش شش (Stopwatch) طجز و يذ دس دػش س دبيب ي س يذاد زو س يض وش شش سا ش لف ص ب سا د ثبس طجز و يذ. حب ي س ا يذ ص ب كشف ؿذ ثشاي ثبصيبثي داد ب سا دس اس هؼيز bar) (status بيؾ د يذ. ث س ؽ بث ي س ا يذ ص ب الص ثشاي بيؾ ػضئيبر سا يض ث ب حشوز ثي سو سد ب حبػج و يذ. ثذي ظ س ص ب سا ث ب فبس داد و يذ شث ى ث حشوز ثي سو سد ب س ػي وبسثش طجز وشد ث حن خؼشي سغييش مذاس ػؼج ش دس MainForm د ثبس ص ب سا طجز فبك ي ص ب ي سا حبػج بييذ. ؿى 3 اي ص ب ب سا ث ب اػفبد اص ديشب ػز داساي ع داد ث ؿ ب ب ي د ذ. ب س و ي ثي يذ ص ب الص اص آغبص اػشاي ثش ب سب بيؾ داد ب س ي فش اك ي دس ؿجي ػبص 13 طب ي ث د اػز. حشوز ثي سو سد ب ث يظ يشايؾ ا الػبر شث ى ث ػضئيبر ػفبسؽ ث س يب ي 300 ي ي طب ي ص ب ثشد اػز. دس ػي حب ؿ ب ي ثي يذ و حشوز اص سو سد ا ث سو سد آخش ث ب يضا حشوز اص يه سو سد ث سو سد ثؼذي اؽ ص ب ثشد اػز اي دس الغ ب ي د ذ و ديشبػز وب ال دس حبفظ ي اك ي وبس ي و ذ. ا ذاص يشي ص ب حشوز اص سو سد ا ث آخش دس وذ 2 ب داد ؿذ اػز. 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: ا ذاص يشي ص ب الص ثشاي حشوز اص سو سد ا ث آخش 56

ؿى 30: ص ب الص ثشاي ثبس ضاسي بيؾ داد ب ػب ث ػبيي ثي سو سد ب اص آ ػب و ديشبػز ي داد ب سا دس حبفظ ي اك ي ي داسد دس ص ب بي خلي الص اػز و سغييشار سا دس ثب ه ا الػبسي طجز ل ؼي (commit) و يذ ص ب آ ثؼش ث ظش خ د سب داسد. يه س ؽ اي اػز و سب ػبيي و ى اػز س ي ديشبػز وبس و يذ ص ب ي و وبسثش ي خ ا ذ ثش ب سا ثج ذد سغييشار سا س ي ثب ه ا الػبسي طجز ل ؼي بييذ. ا جش ا ش لشاس اػز داد ب سا ثب يه ػش س اك ي ؼب ػبصي و يذ ث شش اػز و ديؾ اص ؼب ػبصي ثب آ داد ب سا طجز ل ؼي بييذ. ث ش حب ا ش ي داد ب دس ديشبػز $حبفظ ي س # ث ب ذ ث ب اص وبس افشبد ثش ب داد بي ؿ ب اص ثي خ ا ذ سفز. دس يه ثش ب ي ؼ ي ى اػز ؿ ب دس ص ب بي خبكي اص ػ ثؼش ؿذ ثش ب ؼب ػبصي ثب ػش س خبسػي ص ب ي و ثش ب دس دغ ص ي لشاس ي يشد داد ب سا طجز ل ؼي بييذ. دس ػي حب اػز ثخ ا يذ داد ب سا ث حن ايؼبد سو سد ػذيذ يض طجز ل ؼي و يذ و دس اي حب ز ديشبػز سمشيجب ث ك سر يه وذي سىشاسي ثي لشف اص داد ب خ ا ذ ث د. وذ 3 ح ي طجز ل ؼي سا ث ؿ ب ب ي د ذ. دس اي ظب دس ذيش س يذاد Closing $يؼش ثش ب # داد ب طجز ل ؼي ي ؿ ذ ا جش ث ؿش ي و حش اي ديشبػز سغييش وشد ثبؿذ. private void MainForm_Closing(object sender, CancelEventArgs e) if (northwinddataset.haschanges()) orderstableadapter.update(northwinddataset); order_detailstableadapter.update(northwinddataset); وذ 3: طجز ل ؼي داد ب ث ب ثؼش ثش ب ص ب ي و اص ديشبػز اػشفبد ي بييذ ثخؾ اػظ وذ س ػي يظ ا اػش دي ايؼبد ي ؿ د دغ اص مذاس د ي ا ي ي ديشبػز وبس ثب داد ب ثب ػشػز ا ؼب ي ؿ د. دس الغ س ب وذي و الص اػز ؿ ب ث يؼيذ طجز ل ؼي داد ب دس ثب ه ا الػبسي اػز. ث ػال ى اػز ؿ ب ثشاي حشوز ثي داد ب وذ يؼي و يذ سا ح غيش اص ديؾ فشم سا ثشاي مذاس د ي ديشبػز اػشفبد بييذ ظال ص ب ي و ثخ ا يذ داد ب سا في شش وشد ػذغ دس حبفظ لشاس د يذ. دس اي مب ب ثشخي ا ىب بر ديشفش ب ذ ثبس زاسي داد ب ثب سأخيش سا كشف ظش وشد اي. 57

اػشفبد اص SqlCeResultSets ثب ع داد ثب اػشفبد اص SqlCeResultSets ث داد بي ثب ه ا الػبسي SQL CE ساحز سش دػششػي خ ا يذ داؿز. ثخي اص وذ ثشاي ؿ ب ث س خ دوبس ايؼبد ي ؿ د ي ث ا ذاص اي و دس ديشبػز ديذيذ. يىي اص يظ ي بي SqlCeResultSets وبس وشد ؼشمي ثب ثب ه ا الػبسي اػز. ث ػجبسر دي ش داد ب دس حبفظ ي س حذ د شا لي ز دػش ب ي ذ ص ثبي وذي ي ؿ ذ. يه SqlCeResultSets ثب ع داد دس الغ ساحشي وبس ديشبػز (DataSet) سا ثب وبسآيي ديشبسيذس (DataReader) سشويت وشد اػز. ثشاي مبيؼ ي وبسآيي ديشبػز SqlCeResultSets اص ثش ب اي بث - و س ي ب ػذا ظب لج ي ثب ب ػ يبر وبس و ذ- اػشفبد خ ا ي وشد. وبسآيي سا ثب ب ؿيء وش شش (Stopwatch) ا ذاص خ ا ي شفز. دس ؿى 4 ؿ ب دس د ؼش ي خلبر يه اثضاس ػفبسؿي ثشاي ايؼبد SqlCeResultSets ث ػبي ديشبػز ي ثي يذ. شح ي خؼز بث لج اػز. ؿ ب يه جغ داد (DataSource) شل ث ثب ه ا الػبسي Northwind سا ث دش ط سب ي افضاييذ. ب افض د جغ داد يه ديشبػز داساي ع ث س خ دوبس س ػي يظ ا اػش دي 2008 ايؼبد ي شدد. ػذغ ؿ ب اثضاس ػفبسؿي سا دس د ؼش ي خلبر سغييش ي د يذ سب SqlCeResultSets ب سا ايؼبد بيذ. آ چ دس ؿى 4 ي ثي يذ اي اػز و يظ ا اػش دي د SqlCeResultSets ثشاي سب ايؼبد وشد اػز ي اسسجب ي ثي آ د ػ د ذاسد. ثشاي داؿش يه بيؾ اك ي- فشػي (Master-Detail) دس MainForm ثبيذ خ دسب وذ شث ى ث اسلب ثي د بي اك ي فشػي سا ث يؼيذ. وذي و يظ ا اػش دي ثشاي بيؾ داد ب دس MainForm ثشاي سب ايؼبد ي بيذ دس وذ 1 ب داد ؿذ اػز. س ػ داؿش ثبؿيذ و فمي ديشب شيذ (DataGrid) حب ي داد بي ػذ Orders ث س خ دوبس س ػي يظ ا اػش دي ثب داد بي ػذ ؾ دش خ ا ذ ؿذ. چ ي يچ فش اهبف ثش اي ب ثشاي بيؾ خالك ي داد ب يب د ؼش ي ىب يشايؾ سو سد ب ايؼبد ي ؿ د. 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 58

ؿى 31: SqlCeResultSet بي ثب ع داد ثشاي بيؾ داد بي ػذ Order_Details ص ب ثب سو سد ا شخبة ؿذ اص ػذ Order ؿ ب ثبيذ ا ذوي ث خ دسب صح ز داد چ ذ خي وذ يؼي و يذ. يه م ي ؿش ع خ ة ثشاي اي وبس ؿش وذ ث ج د وبسوشد Order_DetailsResultSet اػز. س ي Northwind.xsd دس ػ ؿ اوؼذ سس ساػز و يه و يذ. يظ ا اػش دي يه فبي وذ ػي ؿبسح ث ب Northwind.cs ثشاي سب ايؼبد ي بيذ و س ي Order_DetailsResultSet وبس و يذ. وذ س يذ ؿذ س ػي حيي شاحي ث ك سر يه والع ػضئي (partial) ديبد ػبصي ي ؿ د. دس وذ 5 ؿ ب ا ىب بسي سا و ث Order_DetailsResultSet افض د ايذ ي ثي يذ. يه ػبص ذ ي (Constructor) ػذيذ ثب دبسا شش مي (boolean) ايؼبد ؿذ اػز و اي شغيش مي ب ي د ذ و آيب ػذ Order Details يبص ث ثبص ؿذ داسد يب. ا ش ؿ ب اي ػبص ذ سا سي فشاخ ا ي و يذ و ػذ سا ثبص ى ذ ي س ا يذ س ػي يه س ا Open ث س ؼضا - و دس وذ 5 ثشاي اػشاي دشع ػ س ي ػذ Order Details ديذ ي ؿ د ػذ سا ثبص و يذ. ثذي سشسيت ؿ ب يه Order_DetailsResultSet ايؼبد وشد ايذ و فمي سو سد بي سد ظش سب سا ثبس زاسي وشد اػز. دس اي مب ب اص ؿبخق (index) زاسي ثشاي ثبالسش ثشد وبسآيي ث ي ػبصي ثب ه ا الػبسي اػشفبد ىشد اي.د ي اي وبس مبيؼ ي كحيح وبسآيي ثي ديشبػز SqlCeResultSet اػز. زا ثب افض د ؿبخق ي س ا يذ شبيغ ث ششي ث دػز آ سيذ. 59

public 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()) else // Designtime Connection String resultsetconnectionstring = "Data Source=C:\\Users\\Maarten\\Documents\\Visual Studio " + "2008\\Projects\\SqlCE35Demo\\SqlCE35WithDataSets\\Northwind.sdf"; // 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 60

وذ 5: س ػؼ ي Order_DetailsResultSet if ((sqlceselectcommand!= null)) sqlceselectcommand.dispose(); دغ اص س ػؼ ي Order_DetailsResultSet يبص ث ا ذوي وبس ثيشش داسيذ. خؼز اي و ئ ؿ يذ و شش بي اػي وبسثش سا ث يه جغ اسلب (BindingSource) ػذيذ شل وشد ايذ. ص ب ي و و شش بي Order_DetailsResultSet سا ثب ويذ س ي فش لشاس ي د يذ آ ب ث جغ اسلب ي و ث ب ويذ لشاس داد ديشب شيذ OrderResultSet س ي فش ايؼبد ؿذ اػز شل خ ا ذ ؿذ $ؿى #5. اي سد ثشاي في ذ - Order ID و يه في ذ و يذي ششن ثي د ػذ اػز- ى ي دسػز ي و ذ. ي اسلب بدسػز في ذ بي Order_DetailsResultSet ث OrderResultSetBindingSource ػت ثش ص خ بي ص ب اػشا خ ا ذ ؿذ چ دس اي جغ داد سؼشيف ذ ا ذ. ؿى 32: اسلب ػؼج ش Product ID ث جغ داد ي بدسػز ساحز سشي سا سفغ اي ى افض د يه جغ اسلب source) (binding ث ػ ؿ اػژز وژ خلژ ي DataSource آ سا ثشاثژش ثژب Order_DetailsResultSet لژژشاس د ژژي $ؿژژى #6. دژژغ اص ايژژ وژژبس ثژژ ژژب وژژيذ ا ژژذاخش و شژژش ژژبي اػژژي وژژبسثش اص Order_DetailsResultSet ث س ي MainForm يظ ا اػش دي اص ؿ ب خ ا ذ دشػيذ و وذا جغ اسلب سا ي خ ا يذ اػشفبد بييذ. ثب خق وشد جغ اسلب ي و خ د سب اهبف د ايذ اي ايشاد ثش شف خ ا ذ ؿذ. سد ثؼذي ؿژش وژذ ثژشاي ژبيؾ ػضئيژبر ا الػژبر سو سد ا شخبة ؿذ ي فؼ ي اص ديشب شيذ اػز. ثب چ ذ خي وذ يؼي دس MainForm ي س ا يذ اي وبس سا س ب و يذ. اص ب ثخژؾ س ػژؼ ي Order_DetailsResultSet ؿش ؿذ دس وذ 5 اػشفبد و يذ. 61

ؿى 33: افض د دػشي جغ اسلب source) (binding ا شؼبة آ ث Order_DetailsResultSet ش ثبس و وبسثش يه سو سد $ػفبسؽ# سا اص ديشب شيذ ا شخبة ي و ذ $ؿى #6 اثشذا ثبيذ مذاس في ذ $و يذ ا يژ # Order ID سا ثژ دػژز آ سيژذ. ػذغ ثب اػشفبد اص آ يه ػجبسر دشع ػ دسػز و يذ و اص ػذ Order Details ا الػبر شث ى ث ػضئيبر ػفبسؽ ا شخبة ؿژذ سا ثژ دػز آ سد. دغ اص اي و يه Order_DetailsResultSet ايؼبد سو سد جك ثب ؿشايي دشع ػ دس آ رخيش ؿژذ ثبيژذ جژغ اسلژب Orders اك ي سا اص حبفظ خژبسع و ژي. دس وژذ 6 س ؽ اسلژب د ػژذ ResultSet سا ث آ شل و ي ػذغ (BindingSource) OrderDetails سا اص شيك وذ يؼي ي ثي يذ. اي وذ دس ش ثبس سغييش اؿبس ش سو سد $فؼ ي# داخ ديشب شيذ فشاخ ا ي ي ؿ د. 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 +"'"; 62

order_detailsresultset = new SqlCE35WithResultSets.NorthwindResultSets.Order_DetailsResultSet(false); order_detailsresultset.open(query); order_detailsresultset.bind(order_detailsresultsetbindingsource); وذ 6: اسلب بي فشػي (details) ث اك ي (master) ص ب ي و وبسثش يه سو سد ػذيذ سا $دس ديشب شيذ ػذ #Orders ا شخبة ي و ذ س يذاد PositionChanged س ي جغ اسلب ordersresultsetbindingsource فشا خ ا ذ ي ؿ د. اي س يذاد ي س ا ذ ثشاي ث دػز آ سد مذاس في ذ Order ID سو سد فؼ ي اػشفبد ؿ د. حبفظ ي order_detailsresultset فؼ ي آصاد ؿذ يىي دي ش اص آ ثب اػشفبد اص يه دشع ػ ي ػذيذ ثش ج بي Order فؼ ي اػز اص ػذ Order ID ػبخش ي ؿ د و ا الػبر شث ى ث ػضئيبر ػفبسؿي سا و ؿ بس ي آ ثشاثش ثب Order ID Details ثش ي شدا ذ. دس ثخؾ ديشبػز ديذيذ و فش بيؾ خالك ي داد ب يشايؾ سو سد ث س خ دوبس ثشاي سب ايؼبد ي ؿ د. يى دس سد SqlCeResultSet يظ ا اػش دي چ ي وبسي ي و ذ ؿ ب خ دسب ثبيذ فش ب وذ بي شث ى ث آ سا ايؼبد و يذ. دس اي مب ث د ي اي و ب دس ثبس ي مبيؼ ي وبسآيي د س ؽ كحجز ي وشدي اي ثخؾ سا ا ؼب ذادي. سد دي ش اي و چ SqlCeResultSet ث س ؼشمي داد ب سا س ي ثب ه ا الػبسي رخيش ي و ذ ث ب سغييش داد ب يبصي ث وذ يؼي ثشاي طجز ل ؼي داد ب $ ب ذ ديشبػز# يؼز. بث ثب س ؽ ديشبػز دس اي ػب ثشاي ا ذاص يشي وبسآيي ص ب ي اص ؿيء وش شش اػشفبد ي و ي. دس ذيش س يذاد MainForm_Load ي س ا ي ص ب ثبس زاسي داد ب سا ا ذاص شفش دس اس هؼيز بيؾ د ي. ث ي سشسيت ص ب الص ثشاي ث دػز آ سد ا الػبر شث ى ث ػضئيبر ػفبسؽ سا ب حشوز اص يه سو سد ث سو سد دي ش ث دػز ي آ سي. ؿى 7 شبيغ اي ا ذاص يشي وبسآيي سا ثشاي SqlCeResultSet ب ي د ذ. ب س و ي ثي يذ اص حظ ي ثبس زاسي ثش ب دس ؿجي ػبص دػش ب سب ثبصيبثي داد ب اص ثب ه ا الػبسي 300 ي ي طب ي ص ب الص اػز. حشوز ثي سو سد ب ث س ص سػب ي آ ب ث يظ ػضئيبر ػفبسؽ details) (Order 50 ي ي طب ي ص ب الص داسد. حشوز اص ا ي سو سد ث آخشي سو سد ا ذوي ثيشش اص حب ز ديشبػز ص ب الص داسد چ سؼذاد سو سد بي ثيششي ثبيذ خ ا ذ ؿ ذ. ؿى 34: ص ب الص ثشاي ثبس ضاسي بيؾ داد ب ػب ث ػبيي ثي سو سد ب $ مبيؼ و يذ ثب ؿى #3 63

شيؼ يشي اػشفبد اص ديشبػز ثؼيبس آػب اػز. اص آ ػب و يظ ا اػش دي 2008 خ دؽ وذ سا س يذ ي و ذ ؿ ب وذ يؼي چ ذا ي الص ذاسيذ. ث يظ دس حب ز بيؾ ص ب ػذ بي اك ي- فشػي بػت اػز. ث د ي ثبس زاسي ي داد ب ث حبفظ اك ي ص ب ثيششي ثشاي بيؾ ا ي ي سو سد ب دس فش ثش ب ي ؿ ب الص داسد چ ي حبفظ ي اك ي بص ي شا لي ز دػش ب ي ذ ص ثبي سب سا ثبيذ لشف و يذ. SqlCeResultSet وبسآيي ثيششي داسد ث يظ ب ثبس زاسي ا ي ي داد ب. چ ث س ؼشمي س ي ثب ه ا الػبسي وبس ي و ذ فمي سو سد بيي سا و دس ديشب شيذ ب ي د ذ ث حبفظ ي اك ي ثبس زاسي ي و ذ. دس حب ز بيؾ ص ب د ػذ اك ي- فشػي يبص ث وذ يؼي داسيذ. ػشػز SqlCeResultSet ثب ايؼبد ؿبخق (index) دس ثب ه ا الػبسي ي س ا ذ ثيشش ؿ د. ا ش فش بيؾ يشايؾ خالك ي داد ب سا ي خ ا يذ ثبيذ خ دسب وذ يؼي و يذ. دس بيز وبسآيي ثبالسش اي س ؽ ث صح شؾ ي اسصد و چ ذ خي وذ سا ث يؼيذ ؿبيذ اص يه مب وذي و يذ. ) ; 64

فصل ششم امنيت دستگاه و نصة نرم افسار 65

مذ س ػؼ ي ش افضاس ي ذ ص ثبي ؿجب ز صيبدي ث س ػؼ ي ش افضاس دس دػىشبح داسد ث يظ ص ب ي و يىي اص د صثب يظ ا ثيؼيه يب يژظ ا ػي ؿبسح دار ز سا اػشفبد ي و يذ. ؿ ب ب اثضاس بي س ػؼ ي ثش ب بي ي ذ ص دػىشبح سا ثشاي ي ذ ص ثبي ژ اػژشفبد ژي و يژذ يى سفب ر بيي يض ثي اي د حيي ؼز. ثؼش ث ؿشوز ػبص ذ يب ادشاس س س ف شا و دػش ب ي ذ ص ثبي سا ػشهژ ژي و ژذ ايژ دػش ب ب داساي س ظي بر ا يشي ش ػي ؼش ذ. اص ديذ ب يه س ػؼ د ذ ا يز دػش ب سؼيي و ذ ي اػشا ؿژذ يژب ژذ يژه ثش ب ژ س ي آ چ ي بثؼي اص ػيؼش اػز و ثش ب ث آ ب دػششػي داسد. اي ؼأ دس چ ي س صيغ يب لت ش افضاس ث يظ ص ب ي وژ ثژب دػش ب $ ؿي# بي ش ػي اص ػبص ذ ب خش ف ػش وبس داسيذ ا يز ثيششي ديذا ي و ذ. اي مب ا الػبر فيذي سا دس ص ي ي ا يز دػش ب بي ي ذ ص ثبي چ ي آص بيؾ س ظي بر خش ف ا يشي ثب اػژشفبد اص اثژضاس ژذيش ا يز manager) (security يظ ا اػش دي 2008 دس بيز ح ي لت دسػز ثش ب ب س ي دػش ب بي ي ذ ص ثبي ثژ ؿژ ب اسايژ ي د ذ. ا يز دس دػش ب بي ي ذ ص ثبي دػش ب بي خش ف ي ذ ص ثبي ثؼش ث ؿشوز ػبص ذ ؿب س ظي بر ا يشي ش ػي داس ذ. يه دػش ب ى اػز ث س وب لت ش ثش ب اي سا ثذزيشد دػش ب دي ش ى اػز ث ب ا ي لت يب اػشاي يه ثش ب اص وبسثش سأييذي ث يشد. يب اي و دػش ب ث و ي دس ثشاثش لت ثش ب بيي و سأييذي ي ا يشي اص ػبص ذ ي آ ذاسد ؼذ د ثبؿذ. يه د ي ػ د س ظي بر ا يشي خش ف اي اػز و اغ ت دػش ب بي ديشفش ي ي ذ ص ثبي داساي ا ىب بر س ف شا ؼش ذ ثشاي اسسجبى دس يه ؿجى اي و دس اخشيبس ادشاس س س ف شا اػز ث وبس ي س ذ. زا يىي اص دالي دػش ب ي ذ ص ثبي ا يز خ د ؿجى اػز. دس الغ ادشاس س بي س ف شا ي خ ا ذ ؿجى ؿب سا دس ثشاثش ش افضاس بيي و ث ساحشي س ػي وبسثشا لت ي ؿ ذ حبفظز و ذ. ث ي د ي ي س ا ش ثش ب اي سا - حشي ا ش خل ف ي ذ ص ثبي ؿش ؿذ ثبؿذ- س ي يه دػش ب ي ذ ص ثبي لت وشد. ثذي سشسيت ثشاي سأ ي ا يز سد دسخ اػز ادشاس س بي س ف شا دػش ب بي ي ذ ص ثبي داساي س ظي بر ا يشي خش في ؼش ذ. يى ا يز اػ ب ؿذ دس يه دػش ب ي ذ ص ثبي كشفب ث د ي ادشاس س س ف شا يب ؿشوز اػشفبد و ذ ي آ يؼز ث ى ث ع اػشفبد ي آ يض ثؼش ي داسد. ا يز دػش ب بي ي ذ ص ثبي هش سي ث س وب داخ ػيؼش ػب سؼجي ؿذ اػز. الي بي خش ف ا يشي ثب سشويت ؿذ ا ذ سب دس بيز ثش ج بي يه س ظي ا يشي خق سؼيي و ذ و آيب ثش ب ب ي س ا ذ س ي دػش ب لت اػش ؿ ذ يب ا ش دبػخ ث اي دشػؾ ظجز اػز چ ؼ ص بي لت ش افضاس ثؼش ث س ظي بر ا يشي يه دػش ب خبف ي ذ ص ثبي ثش ب ب ى اػز س ي آ اػشا ؿ ذ يب اي و ث و ي اػشاي آ ب ع ثبؿذ. ؼ ص بي صيش ثشاي اػشاي ثش ب ب س ي يه دػش ب ي ذ ص ثبي سؼشيف ؿذ ا ذ: يظ :(Privileged) ش افضاس ش وبسي س ي دػش ب ي س ا ذ ا ؼب د ذ دػششػي وب ث ػيؼش فبي سػيؼششي ػيؼش داسد چ ي ي س ا ذ سأييذي ثشاي اػشاي ش افضاس بي دي ش س ي دػش ب لت و ذ. ػبدي :(Normal) ش افضاس حذ ديز بيي ثشاي اػشا داسد. س اثغ Win32 API سا ي س ا ذ فشاخ ا ي و ذ ي س ا ذ دس ثخؾ بي حبفظز ؿذ ي سػيؼششي سغييش د ذ يب س ي فبي بي ػيؼش ث يؼذ يب سأييذي لت و ذ. ؼذ د :(Blocked) ش افضاس ث يچ ػ ؼ ص اػشا ذاسد. 66

سأييذي بي ش افضاس ثشاي ث دػز آ سد ؼ ص اػشا ثشاي ش افضاس سب ي س ا يذ ثشاي آ ب سأييذي ث يشيذ. دػش ب ژبي ي ژذ ص ثبيژ د ژ ع سأييذيژ داس ژذ. سأييذي ي يظ سأييذي ي ػبدي و بثك ثب ع سأييذي ػ ح دػششػي آ سؼيي ي ؿ د. اص آ ػب و يه ژش خژبف $ ب ژذ ؿژشوز ػبص ذ يب ادشاس س س ف شا # اي سأييذي ب سا اساي ي د ذ ؿ ب ثبيذ ثب اي شاوض ثشاي دسيبفز سأييذي ي ش افضاس سب دس اسسجبى ثبؿيذ. ا ش چ ب ذ يه ISV $فش ؿ ذ ي ؼشم ش افضاس ; Vendor #Independent Software ى اػز ثخ ا يذ و ش افژضاس سژب س ي دػژش ب بي ش ػي وبس و ذ. ؿشوز Mobile2Market چ ي وبسي سا آغبص وشد اػز ش س يذ و ذ ي ژش افژضاس ژي س ا ژذ حلژ ؾ سا ثژشاي دسيبفز سأييذي ث آ ب اساي بيذ. دسيبفز سأييذي اص Mobile2Market ث اي ؼ ب اػز و ؿ ب يب ػبص ب ؿ ب ث ػ ا يه س يذ س صيژغ و ذ ي ش افضاس ث سػ يز ؿ بخش ي ؿ يذ. ػ ح دػششػي ش افضاس ػ ح د ػ ش ش ػي خ ش ف خ ق ي و ذ و ي ه ش اف ض ا س ثذ سأي يذي چ وب س بيي ي س ا ژذ س ي د ػژ ش ب ي ژذ ص ثبيژ ا ؼژب د ژذ. ايژ ػ ح دػششػي خش ف الي (tier) ب يذ ي ؿ ذ. ي ذ ص ثبي د ػ ح دػششػي ث ؿشح صيش داسد: ا يز يه الي security) :(One-tier ش افضاس داساي سأييذي ثب ؼ ص يظ س ي دػش ب اػشا ي ؿ د دػششػي وب ث ي ثخؾ ژبي دػش ب داسد. ش افضاس ثذ سأييذي ى اػز ثؼش ث س ظي بر ا يشي دػش ب ثش ا ذ س ي آ اػشا ؿ د. دس اي ك سر ثب ب ؼ ص يظ اػشا خ ا ذ ؿذ. ا يز د الي security) :(Two-tier ش افضاس داساي سأييذي ي س ا ذ س ي دػش ب اػشا ؿ د ثؼش ث ژ ع سأييذيژ اؽ ژي س ا ژذ ثژب ؼژ ص ػبدي يب يظ اػشا ؿ د. ش افضاس ثذ سأييذي ثؼش ث س ظي بر ا يشي دػش ب ى اػز اػشا ؿ د يى دس ك سر اػشا ثب ؼژ ص ػژبدي اػژشا خ ا ذ ؿذ. س ظي بر ا يشي دػش ب حب و سفب ر ؼ ص اػشاي ش افضاس ثب ب سأييذي ي ش افضاس سا ش ػ ؿذيذ يه دشػؾ ي ب ذ. آيب ش افژضاس ؿژ ب ثژب ػژ د ذاؿژش سأييذي ي س ا ذ س ي يه دػش ب خبف ي ذ ص ثبي لت اػشا ؿ د چ ذ س ظي ا يشي اػشب ذاس ثشاي دػش ب ژبي ي ژذ ص ثبيژ سؼشيژف ؿذ اػز و ثشخي ث ؿ ب اي ؼ ص سا خ ا ذ داد و ثش ب ي ثذ سأييذي سا اػشا بييذ: ثذ ا يز Off) :(Security ي ش افضاس ب كشف ظش اص داؿش يب ذاؿش سأييذي ي س ا ذ ثب ؼ ص يظ س ي دػش ب اػشا ؿ ذ. سأييذ يه الي اي س ػي وبسثش Prompt) :(One-Tier ي ش افضاس بي داساي ب سأييذي ي ا يشي ثب ؼ ص يظ س ي دػش ب اػشا ي ؿ ذ. اػشاي ش افضاس بي ثذ سأييذي ثب سل ي وبسثش ك سر ي يشد. ا ش وبسثش اػشاي ش افضاس ثذ سأييذي سا ثذزيشد ش افضاس ثب ؼ ص يظ اػشا خ ا ذ ؿذ. سأييذ د الي اي س ػي وبسثش Prompt) :(Two-Tier ي ش افضاس بي داساي سأييذي س ي دػش ب اػشا خ ا ذ ؿذ يى ؼ ص اػشاي يظ يب ػبدي ثؼش ث ع سأييذي ي ا يشي سؼيي ي ؿ د. ش افضاس بي ثذ سأييذي ثب اػبص ي وبسثش ي س ا ذ اػشا ؿ ذ يى دس ك سر اػشا فمي ثب ؼ ص ػبدي اػشا خ ا ذ ؿذ. سأييذي ؿخق طب ض Signed) :(Third-Party فمي ش افضاس بي داساي سأييذي ي ا يشي ي س ا ذ س ي دػش ب اػشا ؿ ذ. ؼ ص اػشاي يظ يب ػبدي ثؼش ث ع سأييذي ي ش افضاس خ ا ذ ث د. ثشاي دسيبفز سأييذي ثبيذ دس يه ػيؼش س ػؼ ي ش افضاس ب ذ Mobile2Market طجز ب و يذ. اغ ت دػش ب بي ي ذ ص ثبي و س ػي ادشاس س بي س ف شا خشيذاسي اساي ي ؿ ذ سأييذي ي Mobile2Market سا ثب خ د داس ذ. ؼذ د :(Locked) فمي ش افضاس بي داساي سأييذي ي ا يشي ي س ا ذ س ي دػش ب اػشا ؿ ذ. ؼ ص اػشاي يظ يب ػبدي ثش حؼت ع سأييذي خق ي ؿ د. 67

ؼ ص اػشا فبي بي وشبثخب ي DLL يه سد دي ش ؼز و ثبيذ فىشي ث حب آ ثى ي آ فبي بي وشبثخب ي دي ب يىي اػز و اص اي دغ اص ب اكژ الح آؿژ بي DLL سا اػشفبد ي و ي. ب ذ ثش ب ب DLL ب ي س ا ذ ثذ سأييذي ثبؿ ذ يب اي و سأييذي ثب ؼ ص اػشاي يژظ يژب ػژبدي داؿژش ثبؿ ذ. اص آ ػب و DLL ب اص داخ ثش ب ب اػشفبد ي ؿ ذ يه ػؤا ػب ت ديؾ ي آيذ. ا ش ظال يه ثش ب ثب ؼ ص دػششػژي يژظ يژه DLL ثذ سأييذي سا و آ اص داخ خ د يه سبثغ سد ا ي ب Win32 API سا فشا ي خ ا ذ اػشفبد و ذ چژ اسفژبلي ژي افشژذ ا ژش فبي DLL ث ب ػ ح دػششػي ثش ب اسسمب داد ؿ د و اي يه مق ا يشي خ ا ذ ث د. 68

اص اي س ل ا ي صيش ثشاي ثش ب ب ايؼبد ؿذ اػز سب بثك آ ث DLL ب دػششػي ديذا و ذ: سأييذي ي يه الي اي ثذ ا يز ثش ب ي ثذ ؼ ص يظ ثب اػبص ي وبسثش يظ يظ ثب اػبص ي وبسثش يظ يظ ثب اػبص ي وبسثش يظ ثش ب ي ثب ؼ ص ػبدي يظ يظ يظ يظ يظ يظ ثش ب ي ثب ؼ ص يظ يظ يظ يظ يظ يظ يظ سأييذي ي د الي اي ػبدي ثب اػبص ي وبسثش ػبدي ثب اػبص ي وبسثش ػبدي ثب اػبص ي وبسثش ػبدي ثب اػبص ي وبسثش ػبدي ػبدي غيش ؼبص غيش ؼبص يظ سشويت ثش ب DLL DLL ثذ ؼ ص DLL ثب دػششػي ػبدي DLL ثب دػششػي يظ DLL ثذ ؼ ص DLL ثب دػششػي ػبدي DLL ثب دػششػي يظ DLL ثذ ؼ ص DLL ثب دػششػي ػبدي DLL ثب دػششػي يظ آص بيؾ ثش ب دس حب ز بي خش ف س ظي بر ا يشي يىي اص اثضاس بي يظ ا اػش دي 2008» ذيش ا يز دػش ب «يب ب Device Security Manager اػز و ث ؿ ب ا ىژب ژي د ژذ وژ سظي بر ا يشي فؼب س ي يه دػش ب ي ذ ص ثبي ؿجي ػبصي ؿذ سا ث دػز آ سيذ. ىش : ؿ ب ص ب ي ي س ا يذ س ظي بر ا يشي سا س ي يه دػش ب فيضيىي ي ذ ص ثبي سغييش د يذ و س ظي بر ا يشي فؼ ي آ ثژ ؿژ ب اػژبص ي اي وبس سا ثذ ذ. دلز و يذ و ا ش س ظي بر ا يشي يه دػش ب سا ث حب ز ؼذ د (Locked) سغييش د يذ اي حب ز لبث ثبص ژز يؼژز. دغ دس اي سد احشيبى و يذ. ا جش ذيش ا يز دػش ب دس اي حب ز ث ؿ ب ذاس خ ا ذ داد. ثب اػشفبد اص ؿجي ػبص دػژش ب ثژ ساحشژي ژي س ا يذ س ب ي حب ز بي ا يشي سا آص بيؾ بييذ. ثب اػشفبد اص ثش ب ي Device Security Manager ي س ا يذ ش س ظي ا يشي سا و اص ديؾ سؼشيف ؿذ اػز فؼب و يذ يب س ظي ا يشژي ػذيذ سا اسد (import) ثش ب و يذ. ث ػال ي س ا يذ ف شػز س ب ي سأييذي بي ا يشي لت ؿذ س ي دػش ب ي ذ ص ثبي يب ؿژجي ػژبص دػش ب سا ث دػز آ سيذ. 69

ؿى :35 ثش ب ي Device Security Manager س ظي بر ا يشي دػش ب ب ي س ا ذ داخ دش ذ بي 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 /> آص بيؾ ػ ح خش ف دػششػي دس س ظي بر ا يشي خش ف حب و يبد شفشيذ چ س س ظي بر ا يشي خش ف سا اػ ب و يذ چ ذ آص بيؾ سا ا ؼب ي د ي. ل ؼ وذ صيش ث ػ ا يه ظب ػبد ي س ا ذ م ي آغبص ثبؿذ. اي ل ؼ وذ اص يه سبثغ سأييذ ؿذ ي Win32 API اػشفبد ي و ذ. ا ش ؿ ب اي ل ؼ وذ سا دس يه ثش ب يب DLL لشاس د يذ ثشاي ش وذا سأييذي (certificate) بي خش ف ث يشيذ يب حشي ثذ سأييذي اػشا و يذ دس بيز خ ا يذ س ا ؼز وبسوشد ثش ب سا دس س ظي بر خش ف ا يشي آص بيؾ و يذ. [DllImport("coredll.dll")] public extern static void PowerOffSystem(); private void btninstructions_click(object sender, EventArgs e) PowerOffSystem(); 70

ا ش ثش ب ؼبص ث فشاخ ا ي API بي سأييذ ؿذ ثبؿذ ثب اػشاي آ ي ثي يذ و ثالفبك ؿجي ػبص دػش ب ثؼش ي ؿ د چ خب ؽ ؿذ اػز ا ش ثش ب ؼبص ث اي فشاخ ا ي جبؿذ يچ اسفبلي ي افشذ API بديذ شفش ي ؿ د. ا ش ؿ ب ثخ ا يذ دس احي حبفظز ؿذ ي ػيؼش فبي ي يب سػيؼششي دػش ب ث يؼيذ ثب خ بي دػششػي غيش ؼبص (UnauthorizedAccessException) اػ خ ا يذ ؿذ. لت ثش ب سظي بر ا يشي دػش ب س ي لت ثش ب ب اطش ي زاسد. سب اي ؼبي مب فشم ثش اي ث د اػز و لت ش افضاس ب اص داخ يظ ا اػش دي 2008 لت ي ؿ ذ س ظي بر ا يشي يض اص شيك Device Security Manager ك سر ي يشد. كذ ا جش ب ي و دس حب ثش ب يؼي ؼشيذ اي ا ىب وبس ؿ ب سا خي ي آػب ي و ذ يى دس بيز ؿ ب ثش ب ب سا شش خ ا يذ وشد ث ي د ي ثبيذ سؼشث ثي دس ص ي ي لت ثش ب ثشاي وبسثشا بيي users) (end داؿش ثبؿيذ اي يؼ ي ثش ب ي ؿ ب ث ك سر يه فبي CAB يب MSI شش شدد. ا ش ثش ب سب ث ك سر فبي CAB شش ؿ د وبسثش ثبيذ فبي سا ث داخ دػش ب ي ذ ص ثبي خ دؽ وذي و ذ س ػي ثش ب ي اوؼذ سس آ سا ثبص اػشا بيذ. ا ش ثخ ا يذ فبي CAB سا داخ يه فبي Microsoft Installer $يب ب #MSI لشاس د يذ وبسثشا ي س ا ذ اص شيك ي ذ ص وب ذي سش دػىشبح خ دؿب ص ب ي و دػش ب ي ذ ص ثبي ؿب اص شيك ثش ب ي ActiveSync دس ي ذ ص ايىغ دي يب ثش ب ي Windows Mobile Device Center دس ي ذ ص يؼشب يب ػ ث وب ذي سش شل اػز ثش ب سا لت و ذ. ا ش س ظي بر ا يشي دػش ب ػخش يشا ثبؿذ ى اػز اػبص ذ ذ و فبي CAB ثذ ا وب س ي آ لت ؿ د. دس الغ كشف سأييذي داؿش ثش ب سب وبفي يؼز ث ى ثبيذ ثشاي فبي CAB ا وبي سأييذي ث يشيذ. اثضاس س ػؼ ي ي ذ ص ثبي 6 يه ثش ب ي خي فش ب ي ث ب cabsigntool.exe ثشاي اي وبس داسد و اص signtool.exe ي يظ ا اػش دي 2008 اػشفبد ي و ذ. ثشاي ساحشي وبس ث شش اػز اص خي فش ب يظ ا اػش دي 2008 اػشفبد و يذ و ؼج س جبؿيذ شغيش حي ي path سا ثشاي يبفش اي ثش ب مذاس د ي و يذ. ظب صيش ح ي اػشفبد ي 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" ثب ب CAB DVDsMobileCab.cab س ب ثش ب بي اػشايي داخ آ ثب يه سأييذي ي آص بيي - و داخ Windows Mobile 6 SDK اػز ا وب ي ؿ ذ. ثش ب ي cabsigntool.exe سا دس اي ؼيش ي س ا يذ ديذا و يذ: \program files\windows Mobile 6 SDK\Tools\Security ثب يه ب ث دػش س بي خي فش ب ي ثبال ش ػ ي ؿ يذ و ثب اي د ف ا ش لشاس ثبؿذ ش ثبس لغ اػشفبد اص cabsigntool.exe اي دبسا شش ب سا اسد بييذ احش ب ثش ص خ بي دػش سي ؼز. دغ ث شش آ اػز و دس يه فبي دػش اي bat اي دػش س ب سا لشاس د يذ ش ثبس آ سا فشاخ ا ي و يذ. 71

ث س ص سػب ي ثش ب ب ثش خالف ثش ب بي دػىشبح و دس يظ ا اػش دي 2008 س يذ ي ؿ ذ دس ي ذ ص ثبي ا ىب لت ث س ؽ ClickOnce و ا ىب ث س ص سػب ي فبي بي اص لج لت ؿذ سا دس ك سر سغييش آ دس ؼخ ي ػذيذ ي د ذ ػ د ذاسد. يى ؿ ب ي س ا يذ وبسوشد بث اي سا ظال ث ػي ي ة ػش يغ ايؼبد بييذ. دس اي مب س ؿي بث ClickOnce ثشاي ث س ص سػب ي ثش ب بي ي ذ ص ثبي خ ا يذ ديذ. اي ظب كشفب يه م ي آغبص خ ا ذ ث د ث ؿ ب ا الػبر وبفي خ ا ذ داد و خ دسب ثش ا يذ ث اي س ؽ ثش ب بي سب سا ث س ص و يذ. ثشاي ث س ص سػب ي خ دوبس ثش ب بي سب ي س ا يذ اص ة ػش يؼي اػشفبد و يذ و آخشي بسؽ شش ؿذ ي ثش ب سا اػال ثب بسؽ ثش ب ي سد اػشفبد ي فؼ ي مبيؼ و ذ. اص آ ػب و ؿ ب ثبيذ يه ثش ب ي دس حب اػشا سا ث س ص سػب ي و يذ ثبيذ يه ثش ب ي لت و ذ ي ؼضا - ب ذ لت و ذ اي و اص اثشذا ثش ب سب سا س ي دػش ب لت وشد اػز- ث يؼيذ. لت يه ثش ب ي ػذيذ ثشاي لت يه ثش ب ثب لبث يز ث س ص سػب ي خ دوبس ثبيذ ثش ب سب سا اص شيك يه ة ػبيز ASP.NET لت و يذ. ثشاي دا د ثش ب وبسثش ثبيذ ػبيز سا ثشاي ديذا وشد ح دا د آ ػؼشؼ و ذ. ؿى 36: ة ػبيز حب ي ثش ب دا د ث س ص سػب ي آ دس ؿى 2 ؿ ب يه ة ػبيز ي ثي يذ و يه ثش ب ي ػذيذ ثشاي دا د ث ك سر آ بد داسد. ثب و يه س ي آ ثش ب لت خ ا ذ ؿذ ث ى ث ػبي آ يه ثش ب ي لت و ذ س ي دػش ب لت ي ؿ د. ثش ب ي لت و ذ دس ب د ؿ اي و ثش ب ي اك ي دس آ لت خ ا ذ ؿذ لشاس ي يشد. ثش ب ي لت و ذ دس ػي حب يه يب جش ب ثب ثش ب ي اك ي دس د ؿ ي Program Files ايؼبد خ ا ذ وشد. 72

دغ اص دا د ثش ب ي ث س ص سػب ي وبسثش ي س ا ذ دس د ؿ ي Programs س ي آ و يه ثش ب ي ث س ص سػب ي سا اػشا بيذ. اص آ ؼب و ثش ب ي اك ي ص لبث دػششػي يؼز ثش ب ي ث س ص سػب ي ث ػبي آ اػشا ي ؿ د $ؿى #3 ؿى 37: ا ي اػشاي ثش ب ثش ب ي ث س ص سػب ي اص شيك دبسا شش خي فش ب ش ػ ي ؿ د و آيب س ػي وبسثش اػشا ؿذ اػز يب اص داخ ثش ب ي اك ي. حب ز د ص ب ي ديؾ ي ايذ و ث س ص سػب ي ػذيذي داخ ة ػبيز شش ؿذ ثبؿذ. وذ صيش و ث ػ ا ثخي اص ثش ب ي ث س ص سػب ي داخ س يذاد Form_Load اػشا ي ؿ د- ب ي د ذ و چ س اػشاي ثبس ا سا اص اػشاي حب ز ث س ص سػب ي سخيق د ي. 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 سا سي سغييش ي د ذ و دس اػشاي ثؼذي و وبسثش ثش ب سا اص داخ د ؿ ي Program Files اػشا ي و ذ ثش ب ي اك ي اػشا ؿ د ثش ب ي ث س ص سػب ي. 73

ؿى 38: لت ثش ب اػشاي آ اص شيك ثش ب ي ث س ص سػب ي updater) (application دغ اص لت ثش ب س ػي ثش ب ي لت و ذ ثش ب ي اك ي ث س خ دوبس س ػي لت و ذ اؽ اػشا ي ؿ د. اي وبس ث حن دبيب ثش ب ي لت س ػي وبسثش اص شيك ضي ي Menu Exit ا ؼب ي ؿ د. وذ صيش ب ي د ذ و چ س ثش ب ي اك ي سا اص داخ ثش ب ي لت و ذ اػشا و ي. ا جش وذ صيش ي آ چ ؿ ب ث د جب ؾ ؼشيذ يؼز ي ي س ا يذ ث ساحشي آ سا دػشىبسي و يذ ثؼش ث يبص سب و صيبدؽ و يذ: 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) 74

MessageBox.Show("DVDsMobile.exe not found."); else if (exc.nativeerrorcode == ERROR_ACCESS_DENIED) MessageBox.Show("No permissions to start DVDsMobile.exe."); دس ل ؼ وذ ثبال ذيش س يذاد menuexit_click سا ي ثي يذ و سؼيي ي و ذ آيب ثش ب ي اك ي سا اػشا بيذ يب فمي اص ثش ب ي لت و ذ خبسع ؿ د. ا ش بسؽ ػذيذسش ثش ب لت ؿذ ثبؿذ ثش ب ي ث س ص سػب ي بسؽ ػذيذ سا اػشا ي و ذ ؿ بػ ي دشداصؽ يب ب process identification خ د سا ث داخ آ اسػب ي و ذ و ثش ب ي اك ي ثش ا ذ ثش ب ي ث س ص سػب ي سا اص حبفظ خبسع و ذ. ثب اي و دس ظب ش اي وبس هش سي ث ظش ي سػذ ا ب اص ظش اي و س ػ وبسثش سا ث اػشاي ثش ب ي ػذيذ ديؾ اص اس ب ثش ب ي فؼ ي ػ ت ي و ذ فيذ اػز. 75

ث س ص سػب ي ثش ب ش ثبس و ثش ب س ػي وبسثش اػشا ي ؿ د ي س ا ذ يه ة ػش يغ اص ب ة ػبيشي و ثش ب ي لت و ذ سا اص آ دا د وشدي فشاخ ا ي بيذ. ة ػش يغ ي س ا ذ ؿ بس ي آخشي بسؽ س ب ي اػ ج ي ب سد اػشفبد ثش ب سا اػال بيذ سب ثش ب ي اك ي آ ب سا ثب ؿ بس ي بسؽ بي خ دؽ مبيؼ و ذ. ا ش بسؽ بي ػذيذ دس ة ػبيز شش ؿذ ثبؿذ ثش ب يه اػال ث وبسثش ب ي د ذ و آيب ي خ ا ذ ثش ب سا ث س ص بيذ يب اي و بسؽ فؼ ي سا اػشا بيذ. اي وبس ثبػض ي ؿ د و آغبص اػشاي ثش ب و ي ال ي سش ؿ د ي ضيز اي سا داسد و وبسثش ي اص آخشي بسؽ اػشفبد ي و ذ. ثشاي ػبد سش ؿذ وبس ثش ب ي ب ك ث د يب ج د ؿجى سا ثشسػي ي و ذ. ا جش دس ثش ب ي الؼي ي س ا يذ ثب اػشفبد اص ا ىب بر Stat & Notification Broker اي ا ىب سا فشا بييذ. ؿى 39: ث س ص سػب ي خ دوبس دس ػ ثشاي دا د بسؽ ػذيذ ثش ب ثش ب ي ث س ص سػب ي اص شيك يه و شش ش س ش ة Browser) (Web خفي اسد ػبيز ي ؿ د ثش ب سا دا د ي و ذ. اػشفبد اص و شش ش س ش ة وبس دا د ثش ب سا ثذ يبص ث وبس اهبفي ثب ة ػش يغ ا ىب دزيش ي بيذ. وذ شث ى ث ة ػبيز سا دس اي مب اؿبس اي ىشد ا ي ؿ ب ي س ا يذ يه س ذ وب اص اي وبس سا دس ثخؾ فش ي ػشي مب ثجي يذ. دس وذ صيش ي ثي يذ و چ س ثش ب ي اك ي ثشسػي ي و ذ و آيب بسؽ ػذيذسشؽ شش ؿذ اػز يب : 76

private 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(); 77

دس اي ل ؼ وذ ذيش س يذاد Form_Load سا ثشاي ثشسػي اي و بسؽ ػذيذسش شش ؿذ اػز يب اػشفبد ي و ي. ثذي ظ س د شذ شث ى ث ة ػش يغ DVDsMocileUpdateService فشا خ ا ي ي ؿ ذ. دس ػي حب ثش ب ؿ بس ي بسؽ خ دؽ سا ي خ ا ذ ا ش بسؽ ػ د دس ػبيز ػذيذسش ثبؿذ يه د ؼش ي ديغب ثشاي وبسثش بيؾ داد ي ؿ د و اص يب د ضي ي ث س ص سػب ي اػشاي بسؽ فؼ ي يىي ا شخبة بيذ. ا ش وبسثش ضي ي ث س ص سػب ي سا ا شخبة بيذ ثش ب ي ث س ص سػب ي اػشا ي ؿ د ثش ب ي اك ي خ دؽ سا اص حبفظ خبسع ي و ذ. دغ اص لت بسؽ ػذيذ س ي دػش ب ثش ب ي ث س ص سػب ي بسؽ ػذيذ ثش ب ي اك ي سا اػشا ي بيذ. 78

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

مذ ص ب ي و ثشاي ي ذ ص ثبي ثش ب ي يؼيذ يه دشػؾ سا ب ا ثبيذ دبػخ د يذ. آيب ثش ب ث ك سر ح ي س ي دػش ب اػشا خ ا ذ ؿذ ثب دبػخ ث اي دشػؾ خق خ ا ذ ؿذ و آيب ش افضاس سحز ة بػت سش ؼز يب. ا ش دػش ب سد ظش فبلذ اسلب ئ ث اي شش ز اػز ش افضاس سحز ة اكال ث دسد خ ا ذ خ سد. ث ػجبسر ث شش ا ش دػش ب سد ظش ي ي س ا ذ ث ؿجى ي اي شش ز شل ؿ د ش افضاس سحز ة ا شخبة ث ششي اػز. يه ا شيبص ش افضاس سحز ة اي اػز و يبصي ذاسد حش ب س ي دػش ب ي ذ ص ثبي اػشا ؿ د اص شفي س ي يف ػيؼي اص دػش ب ب لبث اػشا اػز. دػش ب بي ي ذ ص ثبي ػذيذ ي اص ش افضاس بي سحز ة دشيجب ي ي و ذ اي سا ذي IEMobile ؼش ذ و ثش دبي ي ثشخي لبث يز بي اي شش ز اوؼذ سس ػبخش ؿذ اػز. دس دػش ب بي اخيش ي ذ ص ثبي وبسثشا دسػز ب ذ دػش ب بي دػىشبح اص اي شش ز اػشفبد ي و ذ. س ب سفب ر فمي ا ذاص ي و چه سش كفح ي بيؾ اػز. دس ه اص ا ىب بر AJAX ASP.NET 3.5 ثشاي و شش ؿذ سجبد داد ثي والي ز $دػش ب # ػش س اػشفبد ي بي ذ. اي ا ىب ث يظ دس اسلب اي شش ز ثب ػشػز و ب ذ GPRS ثؼيبس وبس سا ا ذاص اػز. دس اي مب ا الػبسي سا دس ثبس ي س ػؼ ي ش افضاس بي سحز ة ثبي س ظي ثش ب ي ة ثشاي دشيجب ي اص AJAX دس بيز اػشفبد اص و شش بي ش س ش داخ دش ط ي Smart Device يظ ا اػش دي خ ا يذ ديذ. ش افضاس بي سحز ة دشيجب ي اص ي ذ ص ثبي دػش ب بي ي ذ ص ثبي اص ب ا ش س ش ة داؿش ذ ي سب ديؾ اص اساي ي ي ذ ص ثبي 6 ا ىب بر ش س ش زو س ثؼيبس حذ د ثش ج بي بسؽ بي لذي ي سش اي شش ز اوؼذ سس ث د. آخشي بسؽ $دس ص ب سأ يف اي مب # ش س ش ي ذ ص ثبي ثب ب Internet Explorer Mobile 6 يه ش س ش ثب ا ىب بر وب اػز و ويفيز ثبالي وبس ثب ش س ش ة دس دػش ب بي دػىشبح سا ثشاي وبسثش ث اس غب ي آ سد. اي ش س ش ث ششي ػبص بسي سا ثب س ب ي بسؽ بي ش س ش بي ي ذ ص ثبي داسد. ا ىب بر ػذيذ ديشفش ي آ ث وبسثشا و ه ي و ذ و وبس ؿب سا ث ػشػز ا ؼب د ذ و دس صيش ث آ ب اؿبس ي و ي : دشيجب ي اص Jscript بسؽ 5.7 اي شش ز اوؼذ سس 8 و ث س ػؼ د ذ ب ا ىب ي د ذ اص لبث يز AJAX ب ذ دػىشبح دس ي ذ ص ثبي اػشفبد بي ذ. اي شش ز اوؼذ سس ثبي 6 ا ىب بيؾ ش د حب ز يظ ي ثبي ؼ ي ة ػبيز ب سا داسد. اي شش ز اوؼذ سس ثبي 6 ثؼش ث س ظي وبسثش ي س ا ذ ث ك سر ش س ش دػىشبح يب ش س ش ثبي ػ و ذ. وبسثشا ي س ا ذ اص ا ىب بر كفح ي ؼي چ ي حب ز بي خش ف ثضسي بيي (Zoom) اػشفبد بي ذ. 80

حب ز بي خش ف بيؾ ة ػبيز ص ب ي و وبسثش يه ة ػبيز سا ثبص يب يه ثش ب ي سحز ة سا اػشا ي بيذ ش س ش والي ز س ػي يه شغيش سؿش اي UserAgent ؿ بػبيي ي ؿ د ثؼش ث مذاس شغش زو س ش افضاس سحز ة ا ىب بر ثيشش يب و ششي $ ب ذ دشيجب ي اص #AJAX سا ثشاي والي ز فشا ي و ذ. آخشي بسؽ ي ذ ص ثبي بسؿي اص اي شش ز اوؼذ سس سا اػشفبد ي بيذ و ث ساحشي ي س ا ذ ث ػبي ش س ش دػىشبح يب ي ذ ص ثبي ؿ بػبيي شدد. ثشاي اي وبس وبفي اػز و اص ي داخ اي شش ز اوؼذ سس ثبي ضي ي شث ى ث آ سا ا شخبة و يذ. ؿى 40: ثش ب ي اي شش ز اوؼذ سس 6 ثبي دس حب ز بيؾ دػىشبح ثبي دس ؿى 1 ح ػ ئيچ وشد ثي حب ز بي دػىشبح ثبي سا ي ثي يذ. دس ثخؾ ػ ي ؿى 1 اي شش ز اوؼذ سس دس حب ز ي ذ ص ثبيژ اػشا ي ؿ د و بيؾ ة ػبيز سا ثشاي دػش ب ي ذ ص ثبي ث ي وشد اػز. دس ثخؾ ػ ز ساػز ؿى 1 يض ب ة ػبيز سا ايژ ثژبس دس حب ز دػىشبح ب ذ ي و يذ. ثب اي ى ك ف ح ي بيؾ و و ش ش ا ػ ز يى وژب سث ش ژب حب ژ ز ش س ژ ش ي ژذ ص د ػژى شب ح س ا د ا سد. د س يژ ه دػش ب ثب ا ىب كفح ي ؼي ػب ث ػبيي دس كفح ي ة خي ي ساحز سش ا ؼب ي ؿ د. سخيق لبث يز بي ش س ش ثشاي سخيق ا ىب بر ش س ش والي ز ي س ا يذ اص يه شغيش سؿش اي 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) و ا ي ثشاي حب ز ثبي د ي ثشاي حب ز دػىشبح اػز. 81

ا ش ش س ش دس حب ز دػىشبح اػشا ؿ د ث س خ دوبس ا ىب بر AJAX سا خ ا ذ داؿز. ا ش ش س ش دس حب ز ثبي اػشا ؿ د ثبيذ والي ز ث ػش س اػال و ذ و ي س ا ذ دس حب ز ػبص بس ثب ie5 اػشا ؿ د. ش ش س ش س ي ي ذ ص ثبي و بسؽ IEMobile آ 6.12 يب ثبالسش ثبؿذ اي ػبص بسي سا داسد. ثشاي اػال ػبص بي ي س ا يذ اص ل ؼ وذ صيش اػشفبد بييذ: 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: سخيق ا ىب بر اي شش ز اوؼذ سس ثبي ا ش بسؽ اي شش ز اوؼذ سس ثبي 6.12 يب ثبالسش ثبؿذ ي س ا ي س ػي ل ؼ وذ صيش ا ىب بر ش س ش والي ز سا ث ػش س ا الع د ي. اي وبس سا دس ثخي اص شذ FrameworkInitialized داخ ش افضاس سحز ة ا ؼب ي د ي. س ػ داؿش ثبؿيذ و اي وبس يه ثبس ا ؼب ي ؿ د. ش ثبس و ديغب postback دسيبفز ؿ د ثشاي ث ب ثبس زاسي ؼذد (refresh) ثخي اص كفح يبصي ث مذاس د ي ClientTarget يؼز چ ػش س اص مذاس آ غ ؿذ اػز. protected override void FrameworkInitialize() base.frameworkinitialize(); if (!IsPostBack) if (IsIEMobileWithAjaxSupport(Request.UserAgent)) ClientTarget = "ie5"; وذ 8: اسػب ا الػبر ش س ش والي ز ث ػش س 82

سخيق ي ذ ص ثبي اػشب ذاسد اص دش ف ب اص آ ػب و ش د بسؽ اػشب ذاسد دش ف ب ي ذ ص ثبي مذاس يىؼب ثشاي UserAgent ثش ي شدا ذ ؿ ب ثبيذ اص س ؽ دي شي ثشاي سخيق ع دػش ب اػشفبد بييذ. دس يه دسخ اػز ش س ش ا الػبر اهبفي يض ث ػش س اسػب ي شدد. يىي اص اي ا الػبر ا ذاص ي كفح ثش ج بي ديىؼ اػز. سفب ر اك ي دس اي ػب اػز. ثش خالف ثش ب بي Smart Client ش افضاس بي سحز ة ثشاي ش د ع اػشب ذاسد دش ف ب ي ذ ص ثبي اص و شش بي يىؼب ي اػشفبد ي بي ذ. د ي ؾ آ اػز و ش س ش اي شش ز دس ش د ي آ ب يىؼب اػز. ث ب ثش اي يه ش افضاس سحز ة دس دػش ب ي ذ ص ثبي اػشب ذاسد ي س ا ذ داساي دو (button) ثبؿذ. ؿ ب ث ساحشي ثب دو بي ػبثؼبيي ي س ا يذ س ي دو ي سد ظش سب سفش ثب دو ي او س ي ا و يه و يذ. في ذ ذس ("UA-Pixels") سؼذاد الؼي ديىؼ ب سا ثش ي شدا ذ يؼ ي دس د حب ز سفىيه شافيىي ثبال ؼ ي مبديش دسػز سا ثش ي شدا ذ. ثشاي س ظي ش س ش دس حب ز بيؾ ث ي ثبيذ اص ثشچؼت (tag) MobileOptimized اػشفبد بييذ و ا ذاص ي كفح ي بيي سا و ش افضاس جك آ س ػؼ داد ؿذ اػز خق بيذ. وذ صيش داخ ثش ب ثشچؼت 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: س ظي ػشم ػ ز ساػز كفح ثشاي ساحشي وبسثش ثب اػشفبد اص ا الػبر Request.Header ي س ا يذ دػش ب بي خش ف سا سخيق داد حب ز بيؾ سا ثشاي ع دػش ب ث ي و يذ. 83

دس ؿى 2 ب كفح ي ة سا ي ثي يذ و ثشاي بيؾ دس د دػش ب اػشب ذاسد دش ف ب ي ذ ص ثبي ث ي ؿذ اػز. ؿى 41: ثبس زاسي كفح دس ا ذاص ي ف ز شفب ر دس دػش ب بي خش ف ل ؼ وذ صيش ب ي د ذ و چ ي س ا يذ ا ذاص ي ل و شش بي ة سا ثؼش ث دػش ب ث يظ ػشم كفح ي بيؾ دػش ب ي و ثش ب س ي آ اػشا ي شدد سغييش د يذ. دس اي ػب ثبيذ اص ا ىب بر ASP.NET 3.5 ثبؿيذ اي و ي س ا يذ خلبر و شش ب سا دس فبي وذ دغ ص ي behind) (code سغييش د يذ. 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; Label4.Font.Size = System.Web.UI.WebControls.FontUnit.Small; 84

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: س ظي ا ذاص ي ف ز ش بػت ثب ذ دػش ب والي ز ي ثي يذ و اي شش ز اوؼذ سس ثبي آخشي سى طي بي ػ د دس بسؽ دػىشبح سا سيض دشيجب ي ي و ذ و اغ ت ا ىب بر ASP.NET 3.5 سا دس ثبي دس اخشيبس سب لشاس داد اػز. سشويت ة اػ بسر والي ز ا ش يه ثش ب ي اػ بسر والي ز Client) (Smart س ػؼ ي د يذ ثبيذ اص يه و شش ش س ش Control) (Browser اػشفبد و يذ. و شش ش س ش دس آخشي بسؽ ي ذ ص ثبي ث ؿ ب ا ىب اػشفبد اس ش س ش ة دس دػششع سا ي د ذ اي يؼ ي ا ىب اػشفبد اص ASP.NET 3.5 ا ىب بر AJAX اص داخ يه ثش ب ي اػ بسر والي ز. سشويت ة اػ بسر والي ز اي ا ىب سا ي د ذ و وبسثش حشي ثذ اسلب ث ؿجى يض ثش ب سا اػشا بيذ. ا ش اسلب ؿجى ثشلشاس ثبؿذ وبسثش ي س ا ذ اص و شش ش س ش اػشفبد بيذ ظال ث داد بي ثب ه ا الػبسي س ي ػش س دػششػي ديذا و ذ. اي يظ ي ظال دس حب شي و چ ذ وبسثش ث س ص ب س ي داد بي يىؼب ي دس ثب ه ا الػبسي وبس ي و ذ اص سذاخ ديؾ يشي ي بيذ چ اي وبس وب ال س ػي ػش س ا ؼب ي ؿ د. ا شيبص دي ش اي س ؽ ث ب دشداصؽ بي ػ ي اص داخ يه و شش ش س ش خ دؽ سا ب ي د ذ ظال ثشاي دسيبفز ا الػبر م بي ص ي ي. ث ػبي اػشفبد اص ة ػش يغ ؿ ب ي س ا يذ س ب ػ يبر ػش سي سا داخ يه و شش ش س ش ا ؼب د يذ. و شش ش س ش و دس ثش ب ي اػ بسر والي ز خ د اص آ اػشفبد ي و يذ ب مذاس UserAgent ش س ش ؼشم اي شش ز اوؼذ سس ثبي سا ثش ي شدا ذ. ا ب و شش ش س ش سا ي س ا ث حب ز ثبي ؼشفي وشد. اص آ ػب و دػش ب ي ذ ص ثبي كفح بيؾ و چىي داسد ى اػز ثخ ا يذ كفحبر خبكي سا ثشاي سشويت و شش ش س ش دس داخ يه ثش ب ي اػ بسر والي ز ايؼبد بييذ. وذ ي صيش يه ثش ب ي وب سا سب ي د ذ و اسلب ؿجى اي شش ز سا سخيق ي د ذ دس ك سر ك ث د دػش ب ا ىب بيؾ يه كفح ي ة حب ي ا الػبر دس داخ يه و شش ش س ش ؼز. ا ش ؿجى ل غ ؿ د وبسثش ي س ا ذ آدسع بي ػذيذ سا اسد بيذ ي ي س ا ذ كفحبر آ ب سا ش س بيذ. ا جش اي ظب ثؼيبس ػبد اػز دس ي ثش ب ي الؼي ا ىب بر ثيششي ي س ا يذ لشاس د يذ. 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; 85

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: يه ثش ب ي وب اػ بسر والي ز و اسلبالر ؿجى سا سخيق ي د ذ سشويت اػ بسر والي ز شا ثب ة دس لغ ث ششي حب ز اص د س ؽ سا دس اخشيبس سب لشاس ي د ذ. ؿ ب ي س ا يذ ث ش سي وبسثش شا ثب س ا دشداصؽ سا س ي ػش س لشاس د يذ. ا ش داد ب ث س شوضي رخيش ؿ ذ ي س ا يذ يه وذي ح ي اص آ ب سا $حشي اص شيك ة ػش يغ# دا د و يذ. اي س ؽ ؼأ ي سذاخ سا ح ي و ذ يضا داد بي لبث دػششع س ي دػش ب ي س ا ذ ث ب مذاس سد يبص وبسثش حذ د شدد. اي وبس كشفب ثشاي كشف ػ يي فوبي حبفظ دػش ب يؼز ث ى ث حب ا يشي يض اػز چ ثبػض ي ؿ د داد بي حؼبع و ششي دس ش ص ب س ي دػش ب لبث دػششع ثبؿ ذ. ؿى 42: ثش ب ي سحز ة اص داخ يه ش س ش ث ك سر ثخي اص يه ثش ب ي اػ بسر والي ز 86