You are on page 1of 88

http://m0911.wordpress.com

 

ُيبثٛٔ صٚذٙيٚ ُٔبػ ٓشؼيػ ياشث ساضفا ْش٘ ٝؼػٛس

ٖاٛٙػ

Windows Mobile Application Development

 

يّكا ٖاٛٙػ

C#, Win Mobile, .NET, Dev, WinForm, GPS, Custom Control, XML, , SQL- Server, SQL-CE, AJAX, Web

 

يذيّو ربّٕو

 

فِؤٔ

 

غػشٔ

 

يذشجٔ

حٌػ

 

(http://m0911.wordpress.com) يِّٟاذجػ يذٟٔ

ٓػششٔ

 

1389 ٜبٔشيس 20

دذؼٔ سبـش٘ا خيسبس

 

88

ٝحفك داذؼس

 

#يػسبف$ بٞ ُلف ٗيٚبٙػ

 

ٝٔب٘شث ٗيشؼخ٘ دبؼيا صبػ ٝيجؿ زيشيذٔ ٚ ٜبٍشػد صبػ ٝيجؿ WinForm بث ٝٔب٘شث ي ٝؼػٛس GPS صا ٜدبفشػا ٚ يؿسبفػ َششٙو ٖدٚضفا SQL Server CE شث يا ٝٔذمٔ ساضفا ْش٘ تل٘ ٚ ٜبٍشػد زيٙٔا ُيبثٛٔ ةٚ ياشث ٝؼػٛس

.1

 

.2

.3

.4

.5

.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

ٓػششٔ ي ٝٔذمٔ

ٝث ؾخث 1389 ٗيدسٚشف ٚ 1388 ذٙفػا سد ٝو زػا ُيبثٛٔ صٚذٙيٚ يؼيٛ٘ ٝٔب٘شث يشٕؼل 7 ي ِٝبمٔ يشػ هي ُكا سد يىي٘ٚششىِا ةبشو ٗيا

.ٓيبٕ٘ شـ٘ صبث ٚ يسٚآدشٌ ُيبف هي سد اس ٕٝٞ ٝو ْداد حيػشس ٖبٌذٙ٘اٛخ سبو يشحاس ياشث ٗىيِ .ْدٕٛ٘ شـشٙٔ ٌٓلاثٚ سد ٚ ٕٝػشس ؾخث

صا .زػا ٜدٕٛ٘ شـشٙٔ ٚ ذيِٛس اس ُيبثٛٔ صٚذٙيٚ ٝو ي٘بذٕو ٖبٕٞ يٙؼي .ذٙشؼٞ زفبػٚشىئ ي٘بذٕو ٖبٙوسبو صا ِٝبمٔ ٝػٕٛؼٔ ٗيا ٖبٌ ٜذٙؼيٛ٘

.دٛث ذٞاٛخ ذٙٔدٛػ ،ذ٘ٛـث ُيبثٛٔ صٚذٙيٚ يبي٘د دساٚ ذٙٞاٛخ ئ ٝو ي٘بؼيٛ٘ ٝٔب٘شث ياشث شطا ٗيا ربيٛشحٔ ٚ تِبٌٔ ٝو ٓٙئٌٕٔ ٚس ٗيا

ُيٕيا عسدآ ٝث بي http://m0911.wordpress.com ٌٓلاثٚ عسدآ كيشً صا اس دٛخ دبٟٙـيد ٚ شظ٘ ٝو ذؿ ٓٞاٛخ َبحؿٛخ

.ذييبٔشف َبػسا mehdi.abd@gmail.com

1

http://m0911.wordpress.com

ةلاطم تسرهف

4

تسخن لصف

5

ساضفا ْش٘ ٝؼػٛس يفبها يبٞ ساضثا ٚ 2008 ٛيدٛشػا َاٚظيٚ تل٘

7

ُيبثٛٔ صٚذٙيٚ ي ٝٔب٘شث ٗيشؼخ٘ دبؼيا

11

مود لصف

11

ٜبٍشػد صبػ ٝيجؿ فّشخٔ يبٞ ؽسبٍ٘

11

2008 ٛيدٛشػا َاٚظيٚ ُخاد صا ٜبٍشػد صبػ ٝيجؿ ياشػا

14

ٜبٍشػد صبػ ٝيجؿ ربلخـٔ ٓيظٙس

15

ٜاشٕٞ ٗفّس صبػ ٝيجؿ ٚ ٜبٍشػد صبػ ٝيجؿ صا ٖبٔص ٓٞ ي ٜدبفشػا

16

ٜاشٕٞ ٗفّس صبػ ٝيجؿ ُخاد َبلسا ٖدشو زػسد

17

هٔبيد زفبيسد ٚ َبػسا

11

ٜبٍشػد صبػ ٝيجؿ شيذٔ ي ٝٔب٘شث يػٛس ٜبٍشػد صبػ ٝيجؿ َششٙو

11

يذؼث يبٞ ٜدبفشػا ياشث ٜبٍشػد صبػ ٝيجؿ ربٕيظٙس ي ٜشيخر

12

فّشخٔ يشيٙٔا ربٕيظٙس ؾيبٔصآ ياشث ٜبٍشػد صبػ ٝيجؿ صا ٜدبفشػا

11

صبػ ٝيجؿ شيذٔ يصبػ سبودٛخ

14

موس لصف

15

دساذ٘بشػا

ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد

15

يا ٝفشح 6 ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد

16

يا ٝفشح 6 ُيبثٛٔ صٚذٙيٚ سد ٜدبػ شثسبو يػاٚ هي يحاشً

17

ذؿبث سبٌصبػ ؾيبٕ٘ ٝحفك فّشخٔ يبٞ زٟػ بث ذ٘اٛشث ٝو يساضفا ْش٘ دبؼيا

17

بٞ َششٙو ٖدشو زثبط بي يـوذٙث

12

ذٙو سبو فّشخٔ يبٞ ٜبٍشػد يٚس ٝو يا ٝٔب٘شث يحاشً

11

بٞ ْشف يشث صسا

14

ٓشؼيػ غثبٙٔ ٝث ٝػٛس

16

مراهچ لصف

17

ٖبسدٛخ ي ٝٔب٘شث ٝث يؿسبفػ يبٞ َششٙو ٖدٚضفا

17

#يؿسبفػ$ شثسبو يبٞ َششٙو

11

ٜذؿ يشث صسا يبٞ َششٙو

41

يؿسبفػ يبٞ َششٙو

44

ٝٔب٘شث هي ُخاد يؿسبفػ َششٙو صا ٜدبفشػا

2

http://m0911.wordpress.com

45

ٝٔب٘شث ٝث ييبيفاشغػ ُحٔ ٝث ىٛثشٔ ربػلاًا ٖٚدضفا

41

يؿصادشد ذٙچ ي ٝٔب٘شث هي سد شثسبو يػاٚ يبٞ َششٙو ي٘بػس صٚس ٝث

41

ييبيفاشغػ ُحٔ ٝث عبؼح يبٞ ٝٔب٘شث ؾيبٔصآ

51

مجنپ لصف

51

SQL Server Compact Edition

51

SQL Server 2005 Compact Edition زخبػ شيص

51

عٛ٘ ياساد يبٞ زػبشيد صا ٜدبفشػا

51

ٜداد عٛ٘ بث SqlCeResultSets صا ٜدبفشػا

51

ٜداد عٛ٘ بث يبٞ SqlCeResultSet :31 ُىؿ

65

مشش لصف

66

ٝٔذمٔ

66

ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد سد زيٙٔا

66

ساضفا ْش٘ تل٘ يبٞصٛؼٔ

67

ساضفا ْش٘ يبٞ ٝيذييأس

67

ساضفا ْش٘ يػششػد حٌٛػ

67

ٜبٍشػد يشيٙٔا ربٕيظٙس

61

DLL ي ٝ٘بخثبشو يبٞ ُيبف ٚ اشػا صٛؼٔ

61

يشيٙٔا ربٕيظٙس فّشخٔ يبٞ زِبح سد ٝٔب٘شث ؾيبٔصآ

71

ٝٔب٘شث تل٘

71

بٞ ٝٔب٘شث ي٘بػس صٚس ٝث

71

ذيذػ ي ٝٔب٘شث هي تل٘

76

ٝٔب٘شث ي٘بػس صٚس ٝث

76

ُٕػ سد سبودٛخ ي٘بػس صٚس ٝث :39 ُىؿ

71

متفه لصف

12

ُيبثٛٔ صٚذٙيٚ صا ي٘بجيشـد ٚ ةٚ زحس يبٞ ساضفا ْش٘

11

زيبػ ةٚ ؾيبٕ٘ فّشخٔ يبٞ زِبح

11

شٌسٚشٔ يبٞ زيّثبل قيخـس

11

َبٙـفٚشد صا دساذ٘بشػا ُيبثٛٔ صٚذٙيٚ قيخـس

17

ریواصت تسرهف

3

http://m0911.wordpress.com

همانرت نيتسخن داجيا

4

تسخن لصف

http://m0911.wordpress.com

ٝٔذمٔ ٜذؿ زيشيذٔ يبٞذو بي (C/C++) يِٕٛؼٔ يبٞ ٖبثص ٝث ييبٞساضفا ْش٘ ٝو ذٞد ئ اس ٖبىٔا ٗيا بٕؿ ٝث يا ٝفشح ؽسبٍ٘ 2008 ٛيدٛشػا َاٚظيٚ .ذيٞد ٝؼػٛس ُيبثٛٔ صٚذٙيٚ ُٔبػ ٓشؼيػ بث يبٞ ٜبٍشػد ياشث (C#/Visual Basic .NET)

ٝٔب٘شث ٗيشؼخ٘ ٚ ذيٙو تل٘ ُيبثٛٔ صٚذٙيٚ سد ساضفا ْش٘ ي ٝؼػٛس يبٞساضثا بث ٜاشٕٞ اس 2008 ٛيدٛشػا َاٚظيٚ ٝو ذيشيٌ ئ دبي بٕؿ ِٝبمٔ ٗيا سد ؾيبٔصآ ٖبىٔا ٝو ذيٛؿ ئ بٙؿآ ُيبثٛٔ صٚذٙيٚ ٜبٍشػد صبػ ٝيجؿ بث ٜٚلاػ ٝث .ذييبٕ٘ دبؼيا ُٔبػ ٓشؼيػ ٗيا 6 ؽسبٍ٘ ياشث اس دٛخ ُيبثٛٔ صٚذٙيٚ لاظٔ$ ُيبثٛٔ صٚذٙيٚ يؼلاٚ ٜبٍشػد هي ،يىيضيف سًٛ ٝث سبو ٗيا ياشث ٝو ذيشؼي٘ سٛجؼٔ بٕؿ ٚ ذٞد ئ بٕؿ ٝث اس ُيبثٛٔ صٚذٙيٚ يبٞ ٝٔب٘شث .ذيؿبث ٝشؿاد #Smart Phone بي Pocket PC

ساضفا ْش٘ ٝؼػٛس يفبها يبٞ ساضثا ٚ 2008 ٛيدٛشػا َاٚظيٚ تل٘ صٚذٙيٚ ساضفا ْش٘ ي ٝؼػٛس ياشث Smart Device Development ي ٝٙيضٌ ،ذييبٕ٘ تل٘ مشف ؾيد ربٕيظٙس بث اس 2008 ٛيدٛشػا َاٚظيٚ شٌا ذٙٞد ئ ؾيبٕ٘ ي٘بػس صٚس ٝث ياشث هٙيِ هي تل٘ صا غد (MSDN) ٖآ يبٕٙٞاس ٚ ٛيدٛشػا َاٚظيٚ ي ٝٔب٘شث ٚد شٞ .دٛث ذٞاٛخ َبؼف ُيبثٛٔ .ذييبٕ٘ تل٘ اس بٞ هد غيٚشػ ٚ بٞ ي٘بػس صٚس ٝث ٗيشخآ ٖآ صا ٜدبفشػا بث ٓٙو ئ ٝيكٛس ٝو شٞ سد ٝٙيضٌ ٗيا .ذييبٕ٘ ةبخش٘ا اس Smart Device Project ي ٝٙيضٌ File New Project يٛٙٔ صا ٛيدٛشػا َاٚظيٚ ييحٔ ٝث دٚسٚ صا غد

ئ دبؼيا 6 ؽسبٍ٘ ُيبثٛٔ صٚذٙيٚ سد C# ٖبثص ٝث ٜطٚشد هي بٕؿ ٝو ٗيا مشف بث .زػا يػششػد ُثبل Visual Basic .NET ٚ C# ٖبثص ٚد .ذييبٕ٘ ةبخش٘ا اس Smart Device ،ٜدشو صبث اس C# ي ٝٙيضٌ Project Types ي ٜشؼٙد سد سٛظٙٔ ٗيذث .ٓيٞد ئ ٝٔادا اس تٌّٔ ذييبٕ٘ ُحٔ ٚ ْب٘ ٝو زؼ٘اٛس ذيٞاٛخ بٕؿ َبح ٗيػ سد ٚ ددشٌ ئ ٗييؼس مشف ؾيد سًٛ ٝث ٖآ يصبػ ٜشيخر ُحٔ ٚ ْب٘ بٞ ٜطٚشد عاٛ٘ا ي ٝيمث ذٙ٘بٕٞ زٟػ Add New Smart Device Project ٖاٛٙػ بث ذيذػ ي ٜشؼٙد ربػلاًا ٗيا ذييأس صا غد .ذييبٕ٘ ٗييؼس ٖبس ٜطٚشد ياشث اس دٛخ ٜاٛخِد

ي ٛؿصبث زػشٟف ،ُيبثٛٔ صٚذٙيٚ ي ٝٔب٘شث ٗيشؼخ٘ دبؼيا صا ُجل .دٛؿ ئ ٜداد ؾيبٕ٘ ُيبثٛٔ صٚذٙيٚ يبٞ ٜطٚشد فّشخٔ عاٛ٘ا ٖدشو ٝفبها

صٚذٙيٚ يبٞ ٜبٍشػد صا يدٚذحٔ عاٛ٘ا يمف ،ذيؿبث ٜدشو تل٘ دساذ٘بشػا رسٛك ٝث اس 2008 ٛيدٛشػا َاٚظيٚ شٌا .ذيٙو صبث اس Target Platform

ي ٝؼػٛس ساضثا ذيبث ذييبٕ٘ دبؼيا ٜطٚشد سٛوزٔ ٓشؼيػ سد ذي٘اٛشث ٝو ٗيا ياشث .زؼي٘ بٟ٘آ ٗيث Windows Mobile 6 ٝو ذيد ذيٞاٛخ اس ُيبثٛٔ

شيٚبلس ،يا ٝ٘بخثبشو يبٞ ُيبف ،َبظٔ يبٞ ٝٔب٘شث ،راذٙشؼٔ ُٔبؿ ٝؼػٛس ساضثا ٗيا .ذيؿبث ٜدشو تل٘ اس Windows Mobile 6 SDK يٙؼي ٖآ ساضثا ٗيا .ذيٙو ذيِٛس اس ٖبسشظ٘ دسٛٔ يبٞ ٝٔب٘شث ذي٘اٛشث بٟ٘آ هٕو ٝث بس ذيبٕ٘ ئ ٝفبها ٛيدٛشػا َٚظيٚ ٝث اس ْصلا يبٞ ساضثا ٚ صبػ ٝيجؿ ييحٔ ساضثا .ذ٘ا ٜذؿ ساصبث ي ٝ٘اٚس ٚ ذيِٛس ُمشؼٔ رسٛك ٝث ٚ ،ساصبث ٝث ٛيدٛشػا َاٚظيٚ ٝياسا صا ذؼث ٖٛچ ذيؿبث ٜدشو تل٘ ذيبث اضؼٔ رسٛك ٝث اس ٝؼػٛس

هٙيِ Add New Smart Device Project ي ٜشؼٙد ٗييبد سد .دٛث ذٞاٛخ عششػد ُثبل بٞذؼث ضي٘ شس عٛٙشٔ ٚ شسذيذػ (SDK) ٝؼػٛس يبٞ زفبيسد ٝحفك ٗيا صا ذي٘اٛس ئ اس شسذيذػ يبٞساضثا ٝو دساد ساشل Windows Mobile Developer Center يش٘ششٙيا ي ٝحفك ٝث دٚسٚ ذيبث ذيا ٜدٕٛ٘ تل٘ اس 2008 ٖآ صا غد ٚ تل٘ 2005 ٛيدٛشػا َاٚظيٚ ييحٔ سد اس Windows Mobile 6 ي ٝؼػٛس ساضثا ُجل صا شٌا .ذييبٕ٘ .دٛث ذٞاٛخ٘ عششػد ُثبل 2008 ييحٔ سد ٝ٘شٌ ٚ ذيٙو تل٘ دذؼٔ اس ٝؼػٛس ساضثا

5

http://m0911.wordpress.com

http://m0911.wordpress.com New Smart Device Project ي ٜشؼٙد :1 ُىؿ ي ٝٔب٘شث ٗيشؼخ٘ ذي٘اٛس

New Smart Device Project ي ٜشؼٙد :1 ُىؿ

ي ٝٔب٘شث ٗيشؼخ٘ ذي٘اٛس ئ ذيا ٜدشو تل٘ اس 6 ُيبثٛٔ صٚذٙيٚ ي ٝؼػٛس ساضثا Professional ٚ Standard ؽسبٍ٘ ٚد صا يىي ُلاذح شٌا َبح .ذيؼيٛٙث 6 ُيبثٛٔ صٚذٙيٚ ُٔبػ ٓشؼيػ بث ٜبٍشػد ياشث اس دٛخ

6

http://m0911.wordpress.com

ُيبثٛٔ صٚذٙيٚ ي ٝٔب٘شث ٗيشؼخ٘ دبؼيا

صٛٙٞ بٕؿ ٝشجِا .ذييبٕ٘ ةبخش٘ا Target Platform ؾخث سد اس Windows Mobile 6 Professional SDK ي ٝٙيضٌ ذيبث ٝٔب٘شث ٗيا ياشث

ساضثا ؽسبٍ٘ ٚد شٞ تل٘ بث .ذيؼيٛٙث ٝٔب٘شث Windows CE ئٕٛػ يبٞ ٜبٍشػد ٚ ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد صا يدبيص داذؼس ياشث ذي٘اٛس ئ

:ذيؼيٛٙث ٝٔب٘شث شيص يبٞ ٜبٍشػد ياشث ذي٘اٛس ئ بٕؿ 2008 ٛيدٛشػا َاٚظيٚ سد 6 ُيبثٛٔ صٚذٙيٚ ي ٝؼػٛس

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 ُٔبو نسٚ ٓيشف صا يا ٝػٕٛؼٔ شيص ٝو .NET Compact Framework فّشخٔ ؽسبٍ٘ ٚد بث ذي٘اٛس ئ ٛيدٛشػا َاٚظيٚ سد

ٚ 2.0 يبٞ ؽسبٍ٘ سد اس .NET Compact Framework .ذيؼيٛٙث ٝٔب٘شث زػا (Smart Device) ذٕٙؿٛٞ يبٞ ٜبٍشػد ساضفا ْش٘ ذيِٛس

.ذييبٕ٘ ٜدبفشػا 2008 ٛيدٛشػا َاٚظيٚ ييحٔ سد ذي٘اٛس ئ 3.5

2005 ٛيدٛشػا َاٚظيٚ ذيبث ذيؼيٛٙث ٝٔب٘شث .NET Compact Framework يّجل يبٞ ؽسبٍ٘ بي شس يٕيذل يبٞ ٜبٍشػد ياشث ذيٞاٛخ ئ شٌا

ٓشؼيػ هي سد اس 2008 ٚ 2005 يبٞ ؽسبٍ٘ ٖبٔص ٓٞ ذي٘اٛس ئ بٕؿ ٗىيِ .ذؿبث ئ تٌّٔ ٗيا ي ّٝكٛح صا عسبخ ٝشجِا ٝو ذيٙو تل٘ اس

.ذييبٕ٘ تل٘

:ذيٞد ْبؼ٘ا اس شيص ُحاشٔ Smart Device ي ٜطٚشد هي دبؼيا ياشث

.ذيٛؿ 2008 ٛيدٛشػا َاٚظيٚ ييحٔ دساٚ

.1

.ذييبٕ٘ ةبخش٘ا File->New يٛٙٔ صا اس Project ي ٝٙيضٌ

.2

.ذييبٕ٘ ةبخش٘ا اس Smart Device غذػ ٚ Visual C# اذشيا Project types ؾخث سد

.3

عٛ٘ ،ٖآ سد ٝو دٛؿ ئ ٜداد ؾيبٕ٘ 1 ُىؿ كثبٌٔ يشٍيد ي ٜشؼٙد .ذي٘ضث اس OK ،ٜدشو ٗييؼس اس ٖآ يصبػ ٜشيخر ُحٔ ٚ ٜطٚشد ْب٘

.4

.دشو ذيٞاٛخ ٗييؼس .NET Compact Framework ؽسبٍ٘ ٚ (Target platform) ٜدبفشػا دسٛٔ ساضثا ،(Template) ٜطٚشد

.ذييبٕ٘ ةبخش٘ا Windows Mobile 6 Professional SDK ي ٝٙيضٌ Target Platform ؾخث سد

.5

ةبخش٘ا اس .NET Compact Framework Version 3.5 ي ٝٙيضٌ .NET Compact Framework version زػشٟف صا

.6

.ذييبٕ٘

.ذييبٕ٘ ةبخش٘ا اس Device Application يٍِٛا Templates زػشٟف صا

.7

:ُٔبؿ ٝو ،دٛؿ ئ دبؼيا Smart Device solution ي ٜطٚشد ذيدص اس OK ٗيا صا ذؼث

.8

.ٝٔب٘شث سد ٜدبفشػا دسٛٔ يبٞ يّجٕػا ٝث ىٛثشٔ يبٞ غػشٔ

.ذييبٕ٘ ئ ٜشيخر ٜذ٘ٚشد ٗيا سد اس ٖآ ؽسبٍ٘ ٚ يساضفا ْش٘ َٛلحٔ ،زوشؿ ربػلاًا ٝو AssemblyInfo.cs ي ٜذ٘ٚشد

.زػا ٝٔب٘شث ي ٝيِٚا يشثسبو يػاٚ ياشث C# َاٚظيٚ ٖبثص ٝث ذو يٚبح ٝو Form1.cs ي ٜذ٘ٚشد

.زػا بٕؿ ي ٝٔب٘شث ياشػا عٚشؿ ي ٌٝم٘ غلاٚ سد ٝو C# َاٚظيٚ ٖبثص ٝث ذو يٚبح Program.cs ي ٜذ٘ٚشد

7

http://m0911.wordpress.com

.ذيد ذيٞاٛخ شيص رسٛك ٝث اس 2008 ٛيدٛشػا َاٚظيٚ ْشف يحاشً ييحٔ بٕؿ ،ذؿبث ٝشفس ؾيد ةٛخ ضيچ ٕٝٞ شٌا

،ذؿبث ٝشفس ؾيد ةٛخ ضيچ ٕٝٞ شٌا 2008 ٛيدٛشػا َاٚظيٚ ْشف يحاشً ييحٔ

2008 ٛيدٛشػا َاٚظيٚ ْشف يحاشً ييحٔ :2 ُىؿ

بث ُيبثٛٔ ٜبٍشػد هي ُىؿ ٝو ٝحفك خچ زٕػ يسضث ؾخث .ذيٙيث ئ اس 2008 ٛيدٛشػا َاٚظيٚ يحاشً ييحٔ صا ٟٓٔ ؾخث ذٙچ 2 ُىؿ سد يػاٚ صبي٘ دسٛٔ يبٞ َششٙو ذي٘اٛس ئ بٕؿ .زػا يِٕٛؼٔ يبٞ ٝٔب٘شث سد ْشف حاشً يبػ ٝث غلاٚ سد ٚ ذٞد ئ ٖبـ٘ اس صٚذٙيٚ ُٔبػ ٓشؼيػ .ذيٞد ساشل شظ٘ دسٛٔ ُحٔ سد Form1 ُخاد ،ٜدشو ةبخش٘ا ٖآ ساضثا ٝجؼػ صا اس يشثسبو

ْاذو شٞ ُخاد يبٞ ُيبف ٚ - ذٙشؼٞ بٕؿ ي ٝٔب٘شث صا يوخث ٝوبٞ ٜطٚشد ْبٕس ٝو زػا Solution Explorer ْب٘ ٝث لابث زػاس زٕػ ي ٜشؼٙد ٖاٛٙػ بث ي ٜشؼٙد بٕؿ Solution Explorer ي ٜشؼٙد ٗييبد ؾخث سد .ذٞد ئ ٖبـ٘ (tree view) يشخسد يبٕ٘ رسٛك ٝث اس بٟ٘آ صا .ذيٞد شييغس ٚ ذيٙيجث اس يشثسبو يػاٚ ي ٜذؿ ةبخش٘ا يبٞ َششٙو صا ْاذو شٞ ربلخـٔ ذي٘اٛس ئ ٖآ سد ٝو ذيٙيث ئ اس Properties

َبؼف View يٛٙٔ سد اس Properties Window ي ٝٙيضٌ ذي٘اٛس ئ ذيساذ٘ ٛيدٛشػا َاٚظيٚ ٝحفك سد اس Properties ي ٜشؼٙد شٌا :ٝشى٘ .ذييبٕ٘

ٜذؿ قخـٔ ُىؿ يويث ضٔشل يخ بث 2 ُىؿ سد ٝو زػا Target Device يٛؿ صبث زػشٟف 2008 ٛيدٛشػا َاٚظيٚ ييحٔ سد شٍيد ٟٓٔ ؾخث .ذيٞد ئ ٝؼػٛس صبػ ٝيجؿ ْاذو بي ٜبٍشػد ْاذو سد اشػا ياشث اس ٖبس ٝٔب٘شث ٝو ذيٙو ٗييؼس ذي٘اٛس ئ بٕؿ بؼٙيا سد .زػا

8

http://m0911.wordpress.com

.ذيٞد ْبؼ٘ا اس شيص ُحاشٔ ذيٙو ٝفبها ٖبس ٝٔب٘شث ٝث يسبيّٕػ رب٘بىٔا ٝو ٗيا ياشث

.ذيٞد ساشل Form1 يٚس ٚ ذيـىث ساضثا ٝجؼػ صا ٕٝود َششٙو هي .ذيٞد شييغس btnClickMe ٝث button1 مشف ؾيد ساذمٔ صا اس Name ي ٝلخـٔ Properties ي ٜشؼٙد سد .ذيٞد شييغس Click ME! ٝث button1 صا اس Text ي ٝلخـٔ ٜشؼٙد ٖبٕٞ سد .ذ٘بؿٛذث اس Form1 مشػ ْبٕس ٝو ذيٞذث ٜصاذ٘ا شييغس يسًٛ ٚ ذيٞد ساشل Form1 يٚس ٚ ذيـىث ساضثا ٝجؼػ صا تؼچشث َششٙو هي .ذيٞد شييغس lblInfo ٝث label1 مشف ؾيد ساذمٔ صا اس Name ي ٝلخـٔ Properties ي ٜشؼٙد سد .ذيٙو يِبخ اس Text ي ٝلخـٔ ساذمٔ ٜشؼٙد ٖبٕٞ سد .ذيٙو هيّو Form1 صا يٞاٛخِد ُحٔ يٚس دٛؿ شٞبظ Properties ي ٜشؼٙد سد Form1 ربلخـٔ ٝو ٗيا ياشث Form1 يلابث زػاس زٕػ ي ٝؿٌٛ سد ٝو OK ي ٕٝود يٚس هيّو بث بس ذيٞد ساشل False اس MinimizeBox ي ٝلخـٔ ساذمٔ .دٛؿ ْبٕس ٝٔب٘شث ياشػا زؼٞ .ذييبٕ٘ ٝفبها ٕٝود ٝث اس Click داذيٚس شيذٔ بس ذيٙو هيّو ُثاد Click ME! ي ٕٝود يٚس .ذييبٕ٘ ٝفبها اس شيص ذو ،دساد ساشل بٕ٘ ٖبىٔ ٝو ذو شٍـياشيٚ صا يّحٔ سد .10

.1

.2

.3

.4

.5

.6

.7

.8

.9

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

ٚ يذيّو ربّٕو يٍ٘س ؾيبٕ٘ زيّثبل ،ذو ٗشؿٛ٘ ٗيح بٕؿ :ٝشى٘

ٖدشو دساٚ سد اس بٕؿ ضي٘ Intellisense ٗيٙچٕٞ .دشو ذيٞاٛخ ٜذٞبـٔ ذٞد ئ ؾيبٕ٘ يكبخ ً٘س ٝث ،ٖآ ٖدٛث زػسد قيخـس يشحاس .دشو ذٞاٛخ هٕو بٞ ُٕؼِا سٛشػد

ياشث اس ٜذؿ خيبس راسبجػ ٚ بٞسٛشػد صا ْاذو شٞ ٝو اس ذو شٍـياشيٚ ييحٔ

9

http://m0911.wordpress.com

.ذيٞد ْبؼ٘ا اس شيص ُحاشٔ ٖبس ٝٔب٘شث ياشػا ٚ يصبػ ٜدبٔآ ياشث

ذيؿبث ٝشؿاذ٘ ٝٔب٘شث يبٞسٛشػد خيبس سد ييبٌخ چيٞ ٝو ٗيا مشف بث .ذيٙو ةبخش٘ا اس Build Solution ي ٝٙيضٌ Build يٛٙٔ صا

.1

.ذؿ ذٞاٛخ ٜداد ؾيبٕ٘ 2008 ٛيدٛشػا َاٚظيٚ زيؼهٚ ساٛ٘ سد Build succeeded ْبغيد .ذؿبث ٜذؿ ةبخش٘ا Target Device ي ٛؿصبث زػشٟف سد Windows Mobile 6 Classic Emulator ي ٝٙيضٌ ٝو ذيٙو يػسشث

.2

.ذيٙو ةبخش٘ا اس Start Debugging ي ٝٙيضٌ Debug يٛٙٔ صا

.3

ٝيجؿ سد .NET Compact Framework 3.5 ْٚضِ رسٛك سد .دٛؿ ئ اشػا 6 ؽسبٍ٘ ُيبثٛٔ صٚذٙيٚ هيػلاو صبػ ٝيجؿ ٝظحِ ذٙچ صا ذؼث .ذؿ ذٞاٛخ اشػا ٚ تل٘ بٕؿ ي ٝٔب٘شث ،ي٘بيبد ي ّٝحشٔ سد .ذؿ ذٞاٛخ تل٘ ٚ يذو صبػ

ي ّٝحشٔ سد .ذؿ ذٞاٛخ تل٘ ٚ يذو صبػ ُيبثٛٔ صٚذٙيٚ ٜبٍشػد صبػ ٝيجؿ سد

ُيبثٛٔ صٚذٙيٚ ٜبٍشػد صبػ ٝيجؿ سد اشػا َبح سد بٕؿ ٝٔب٘شث ٗيشؼخ٘ :3 ُىؿ

.ذيٞد ْبؼ٘ا اس شيص ُحاشٔ ٖبس ٝٔب٘شث ياشػا ؾيبٔصآ ياشث

ْشف يٚس تؼچشث سد ٝو اس يٙشٔ .ذييبٕ٘ هيّو اس Click ME! ي ٕٝود ٚ ذيٛـث زػا اشػا َبح سد صبػ ٝيجؿ سد ٝوٝٔب٘شث دساٚ

.1

.ذيد ذيٞاٛخ ،دٛؿ ئ شٞبظ .دٛؿ ئ صٚس ٝث تؼچشث يٚس ٜذؿ ٜداد ؾيبٕ٘ زػبػ ٝو ذيٙيث ئ ٕٝود يٚس هيّو سبث شٞ بث

.2

.ذيٙو هيّو ٝٔب٘شث ي ٝحفك يلابث زػاس زٕػ ي ٝؿٌٛ سد اس OK ي ٕٝود ٝٔب٘شث صا عٚشخ ياشث

.3

.ذيذٙجث اس ٖآ ،صبػ ٝيجؿ ي ٝٔب٘شث File يٛٙٔ صا Save State and Exit ي ٝٙيضٌ ةبخش٘ا بث

.4

.ذيٛؿ عسبخ 2008 ٛيدٛشػا َاٚظيٚ صا

.5

10

http://m0911.wordpress.com

مود لصف

زاس هيثش تيريذم و هاگتسد زاس هيثش

11

http://m0911.wordpress.com

ٝٔذمٔ

ٝٔب٘شث ياشػا ؾيبٔصآ ياشث ٖبٍياس ساضثا هي ٗيا .ذيشؼٞ بٙؿآ ٜبٍشػد صبػ ٝيجؿ بث بٕشح ذيؿبث ُيبثٛٔ صٚذٙيٚ يبٞ ٝٔب٘شث ي ٜذٙٞد ٝؼػٛس بٕؿ شٌا يبٞ ٜبٍشػد ي ٝيٟس ٝث صبي٘ ٝو ٗيا ٖٚذث ؛زػا فّشخٔ يبٞ َذٔ بث ُيبثٛٔ صٚذٙيٚ ُٔبػ ٓشؼيػ بث يبٞ ٜبٍشػد فّشخٔ عاٛ٘ا يٚس شث ٖبس يبٞ .ذؿبث يؼلاٚ

بس ذييبٕ٘ ٓيظٙس اس صبػ ٝيجؿ ٍٝ٘ٛچ ٝو ٗيا ٚ ذيٛؿ ئ بٙؿآ دٛخ يبٞ ٝٔب٘شث ؾيبٔصآ ياشث ٜبٍشػد صبػ ٝيجؿ سبو ي ٜٛح٘ بث بٕؿ ِٝبمٔ ٗيا سد ذي٘اٛشث ٝو زخٛٔآ ذيٞاٛخ ضي٘ ٜاشٕٞ ٗفّس بث يجيوشس رسٛك ٝث اس صبػ ٝيجؿ صا ٜدبفشػا يٍٍ٘ٛچ ٜٚلاػ ٝث .ذيٙو َششٙو اس ساضثا دشىّٕػ ذي٘اٛشث بميلد ٝيجؿ شيذٔ صا ،يؼيٛ٘ ٝٔب٘شث هٕو ٝث ذي٘اٛس ئ ٍٝ٘ٛچ ٝو ذيد ذيٞاٛخ زيبٟ٘ سد .ذييبٕ٘ ؾيبٔصآ اس هٔبيد زفبيسد ٚ َبػسا ٚ يٙفّس يبٞ عبٕس .ذيٙو ٜدبفشػا حبشىػد ي ٝٔب٘شث هي ُخاد صا فّشخٔ يبٞ صبػ ٝيجؿ َششٙو ياشث صبػ

ٜبٍشػد صبػ ٝيجؿ فّشخٔ يبٞ ؽسبٍ٘ صٚذٙيٚ يؼلاٚ ٜبٍشػد ٝث صبي٘ ٖٚذث ٝو داد ئ ٖبىٔا بٕؿ ٝث ساضثا ٗيا .ذؿ ٝهشػ 2005 ٛيدٛشػا َاٚظيٚ بث ٜاشٕٞ ٜبٍشػد صبػ ٝيجؿ 1.0 ؽسبٍ٘ ٝهشػ 6 ُيبثٛٔ صٚذٙيٚ ي ٝؼػٛس ساضثا بث ٜاشٕٞ ضي٘ صبػ ٝيجؿ 2.0 ؽسبٍ٘ 1.0 ؽسبٍ٘ ي ٝياسا نحٔ ٝث .ذيٙو ؾيبٔصآ اس دٛخ يبٞ ٝٔب٘شث ُيبثٛٔ صبػ ٝيجؿ 2.0 ؽسبٍ٘ ،6 ُيبثٛٔ صٚذٙيٚ ي ٝؼػٛس ساضثا تل٘ ُحاشٔ صا يـخث سد .زفبي ؽششؼٌ 1.0 ؽسبٍ٘ ٝث زجؼ٘ ٖآ يياسبو ٚ دشىّٕػ ٝو ذؿ ؽسبٍ٘ صا ذيا ٜداد ٝؼػٛس 2005 ٛيدٛشػا َاٚظيٚ بث ٝو بٕؿ ُيبثٛٔ صٚذٙيٚ يبٞ ٜطٚشد ئبٕس غلاٚ سد .ددشٌ ئ 1.0 ؽسبٍ٘ ٗيضٍيبػ ضي٘ ٜبٍشػد صبث ،ذييبٕ٘ ٜدبفشػا 2005 ؽسبٍ٘ صا ٖبٙچٕٞ ذيٞاٛخث ٚ ذيٙى٘ ٗييؼس 6 ُيبثٛٔ صٚذٙيٚ اس ذلمٔ ْشفسلاد بٕؿ شٌا يشح .دشو ذٙٞاٛخ ٜدبفشػا ذيذػ ربٕيظٙس ٖبىٔا ذٙ٘بٔ ٖآ يبٞ زفشـيد صا ٝىّث شسلابث زػشػ صا يمف ٝ٘ بس ذيٙو تل٘ اس 6 ُيبثٛٔ صٚذٙيٚ ٝؼػٛس ساضثا هي ُلاذح ٝو زػا ششٟث ٓٞ .ذييبٕ٘ ٜدبفشػا ٓيػ يث َبلسا يصبػ ٝيجؿ ٖبىٔا بي ،ٜبٍشػد فبخ يبٞ ؾخث ياشث ءضػ ٝث ءضػ

سًٛ ٝث ٚ زػا ٜذؿ ٝهشػ 2008 ٛيدٛشػا َاٚظيٚ بث ٜاشٕٞ ٝو زػا #ِٝبمٔ ٗيا ؽسبٍ٘ ٖبٔص سد$ ٜبٍشػد صبػ ٝيجؿ ؽسبٍ٘ ٗيشخآ 0.3 ؽسبٍ٘ ؽسبٍ٘ ٝث زجؼ٘ ييآسبو دٛجٟث شث ٜٚلاػ ،0.3 ؽسبٍ٘ .ذيبٕ٘ ئ ٗيضٍيبػ ذيذػ ؽسبٍ٘ بث اس بٕؿ ٓشؼيػ يٚس ٜذؿ تل٘ يّجل يبٞ ؽسبٍ٘ سبودٛخ شيص دساٛٔ ياشث يؼيٛ٘ ٝٔب٘شث كيشً صا اس بٞ صبػ ٝيجؿ َششٙو ٖبىٔا ٜٚلاػ ٝث .ذٙو ئ ٜدبفشػا ٜبٍشػد صبػ ٝيجؿ شيذٔ COM يبٞ يػاٚ صا ،0.2 :دصبػ ئ ٓٞاشف

12

(instance) ٕٝ٘ٛ٘ ياشػا

بٞصبػ ٝيجؿ ياشػا يصبػسبودٛخ

صبػ ٝيجؿ ربٕيظٙس شييغس

http://m0911.wordpress.com

2008 ٛيدٛشػا َاٚظيٚ ُخاد صا ٜبٍشػد صبػ ٝيجؿ ياشػا

ٜظيٚ SDK شث كجٌٙٔ ٝو اس بٞ صبػ ٝيجؿ عاٛ٘ا صا يىي ٝو زػا يفبو .دساد دٛػٚ 2008 ٛيدٛشػا َاٚظيٚ ُخاد صا صبػ ٝيجؿ ياشػا ياشث ؽٚس ذٙچ ٝيجؿ يٚس ٖبس ٝٔب٘شث ياشػا صا ُجل .ذيٙو اشػا اس ٖبس ٝٔب٘شث ٚ ذيٙو ةبخش٘ا 2008 ٛيدٛشػا َاٚظيٚ ُخاد صا ،زػا بٕؿ ي ٝٔب٘شث ذلمٔ ْشفسلاد ي ذؼث .دٛؿ ئ ُلشٔ 2008 ٛيدٛشػا َاٚظيٚ ٝث ٚ ذيآ ئ لابث ،ذؿبج٘ اشػا َبح سد شٌا ضي٘ صبػ ٝيجؿ ٚ دٛؿ ئ ُيبذٔبو ٖبس ٝٔب٘شث ،ٜذؿ ةبخش٘ا صبػ سبودٛخ سًٛ ٝث .NET Compact Framework زػسد ؽسبٍ٘ بث ٜاشٕٞ SQL Server CE ْٚضِ رسٛك سد يياشػا ي ٝٔب٘شث ٖذؿ ٝشخبػ صا .ذؿ ذٞاٛخ اشػا ٜبٍشػد صبػ ٝيجد سد

.ذؿ ذٞاٛخ اشػا ٜبٍشػد صبػ ٝيجد سد ٜبٍشػد صبػ ٝيجؿ يٚس اشػا َبح سد

ٜبٍشػد صبػ ٝيجؿ يٚس اشػا َبح سد ُيبثٛٔ صٚذٙيٚ ي ٝٔب٘شث :4 ُىؿ

13

http://m0911.wordpress.com

ٜبٍشػد صبػ ٝيجؿ ربلخـٔ ٓيظٙس

ٜبٍشػد صبػ ٝيجؿ بٞ زِبح ٗيا ياشث .ذيٙو ؾيبٔصآ ٜبٍشػد صا يفّشخٔ ربٕيظٙس بث اس ٖبس ُيبثٛٔ صٚذٙيٚ ٝٔب٘شث ذيٞاٛخث زػا ٗىٕٔ ربلٚا تّغا سد اس ٖبس ٝٔب٘شث ذيٞاٛخث ٝو يشسبث صا يلخـٔ طسبؿ ٖاضئ ياشث لاظٔ .ذييبٕ٘ يصبػ ٝيجؿ اس يفّشخٔ راضيٟؼس ٝو ذٞد ئ بٕؿ ٝث اس ٖبىٔا ٗيا ُلشٔ زؼٞ ٖبس شسٛيذٔبو يٚس ٝو دٛخ يىيضيف ي ٝىجؿ رسبو ٝث اس يصبؼٔ ي ٝىجؿ رسبو هي ٝو ٗيا بي .ذيٙو ٖبحشٔا فيؼه يشسبث زِبح ي ٝؿٛد ٝو ٗيا بي .ذييبٕ٘ ُلشٔ ٖبسشسٛيذٔبو يٚس يىيضيف يًبجسسا رسٛد ٝث اس صبػ ٝيجؿ يصبؼٔ (COM) يًبجسسا رسٛد ٗيٙچٕٞ ٚ ذييبٕ٘ ي ٝؿٛد .ذيسازٍث ناششؿا ٝث #ربلخـٔ ي ٜشؼٙد كيشً صا$ صبػ ٝيجؿ ٚ #ذيٞد ئ ٝؼػٛس اس ٝٔب٘شث ٖآ يٚس ٝو$ دٛخ شسٛيذٔبو ٗيث اس يكبخ بٞ ُيبف ذي٘اٛس ئ يواششؿا ٝؿٛد صا ٜدبفشػا بث .ذؿ ذٞاٛخ ٜذٞبـٔ ٜبٍشػد صبػ ٝيجؿ ُخاد (Storage Card) ٝظفبح رسبو رسٛك ٝث يواششؿا .ذيٙو ِٝدبجٔ ذيٞد ئ ٝؼػٛس ٖآ يٚس اس ٖبس ٝٔب٘شث ذيساد ٝو يشسٛيذٔبو ٚ صبػ ٝيجؿ ٗيث اس .ذييبٕ٘ ةبخش٘ا اس Configure ي ٝٙيضٌ صبػ ٝيجؿ File يٛٙٔ صا صبػ ٝيجؿ ربلخـٔ ي ٜشؼٙد ؾيبٕ٘ ياشث سد اذشثا .ذييبٕ٘ ٜذٞبـٔ اس ربلخـٔ ي ٜشؼٙد ٗيٕٞ ذي٘اٛس ئ ضي٘ 2008 ٛيدٛشػا َاٚظيٚ Tools يٛٙٔ سد Options ي ٝٙيضٌ يٚس هيّو بث اس ٖبس شظ٘ دسٛٔ صبػ ٝيجؿ دٛؿ ئ صبث ٝو يا ٜشؼٙد سد .ذيٙو هيّو اس Devices ،ٜدشو صبث اس Device Tools ي ٝٙيضٌ Options ي ٜشؼٙد .ذؿ ذٞاٛخ صبث Emulator Properties ي ٜشؼٙد Emulator Options يٚس هيّو بث .ذييبٕ٘ هيّو Properties يٚس ٚ ةبخش٘ا

بث .ذييبٕ٘ هيّو Properties يٚس ٚ ةبخش٘ا صبػ ٝيجؿ ربلخـٔ ٓيظٙس :5 ُىؿ 14

صبػ ٝيجؿ ربلخـٔ ٓيظٙس :5 ُىؿ

14

http://m0911.wordpress.com

ٜاشٕٞ ٗفّس صبػ ٝيجؿ ٚ ٜبٍشػد صبػ ٝيجؿ صا ٖبٔص ٓٞ ي ٜدبفشػا

بي ٗفّس يشيٌ ٜسبٕؿ زػا ٗىٕٔ بٕؿ ساضفا ْش٘ لاظٔ .ذيٙو ؾيبٔصآ ٜاشٕٞ ٗفّس سد اس ٖبس ساضفا ْش٘ ياشػا ذيٞاٛخث ٝو ذيآ ئ ؾيد يسبيؼث دساٛٔ ٗفّس هي ٝث صبي٘ ٖٚذث بس ذٙو ئ هٕو ٝو اشچ دٛث ذٞاٛخ ذيفٔ سبيؼث ٜبٍشػد صبػ ٝيجؿ داسٛٔ ٗيا ياشث .ذٞد ْبؼ٘ا اس هٔبيد زفبيسد ٚ َبػسا يٛٙٔ صا اس ٜاشٕٞ ٗفّس صبػ ٝيجؿ .زػا عششػد ُثبل شسلابث ٚ 0.2 ؽسبٍ٘ سد ٗفّس صبػ ٝيجؿ .ذييبٕ٘ ؾيبٔصآ اس ٖآ يبٞ زِبح ئبٕس يؼلاٚ ٜاشٕٞ

ٜاشٕٞ اس ٜبٍشػد صبػ ٝيجؿ ٝو ٖآ صا ؾيد .ذييبٕ٘ اشػا Start/All Programs / Windows Mobile 6 SDK / Tools / Cellular Emulator

صبػ ٝيجؿ ي ٝٔب٘شث زيؼهٚ ساٛ٘ سد ٝو يِبيشػ رسٛد ٝث اس ٜبٍشػد صبػ ٝيجؿ 0 ٜسبٕؿ َبيشػ رسٛد ذيبث ،ذييبٕ٘ ٜدبفشػا ٜاشٕٞ ٗفّس صبػ ٝيجؿ بث ٝو ذيٙيث ئ صبػ ٝيجؿ ي ٝٔب٘شث ربلخـٔ ي ٝحفك سد اس 0 ٜسبٕؿ َبيشػ رسٛد بٕؿ 3 ُىؿ سد .ذييبٕ٘ ُلشٔ دٛؿ ئ ٜداد ؾيبٕ٘ ٜاشٕٞ ٗفّس يصاذ٘ا ٜاس اس ٜبٍشػد صبػ ٝيجؿ ذيبث َبيشػ رسٛد َبلسا صا غد .زػا ٜذؿ ُلشٔ COM3 رسٛد ٝث ٜاشٕٞ ٗفّس صبػ ٝيجؿ ي ٝٔب٘شث بث ىبجسسا ياشث .ذٙو سبو ٜاشٕٞ ٗفّس صبػ ٝيجؿ بس ذيٙو (reset) دذؼٔ

ٗفّس صبػ ٝيجؿ بس ذيٙو (reset) دذؼٔ ٜبٍشػد صبػ ٝيجؿ ٝث ٜاشٕٞ ٗفّس صبػ

ٜبٍشػد صبػ ٝيجؿ ٝث ٜاشٕٞ ٗفّس صبػ ٝيجؿ َبلسا :6 ُىؿ

:ذي٘اٛس ئ َبح

ٗفّس ٜسبٕؿ ٗشفشٌ

يٙفّس عبٕس زفبيسد

ٝىجؿ ٝث َبلسا ياشث ٜبٍشػد صبػ ٝيجؿ يّخاد GPRS َبلسا صا ٜدبفشػا

هٔبيد زفبيسد ٚ َبػسا

3G ٚ 2G ٝىجؿ زِبح ٚد صا يىي ةبخش٘ا

ْدٛٔ ٗييبد حٌػ يبٞ ٖبٔشف ؽصادشد

15

http://m0911.wordpress.com

ٜاشٕٞ ٗفّس صبػ ٝيجؿ ُخاد َبلسا ٖدشو زػسد عبٕس ذي٘اٛس ئ ّٝكبفلاث بٕؿ .ذيٞد ْبؼ٘ا ذي٘اٛس ئ ٖآ بث اس يػٛٙشٔ يبٞ ؾيبٔصآ بٕؿ ،ٜاشٕٞ ٗفّس صبػ ٝيجؿ ٝث ٜبٍشػد صبػ ٝيجؿ َبلسا صا غد زػسد ٜبٍشػد صبػ ٝيجؿ كيشً صا GPRS ي ٝىجؿ َبلسا ذي٘اٛس ئ ٜٚلاػ ٝث .ذيؿبث ٝشؿاد ٜبٍشػد صبػ ٝيجؿ ٝث / صا هٔبيد ٗيٙچٕٞ ٚ يٙفّس :ذيٙو ٝؼػاشٔ شيص عسدآ ٝث ٜبٍشػد صبػ ٝيجؿ سد ٝىجؿ َبلسا ٖدشو زػسد يشيٌدبي ياشث .ذيٙو

ٝٔب٘شث ،ٜبٍشػد صبػ ٝيجؿ ي ٝٙئص غد سد .ذيٙيث ئ ،ذٙشؼٞ َبؼف ٜاشٕٞ ٗفّس صبػ ٝيجؿ ٚ ٜبٍشػد صبػ ٝيجؿ ٗيث ٝو بشيد َبلسا ذٙچ 4 ُىؿ سد ساٛ٘ سد ٝچ ٖآ كجً ،زػا ٜذيػس GPRS َبلسا كيشً صا ٝو يسبػلاًا .زػا ٜدشو صبث اس زيبػ ةٚ هي ٝو ذيٙيث ئ اس سسّٛذؼوا ز٘ششٙيا ي صا ٜدبفشػا بث اس GPRS َبلسا ،ٜاشٕٞ ٗفّس صبػ ٝيجؿ .زػا ٜذؿ ُلشٔ GPRS ٝو ذٞد ئ ٖبـ٘ بٕؿ ٝث ،ذيٙيث ئ ٜبٍشػد صبػ ٝيجؿ زيؼهٚ .ذٙو ئ ٓٞاشف ،زػا ٜذؿ اشػا ٖآ يٚس ٝو يشسٛيذٔبو يا ٝىجؿ َبلسا

Phone ٗشٔ ٝجؼػ سد .زػا ٝشفشٌ عبٕس ،ٜبٍشػد صبػ ٝيجؿ بث ٝو ذيٙيث ئ اس ٜاشٕٞ ٗفّس صبػ ٝيجؿ عبٕس شيذٔ ي ٝٔب٘شث بٕؿ 4 ُىؿ سد عبٕس ْبغيد ٜبٍشػد صبػ ٝيجؿ ُخاد ،سبو ٗيا صا ذؼث ّٝكبفلاث .ذي٘ضث اس Dial ي ٕٝود ٚ ذييبٕ٘ دساٚ اس يٙفّس ٜسبٕؿ شٞ ذي٘اٛس ئ Number .ذؿ ذٞاٛخ ٜداد ؾيبٕ٘ ذيا ٝشفشٌ ٜاشٕٞ ٗفّس صبػ ٝيجؿ ُخاد صا بٕؿ ٝو يا ٜسبٕؿ ٖبٕٞ ٚ ذيد ذيٞاٛخ اس (incoming call) يدٚسٚ

ٚ ذيد ذيٞاٛخ اس ( incoming call ) يدٚسٚ اشػا َبح سد ٜاشٕٞ ٗفّس صبػ ٝيجؿ

اشػا َبح سد ٜاشٕٞ ٗفّس صبػ ٝيجؿ ٚ ٜبٍشػد صبػ ٝيجؿ :7 ُىؿ

16

http://m0911.wordpress.com

هٔبيد زفبيسد ٚ َبػسا

ٝيجؿ كيشً صا هٔبيد زفبيسد فشك ٝو يذٙو ٝػٛس .زػا ٜبٍشػد صبػ ٝيجؿ صا / ٝث هٔبيد زفبيسد / َبػسا ٜاشٕٞ ٗفّس صبػ ٝيجؿ ٟٓٔ زيّثبل هي

ئ ٜشيخر ٜبٍشػد صبػ ٝيجؿ inbox ي ٝؿٛد سد يشفبيسد هٔبيد شثسبو ٝث ٖداد علاًا صا غد ،هٔبيد زفبيسد نحٔ ٝث .زؼي٘ ٟٓٔ ٜبٍشػد صبػ

ٝث ذٞد ئ يػٛٙشٔ رب٘بىٔا بٕؿ ٝث زيّثبل ٗيٕٞ .ذيٙو زفبيسد ٖبسدٛخ ي ٝٔب٘شث كيشً صا اس هٔبيد ذي٘اٛس ئ ضي٘ بٕؿ َبح ٗيػ سد .ددشٌ

اس هٔبيد بٕؿ ي ٝٔب٘شث بي .ذيٙو َششٙو سٚد ٜاس صا ،دٛؿ ئ اشػا ُيبثٛٔ صٚذٙيٚ ٜبٍشػد هي يٚس ٝو اس ٝٔب٘شث هي ذي٘اٛشث بٕؿ ٝو ي٘بٔص فٛلخ

ُخاد inbox ي ٝؿٛد ٝث غذػ ٚ دٚذؼٔ اس ٖآ اذشثا بي ذيبٕ٘ دٚذؼٔ اس ٓشؼيػ ٝث ٖآ دٚسٚ ٜاس ،#ٝشخاذ٘ا ْاد ٝث$ ٜدشو زفبيسد يسبلح٘ا سًٛ ٝث

.ذيبٕ٘ َبػسا ٜبٍشػد

تيوشس .ذييبٕ٘ َبػسا ٜبٍشػد ٝث اس يسبيؼث يبٞ هٔبيد عا ٗىٕٔ ،ذيٙو ئ ٜدبفشػا ٖبس ٝٔب٘شث َششٙو ياشث هٔبيد صا بٕؿ ٝو يشِبح سد ٜظيٚ ٝث

ٗفّس يىيضيف ي ٝىجؿ ٝث بٕؿ ٚ زؿاد ذٞاٛخ٘ يا ٝٙيضٞ چيٞ ٝٔب٘شث زؼس يبٞ زِبح ٗيٙچ ياشث ٜاشٕٞ ٗفّس صبػ ٝيجؿ ٚ ٜبٍشػد صبػ ٝيجؿ

ِٝبمٔ ٗيا زيدٚذحٔ ُيِد ٝث .زؿاد ذيٞاٛخ٘ صبي٘ ،ٜاشٕٞ ٗفّس سٛساشدا ٝث هٔبيد ي ٝٙيضٞ زيبٟ٘ سد ٚ يؿٌٛ دذػ ٚد ٚ رسبو ٓيػ ٚد لاظٔ بي ٜاشٕٞ

غػشٔ ٝث ششـيث ربػلاًا ياشث .ٓيٙو يٕ٘ ٜسبؿا يؼيٛ٘ ٝٔب٘شث كيشً صا هٔبيد زفبيسد ي ٜٛح٘ ربيئضػ ٝث بٔ ،ٜبٍشػد صبػ ٝيجؿ حيهٛس ياشث

:ذيٙو ٝؼػاشٔ شيص عسدآ MSDN

ٝو سبث شٞ .ذيبٕ٘ ئ زفبيسد ٚ اذػ ،ذ٘ٛؿ صبغآ Control Message رسبجػ بث ٝو اس ييبٞ هٔبيد ٝو ذيٙيث ئ ٝٔب٘شث ٕٝ٘ٛ٘ هي بٕؿ 5 ُىؿ سد

ٗشٔ ٝٔب٘شث .دٛؿ ئ يػسشث ٝٔب٘شث يػٛس اذشثا ،دٛؿ ئ زفبيسد زػا SMS Capture ي ٝٔب٘شث ياشػا َبح سد ٝو ٜبٍشػد يػٛس هٔبيد

ئ ساشل هٔبيد ي ٜذٙٙو َبػسا ٗفّس ٜسبٕؿ بث شثاشث اس LinkLabel َششٙو هي Text ي ٝلخـٔ ٚ ذٞد ئ ؾيبٕ٘ ٗشٔ ٝجؼػ هي سد اس هٔبيد

.دشيٍث يٙفّس عبٕس هٔبيد ي ٜذٙشػشف بث ،ٜذؿ ٜداد ؾيبٕ٘ ٗفّس ٜسبٕؿ يٚس هيّو بث يٌدبػ ٝث زؼ٘اٛس ذٞاٛخ شثسبو .ذٞد

يٌدبػ ٝث زؼ٘اٛس ذٞاٛخ شثسبو .ذٞد ٝٔب٘شث هي ُخاد هٔبيد زفبيسد :8 ُىؿ

ٝٔب٘شث هي ُخاد هٔبيد زفبيسد :8 ُىؿ

17

http://m0911.wordpress.com

ٜبٍشػد صبػ ٝيجؿ شيذٔ ي ٝٔب٘شث يػٛس ٜبٍشػد صبػ ٝيجؿ َششٙو

ٖبثضئ شسٛيذٔبو يٚس ٝو - ٜبٍشػد يبٞ صبػ ٝيجؿ َششٙو ياشث ٝو دساد »Device Emulator Manager« ْب٘ ٝث يساضثا 2008 ٛيدٛشػا َاٚظيٚ

صبػ ٝيجؿ شيذٔ ي ٝٔب٘شث .ذيٙو ةبخش٘ا اس Device Emulator Manager ي ٝٙيضٌ Tools يٛٙٔ صا ،ٝٔب٘شث ٗيا ياشػا ياشث -زػا ٜذؿ تل٘

دٛخ شظ٘ دسٛٔ ٜبٍشػد صبػ ٝيجؿ ٝث ذي٘اٛس ئ بٕؿ ٚ ذٞد ئ ٖبـ٘ بٕؿ ٝث يشخسد سادٕٛ٘ رسٛك ٝث اس بٞ ٜبٍشػد يبٞ صبػ ٝيجؿ صا يشػشٟف

ٖٛچ ،زػا يذيفٔ سبيؼث ٖبىٔا ٜبٍشػد صبػ ٝيجؿ ٖدشو ٝفبها .ذيٙو ؽٛٔبخ اس ٜبٍشػد زيبٟ٘ سد ،ٜدٕٛ٘ ٝفبها بي فزح اس يٞبٍشػد ،ٜذؿ ُلشٔ

سد Windows Mobile Device Center ٚ يد غىيا صٚذٙيٚ سد (ActiveSync) ي ٝٔب٘شث يػٛس ٜبٍشػد صبػ ٝيجؿ ذٙو ئ ٓٞاشف اس زيّثبل ٗيا

يصبػ ٖبؼٕٞ اس دٛخ ربيٛشحٔ ٜبٍشػد صبػ ٝيجؿ ٝو ذٞد ئ ٖبىٔا اشػا نحٔ ٝث ٝٔب٘شث ٗيا .ددشٌ ُلشٔ ٖبثضئ شسٛيذٔبو ٝث 7 ٚ بشؼيٚ صٚذٙيٚ .ذٙو تل٘ ٜبٍشػد صبػ ٝيجؿ يٚس ٖبثضئ شسٛيذٔبو صا اس يا ٝٔب٘شث .CAB ُيبف ي ّٝيػٚ ٝث بي ددشٌ ُلشٔ ز٘ششٙيا ٝث ،ذٙو (Syncronize)

تل٘ دٛخ ٓشؼيػ سد ،شسٛيذٔبو ٝث ٜبٍشػد صبػ ٝيجؿ َبلسا ياشث اس Windows Mobile Device Center بي ActiveSync ي ٝٔب٘شث ذيبث بٕؿ :ٝشى٘

.ذييبٕ٘ َبؼف ذيبث ضي٘ اس #Direct Memory Access ; ٝظفبح ٝث ٓيمشؼٔ يػششػد$ DMA كيشً صا َبلسا ٕٗه سد .ذيؿبث ٜدشو

ن.س$ ٜبٍشػد صبػ ٝيجؿ هي ياشػا َبح سد

ٜبٍشػد صبػ ٝيجؿ هي ياشػا َبح سد صبػ ٝيجؿ شيذٔ :9 ُىؿ

ي ٝٔب٘شث ،صبػ ٝيجؿ ياشػا صا غد.زػا ٜذؿ اشػا صبػ ٝيجؿ شيذٔ ُخاد يؼثشٔ ي ٝحفك هي سد ٝو ذيٙيث ئ اس 1.6 ُيبثٛٔ صٚذٙيٚ 6 ُىؿ سد زؼيِ صا ٖبس شظ٘ دسٛٔ صبػ ٝيجؿ يٚس ذيبث صبػ ٝيجؿ شيذٔ ُخاد صا بٞ صبػ ٝيجؿ َششٙو ياشث .دٚس ئ سبو ٝث ٖآ ٝث َبلسا ياشث صبػ ٝيجؿ شيذٔ Actions يٛٙٔ صا اس ٖبس شظ٘ دسٛٔ ي ٝٙيضٌ ٚ ذيٙو هيّو زػاس ذٞد ئ ٖبـ٘ اس ٜذؿ تل٘ يبٞ صبػ ٝيجؿ ي ٕٝٞ ٝو يشخسد ؾيبٕ٘ Windows Mobile بي ActiveSync ي ٝٔب٘شث ٝو ذيد ذيٞاٛخ ٜبٍشػد صبػ ٝيجؿ ٝث َبلسا نحٔ ٝث .ذييبٕ٘ ةبخش٘ا اشػا َبح سد صبػ ٝيجؿ يٚس

.ذٙيآ ئ لابث Device Center

18

http://m0911.wordpress.com

يذؼث يبٞ ٜدبفشػا ياشث ٜبٍشػد صبػ ٝيجؿ ربٕيظٙس ي ٜشيخر

ٝيجؿ هي لاظٔ .ذييبٕ٘ ٜشيخر ٜبٍشػد صبػ ٝيجؿ عٛ٘ شٞ ياشث اس ٖبسشظ٘ دسٛٔ فبخ ربٕيظٙس بٕؿ ٝو زؼٞ ٖبىٔا ٗيا صبػ ٝيجؿ شيذٔ ي ٝٔب٘شث بث

.ذيبيث لابث ،زػا ٜذؿ ٓيظٙس ٖبثضئ شسٛيذٔبو يٚس فبخ ي ٝؿٛد هي يٚس ٝو يا ٝظفبح رسبو ٚ "50 يشسبث بث ٝـيٕٞ ٝو ذيٙو ئ دبؼيا صبػ

.ذي٘ضث اس Connect ي ٝٙيضٌ ٖآ يٚس هيّو زػاس صا غد ٚ ةبخش٘ا اس ٜذؿ تل٘ يبٞ صبػ ٝيجؿ صا يىي صبػ ٝيجؿ شيذٔ ي ٝٔب٘شث سد سٛظٙٔ ٗيذث

صبػ ٝيجؿ شيذٔ ُخاد هيّو زػاس يٛٙٔ صا Save As ي ٝٙيضٌ يػٛس ٚ ذيٞد شييغس اس ٖآ ربٕيظٙس ذي٘اٛس ئ صبػ ٝيجؿ ياشػا ْبٍٙٞ ٝث

سادٕٛ٘ سد .ذؿ ذٙٞاٛخ ٜذيد صبػ ٝيجؿ شيذٔ ُخاد ذيذػ صبػ ٝيجؿ ْب٘ هي رسٛك ٝث ٜذؿ ٜشيخر ربٕيظٙس ٗيا.ذييبٕ٘ ٜشيخر اس ذيذػ ربٕيظٙس

ربٕيظٙس يٚبح ُيبف هي بفشك سبو ٗيا بث .ذيٙيجث اس بٞ ٜبٍشػد صبػ ٝيجؿ ٗيا ذي٘اٛس ئ صبػ ٝيجؿ شيذٔ ُخاد My Device Emulators يشخسد

يٚس ٖآ ياشث ي٘اذٙچ ي ٝظفبح ذيذػ ربٕيظٙس بث صبػ ٝيجؿ هي دبؼيا سبث شٞ بث ٚ دٛؿ ئ دبؼيا بٕؿ شظ٘ دسٛٔ صبػ ٝيجؿ فبخ عٛ٘ يبٙجٔ شث

.ذثبي يٕ٘ فبلشخا بٕؿ هؼيد دسبٞ

شث .ذثبي يٕ٘ فبلشخا بٕؿ هؼيد دسبٞ ٜبٍشػد صبػ ٝيجؿ ربٕيظٙس :10 ُىؿ

ٜبٍشػد صبػ ٝيجؿ ربٕيظٙس :10 ُىؿ

شسٛيذٔبو يٚس C:\Users\Public\Documents شيؼٔ سد ٝظفبح رسبو هي ٝو ذيٙيث ئ اس ٜبٍشػد صبػ ٝيجؿ ربٕيظٙس صا يا ٜٕٚٛ٘ 7 ُىؿ سد ٗيٕٞ دٛؿ اشػا فبخ صبػ ٝيجؿ ٗيا ٝو سبث شٞ .زػا ٜدشو يصبػ ٝيجؿ اشػا ْبٍٙٞ ٝث ضي٘ اس "50 يشسبث زِبح ٚ زػا ٜذؿ فيشؼس ٖآ ياشث ٖبثضئ .دٛث ذٙٞاٛخ ساشلشث اذشثا صا ربٕيظٙس

19

http://m0911.wordpress.com

فّشخٔ يشيٙٔا ربٕيظٙس ؾيبٔصآ ياشث ٜبٍشػد صبػ ٝيجؿ صا ٜدبفشػا ٜبٍشػد صبػ ٝيجؿ ٝث ٛيدٛشػا َاٚظيٚ َبلسا مشف بث ذيٙو ئ ٜدبفشػا ٖبس ُيبثٛٔ صٚذٙيٚ يبٞ ٝٔب٘شث ؾيبٔصآ ياشث ٜبٍشػد صبػ ٝيجؿ صا ٝو ئبٍٙٞ .دشو ذٞاٛخ سبو بٕؿ ياشث يشيٙٔا زيدٚذحٔ ٖٚذث ٚ ُٔبو ُيبثٛٔ صٚذٙيٚ هي ذٙ٘بٔ صبػ ٝيجؿ .زؿاد ذيٞاٛخ٘ بٟ٘آ ياشػا ٚ تل٘ ياشث يؼ٘بٔ چيٞ ٝشؿاد ٖآ ٝث يػششػد ياشث يشيٙٔا يبٞ زيدٚذحٔ زػا ٗىٕٔ بٕؿ زػا ٗىٕٔ ُيبثٛٔ صٚذٙيٚ يؼلاٚ ٜبٍشػد يٚس يشيٙٔا ربٕيظٙس ٝث ٝشؼث ٝچ ٝو ٗيا حيهٛس ٗىيِ .ذييبٕ٘ َبٕػا صبػ ٝيجؿ يٚس اس ٖبسشظ٘ دسٛٔ يشيٙٔا ربٕيظٙس زؼ٘اٛس ذيٞاٛخ 2008 ٛيدٛشػا َاٚظيٚ صا ٜدبفشػا بث .ذيؿبث ئ زفبػٚشىئ زيبػ سد شيص عسدا كيشً صا .زػا ِٝبمٔ ٗيا ي ّٝكٛح صا عسبخ ذيٙو َبٕػا ُيبثٛٔ صٚذٙيٚ سد ذي٘اٛس ئ اس يشيٙٔا ربٕيظٙس :ذيٙيجث اس ُيبثٛٔ صٚذٙيٚ يشيٙٔا ربٕيظٙس ُيلفس ٝث ذي٘اٛس

#ٓػششٔ .ذؿ ذٞاٛخ ٕٝػشس ٝحفك ٗيا ربيٛشحٔ يدٚص ٝث$

يّؼف يشيٙٔا ربٕيظٙس ذي٘اٛس ئ ٜبٍشػد صبػ ٝيجؿ هي ياشػا صا ذؼث .زػا ٖبػآ ٚ زػاسشػ ٜبٍشػد صبػ ٝيجؿ سد فبخ يشيٙٔا ربٕيظٙس َبٕػا صا غد .ذييبٕ٘ ةبخش٘ا اس Device Security Manager ي ٝٙيضٌ 2008 ٛيدٛشػا َاٚظيٚ Tools يٛٙٔ صا سٛظٙٔ ٗيذث .ذييبٕ٘ عاشخشػا اس ٖآ ربٕيظٙس ذي٘اٛس ئ Device Security Manager يػٛس .ذيد ذيٞاٛخ اس 2008 ٛيدٛشػا َاٚظيٚ ييحٔ مشف ؾيد يشيٙٔا ربٕيظٙس ،ٗيا .ذيٙيجث اس ٜذؿ تل٘ يبٞ ٝيذييأس ٗيٙچٕٞ ٚ اشػا َبح سد ٜبٍشػد صبػ ٝيجؿ يشيٙٔا ئ ٓٞ ُيبثٛٔ صٚذٙيٚ #يىيضيف$ يؼلاٚ ٜبٍشػد يشيٙٔا ربٕيظٙس يػسشث ٚ عاشخشػا زٟػ Device Security Manager ي ٝٔب٘شث صا :ٝشى٘ .ذيٙو ٜدبفشػا ذي٘اٛس

20

http://m0911.wordpress.com

:ذيٞد ْبؼ٘ا اس شيص ُحاشٔ ٜبٍشػد صبػ ٝيجؿ هي سد ذيذػ يشيٙٔا ربٕيظٙس َبٕػا ياشث

ذي٘ضث اس Security Configuration ي ٝٙيضٌ Device Security Manager ي ٌٝشث صا

.1

.ذيٙو ةبخش٘ا اس ٖبسشظ٘ دسٛٔ ربٕيظٙس Security configuration زػشٟف صا

.2

ٝيجؿ يٚس ٖبسشظ٘ دسٛٔ يشيٙٔا ربٕيظٙس بس ذيٙو هيّو Device Security Manager ُخاد Deploy to Device ي ٌٝشث يٚس .دٛؿ َبٕػا صبػ

.3

Device ي ٌٝشث يٚس .دٛؿ َبٕػا صبػ .3 ٜبٍشػد صبػ ٝيجؿ ُخاد صا اشػا َبح

ٜبٍشػد صبػ ٝيجؿ ُخاد صا اشػا َبح سد ٜبٍشػد زيٙٔا شيذٔ :11 ُىؿ

21

http://m0911.wordpress.com

صبػ ٝيجؿ شيذٔ يصبػ سبودٛخ يبٞ ٝٔب٘شث بٞ ٖآ بث ٓي٘اٛس ئ ٝو زػا (Component Object Model) COM يبيؿا يشػ هي رسٛك ٝث ٜبٍشػد صبػ ٝيجؿ شيذٔ ييآسبو فبخ صبػ ٝيجؿ هي ٝث ٝو ذيؼيٛٙث يا ٝٔب٘شث C# ٖبثص ٝث ذي٘اٛس ئ بٕؿ ُظٔ ٖاٛٙػ ٝث .ٓيؼيٛٙث صبػ ٝيجؿ شيذٔ َششٙو ياشث صٚذٙيٚ حبشىػد ذيبٕ٘ ٜدبفشػا صبػ ٝيجؿ شيذٔ رب٘بىٔا صا ٝو (Desktop Apllication) صٚذٙيٚ حبشىػد ي ٝٔب٘شث هي دبؼيا ياشث .ذيبٕ٘ اشػا اس ٖآ ٜذؿ ُلشٔ :ذيٞد ْبؼ٘ا اس شيص ُحاشٔ

.ذييبٕ٘ دبؼيا Visual C# Windows application ي ٝٔب٘شث هي 2008 ٛيدٛشػا َاٚظيٚ ييحٔ سد

ذؿبث دٛػٛٔ \Program Files\Microsoft Device Emulator\1.0\Microsoft.DeviceEmulatorManager.Interop.9.0.dll

.1

.ذيٙو ٝفبها ٜطٚشد ٝث اس Microsoft.DeviceEmulatorManager.Interop.9.0 يّجٕػا غػشٔ هي

.2

شيؼٔ سد صبي٘ دسٛٔ يّجٕػا ُيبف ٝو زػا ْصلا ذييبٕ٘ ٜدبفشػا اس ٜبٍشػد صبػ ٝيجؿ صا يشسذيذػ ؽسبٍ٘ شٌا يشح :ٝشى٘

.زػا ٖآ ٗيـيد ؽسبٍ٘ صا بمسسا هي ُكا سد ٜبٍشػد صبػ ٝيجؿ شسذيذػ ؽسبٍ٘ ٝو اشچ (TreeView يشخسد سادٕٛ٘ هي رسٛك ٝث ،دٛخ شسٛيذٔبو سد ٜذؿ ٜشيخر يبٞ صبػ ٝيجؿ ٝث ىٛثشٔ ربػلاًا ئبٕس ؾيبٕ٘ ياشث غيفششٙيا صا ذو ٗيا .ذييبٕ٘ ٜدبفشػا ٖبس ٝٔب٘شث يّكا ْشف Load داذيٚس شيذٔ ؾخث سد شيص ذو ٝؼٌل صا Control)

.3

.ذٙو ئ ٜدبفشػا

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

http://m0911.wordpress.com

غيفششٙيا ٚ while ي ٝمّح ٜدبفشػا بث اس ٜذؿ تل٘ يبٞ صبػ ٝيجؿ ئبٕس ربػلاًا ذي٘اٛس ئ ٝثبـٔ ؽٚس ٝث

.ذيسٚآ زػد ٝث

%%

.4

شٞ ٝث كّؼشٔ يبٞ صبػ ٝيجؿ هس هس ربػلاًا زؼ٘اٛس ذيٞاٛخ ٝثبـٔ ؽٚس بث ،بٞ صبػ ٝيجؿ ي ٜداٛ٘بخ ئبٕس ربػلاًا يثبيصبث صا غد

IEnumVMIDs غيفششٙيا صا ٜدبفشػا بث يشٍيد while ي ٝمّح سد اس SDK

.ذيسٚآ زػد ٝث

%%%

.5

، Connectيبٞ َاٚس ي٘اٛخاشف بث لاظٔ .ذييبٕ٘ َششٙو اس ٖآ ذي٘اٛس ئ بٞ َاٚس صا ٜدبفشػا بث ،فبخ صبػ ٝيجؿ هي ٝث يػششػد صا غد

IDeviceEmulatorManagerVMID غيفششٙيا سد Shutdown ٚ Uncradle ،Cradle

%%%%

.

.6

23

http://m0911.wordpress.com

موس لصف

WinForm ات همانرت ي هعسوت

24

http://m0911.wordpress.com

ٝٔذمٔ َاٚظژيٚ بي هيؼيث َاٚظيٚ ٖبثص ٚد صا يىي ٝو ي٘بٔص ٜظيٚ ٝث دساد حبشىػد سد ساضفا ْش٘ ي ٝؼػٛس ٝث يدبيص زٞبجؿ ُيبثٛٔ صٚذٙيٚ ساضفا ْش٘ ي ٝؼػٛس ذژيٙو يژٔ ٜدبفشژػا ٓژٞ ُيبثٛٔ صٚذٙيٚ ياشث اس حبشىػد صٚذٙيٚ يبٞ ٝٔب٘شث ي ٝؼػٛس يبٞساضثا ٖبٕٞ بٕؿ .ذيٙو ئ ٜدبفشػا اس ز٘ راد حسبؿ يػ ُژثبل ٗيژٙچٕٞ ٚ ذ٘ساد شس دٚذحٔ غثبٙٔ ٚ شس هچٛو ؾيبٕ٘ ي ٝحفك ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد .زؼٞ ييحٔ ٚد ٗيا ٗيث ضي٘ ييبٞ رٚبفس ٗىيِ .ذٙٙو ئ ٜدبفشػا يشسبث تّغا ،ٜدٛث ُٕح يژٔ دبژي بٕژؿ زژيبٟ٘ سد ٚ داد ذژٞاٛخ بٕؿ ٝث ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد ياشث ْشف صٚذٙيٚ يبٞساضفا ْش٘ يٍٍ٘ٛچ ي ٜسبث سد اس يسبػلاًا ِٝبمٔ ٗيا ذژؿبث ٓٞ يشسبث طسبؿ ٝث ٖبس عاٛح َبح ٗيػ سد ٚ ذيٞد ٝؼػٛس ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد رب٘بىٔا صا ٜدبفشػا ياشث اس بٞساضفا ْش٘ سٌٛچ ٝو ذيشيٌ .ذٙو ُٕػ زػسد ،ٜبٍشػد ؾيبٕ٘ ي ٝحفك زٟػ ٝث ٝػٛس ٖٚذث ٖبس ٝٔب٘شث ؾيبٕ٘ ٝحفك ٚ

ذ٘ساد يػٛٙشٔ يبٞ َذٔ ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد بژث بژٔ ٝژِبمٔ ٗيا سد .ذٙٙو ئ ٜدبفشػا اس ُيبثٛٔ صٚذٙيٚ صا يفّشخٔ يبٞ ؽسبٍ٘ ٜٚلاػ ٝث ٚ ذٙشؼٞ عٛٙشٔ سبيؼث ساصبث سد ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد .دشو ٓيٞاٛخ سبو #يا ٝفشح ٚ دساذ٘بشػا ؾياشيٚ ٚد شٞ$ ُيبثٛٔ صٚذٙيٚ 6 ؽسبٍ٘

دساذ٘بشػا ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد

يژؼِٕ ي ٝحفژك ٗىيژِ ذژ٘ساد اس ٗژفّس ربژ٘بىٔا بٞ ٜبٍشػد ٗيا ي ٕٝٞ .ذٙشؼٞ ساصبث سد #ذٕٙؿٛٞ ٗفّس$ ٖٛف رسبٕػا ْب٘ ٝث تّغا بٞ ٜبٍشػد ٗيا ٗژيا بژث ٝژو ييبٞ ساضفا ْش٘ ٝؼػٛس ياشث .(one-hand operation) ذيساد صبي٘ زػد هي ٝث بٞ ٖآ بث سبو ياشث لإٛؼٔ .ذ٘ساذ٘ (Touch Screen) ٛيدٛشژػا َاٚظژيٚ بژث ٜاشٕٞ اس (Windows Mobile 6 Standard SDK ) دساذ٘بشػا 6 ُيبثٛٔ صٚذٙيٚ ي ٝؼػٛس ساضثا بٕؿ ذٙٙو سبو بٞ ٜبٍشػد .ذيساد صبي٘ شسلابث بي 2005

يا ٝفشح 6 ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد

ي ٝژٕٞ يژِٚ ذ٘ساد ضي٘ اس ٗفّس رب٘بىٔا بوؼث بٞ ٜبٍشػد ٗيا .ذ٘ٛؿ ئ ٝشخبٙؿ (Pocket PC=PPC) يػ يد زوبد ْب٘ ٝث بسذٕػ بٞ ٜبٍشػد ٗيا ْشژ٘ ٝؼژػٛس ياشژث .) .ذيساد صبي٘ يؼِٕ َششٙو هي بث ٜاشٕٞ زػد ٚد ٝث بٞ ٜبٍشػد ٗيا بث سبو ياشث لإٛؼٔ .ذٙشؼٞ ضٟؼٔ يؼِٕ ي ٝحفك ٝث بٞ ٖآ اس (Windows Mobile 6 Professional SDK ) يا ٝژفشح 6 ُژيبثٛٔ صٚذژٙيٚ ي ٝؼػٛس ساضثا بٕؿ ذٙٙو سبو بٞ ٜبٍشػد ٗيا بث ٝو ييبٞ ساضفا .ذيساد صبي٘ شسلابث بي 2005 ٛيدٛشػا َاٚظيٚ بث ٜاشٕٞ

ذؿبث ٝشؿاد ذيبث ٜذٙٞد ٝؼػٛس ٝو ييبٞ رسبٟٔ ييژحٔ ٝژث دٚسٚ صا غد .ذ٘ساذ٘ ٓٞ بث ي٘اذٙچ رٚبفس 2008 ٛيدٛشػا َاٚظيٚ ييحٔ سد حبشىػد ٚ ُيبثٛٔ صٚذٙيٚ يبٞ ساضفا ْش٘ ي ٝؼػٛس يبٞ ؽٚس بژث ٝژيِٚا ي ٜطٚشژد هژي ٛيدٛشػا َاٚظيٚ غذػ .ذيٙو صبغآ ئشفسلاد ٝچ سد ٚ اس يا ٜطٚشد عٛ٘ ٝچ ٝو ذيشيٌ ئ ٓيٕلس بٕؿ 2008 ٛيدٛشػا َاٚظيٚ ٝحفژك ،ُژيبثٛٔ صٚذژٙيٚ ساضفا ْش٘ ي ٝؼػٛس ْبٍٙٞ ٝث رٚبفس ٗيشس ٜذٕػ .ذيٙو يحاشً اس شثسبو يػاٚ ،ْشف ٖآ سد ٝو ذٞد ئ ؾيبٕ٘ يِبخ ْشف هي يژػاٚ يبژٞ َششٙو ذيٞاٛخث ٝو ٝو ذيٛؿ ئ ٝػٛشٔ ي٘بٔص اس يذؼث رٚبفس .زػا بٞ ٜبٍشػد سد ٜدبفشػا دسٛٔ عٛٙشٔ َبح ٗيػ سد ٚ هچٛو ؾيبٕ٘ بٕژؿ عششژػد سد حبشىػد ْشفسلاد بث ٝؼيبمٔ سد َششٙو يدٚذحٔ داذؼس .ذيٞد ساشل ْشف يٚس ٚ ذيـىث 2008 ٛيدٛشػا َاٚظيٚ ساضثا ٝجؼػ صا اس شثسبو دساذ٘بشژػا ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد ٝو بػ ٖآ صا .زػا ُيبثٛٔ صٚذٙيٚ يا ٝفشح ؾياشيٚ صا ششـيث دساذ٘بشػا ؾياشيٚ سد زيدٚذحٔ ٗيا .دٛث ذٞاٛخ .ذ٘ساذ٘ ييآسبو دساذ٘بشػا ؾياشيٚ سد ُيبثٛٔ صٚذٙيٚ يا ٝفشح ؾياشيٚ يبٞ َششٙو يخشث ،ذ٘ساذ٘ يؼِٕ ي ٝحفك هي ُخاد بي ْشف هي يٚس ٖآ ٖداد ساشل ٚ ٖدشو بٞس ٚ ٛيدٛشػا َاٚظيٚ ساضثا ٝجؼػ صا بٞ َششٙو ٖذيـو ٖبٕٞ يٙؼي ٝٔب٘شث ياشث يشثسبو يػاٚ دبؼيا ،ذيژؿبث ٝشؿاد ٖبس ٝٔب٘شث سد ْشف ذٙچ ذي٘اٛس ئ يفشً صا ٚ -ذيا ٜداد ساشل ْشف يٚس بٞ َششٙو يذٙث ٜٚشٌ ياشث ٝو - (Container) شٙيش٘بو َششٙو ٗژيا شژث ٜٚلاژػ .ذژيٙو دبؼيا ٖبسدٛخ لأبو اس َششٙو هي اذشثا صا ٝو ٗيا بي ذؿبث ٜذؿ كشـٔ دٛػٛٔ َششٙو هي صا ٝو ذيٙو زػسد يِششٙو ٖبسدٛخ ُژيبثٛٔ صٚذژٙيٚ دساذ٘بشژػا ٚ ئٕٛػ يبٞ ٝٔب٘شث ٝث ٖبس ٝٔب٘شث بس دشو ذٞاٛخ هٕو اس بٕؿ ٝو زؼٞ ٓٞ ِٕٝبىٔ ي ٜشؼٙد يداذؼس ٜدبػ يبٞ َششٙو .ذؿبث ٝيجؿ

25

http://m0911.wordpress.com

يا ٝفشح 6 ُيبثٛٔ صٚذٙيٚ سد ٜدبػ شثسبو يػاٚ هي يحاشً

َاٚظژيٚ بژي C# يبژٞ ٖبثص صا يىي سد Smart Device project ذيبث ٜطٚشد عٛ٘ .ذيٙو دبؼيا 2008 ٛيدٛشػا َاٚظيٚ ييحٔ سد ذيذػ ي ٜطٚشد هي بث يِبخ ْشف هي 2008 ٛيدٛشػا َاٚظيٚ .ذييبٕ٘ ةبخش٘ا Windows Mobile 6 Professional SDK اس ذلمٔ ْشفسلاد .ذؿبث ز٘ راد هيؼيث سد ٝژچ ٖآ ٝژث ذؿبث شس ٝيجؿ ٖبىٔا ذح ٝث بس زػا ُيبثٛٔ صٚذٙيٚ ٜبٍشػد هي ُىؿ ٝث ٝو داد ذٞاٛخ ؾيبٕ٘ بٕؿ ٝث ذلمٔ ْشفسلاد بث تػبٙشٔ دبؼثا .ذيٞد ساشل ْشف يٚس اس ٖبس شظ٘ دسٛٔ يبٞ َششٙو ذي٘اٛس ئ #1 ُىؿ$ Device Controls ساضثا ٝجؼػ صا ٜدبفشػا بث .ددشٌ ئ ٜدبفشػا زيؼلاٚ

بث .ددشٌ ئ ٜدبفشػا زيؼلاٚ ْشف يحاشً يبٕ٘ سد 2008 ٛيدٛشػا

ْشف يحاشً يبٕ٘ سد 2008 ٛيدٛشػا َاٚظيٚ :12 ُىؿ

26

http://m0911.wordpress.com

ٖبژس ٓژـچ ٝژث بٞ ٖآ صا يخشث شٌا .ذيصاذٙيث يٞبٍ٘ ،ذيٙو ٜدبفشػا شثسبو يػاٚ يحاشً سد ذي٘اٛس ئ ٝو اس يفّشخٔ يبٞ َششٙو ٚ ذي٘بٕ٘ سبىيث !تخ

يبژٕٙٞاس ٝژشجِا ذژك ٚ ذژيٙو ٝژؼِبٌٔ اس ْاذو شٞ دشوسبو ٚ بٞ ٖآ يبٞ ٝلخـٔ ٚ ذيٞد ساشل ْشف يٚس بٞ ٖآ ٝو زػا ٗيا سبو ٗيششٟث ذٙشؼي٘ بٙؿآ

شثسبژو يػاٚ حاشً سبو ي ٜٛح٘ ،ذٔآ ذٞاٛخ ٓـچ ٝث شثسبو يػاٚ يحاشً ْبٍٙٞ ٝث ٝو ييبٞضيچ ٗيشس ٟٓٔ صا يىي .ذيؿبث ٝشؿاد دبي ٝث ٓٞ اس ٗيلا٘آ

.ذژيشيٍث شظ٘ سد بٞ ٖآ ياشث اس ٗىٕٔ ي ّٝكبف ٗيششٕو ٚ ذيٙو صاشس اس بٞ َششٙو يشيٌ ساشل ُحٔ دشو ذٞاٛخ ٖبس هٕو سٌٛچ ٝو ذيٙو زلد .زػا

ساشژل 2 ُىژؿ سد .ذژيٙو يحاشً زػد ؽٛخ يّيخ اس شثسبو يػاٚ ،ي٘بٔص نذ٘ا سد بس دشو ذٙٞاٛخ يدبيص هٕو (Guide Lines) بٕٙٞاس ىٌٛخ

ٖآ يبژٞ ٝجِ ،ً٘س يثآ هيسبث ىٌٛخ هٕو ٝث ٝو ذيٙيث ئ ٓٞ ٝث زجؼ٘ يدٕٛػ ٚ يمفا زِبح ٚد سد اس button2 ٚ button1 يبٞ ٕٝود يشيٌ

.ذ٘ا ٜذؿ صاشس ٓٞ ٝث زجؼ٘ بٞ

يشيٌ .ذ٘ا ٜذؿ صاشس ٓٞ ٝث زجؼ٘ بٞ شثسبو يػاٚ يذٙث تيوشس سد بٕؿ

شثسبو يػاٚ يذٙث تيوشس سد بٕؿ سبيشػد ٗيششٟث بٕٙٞاس ىٌٛخ :13 ُىؿ

ذؿبث سبٌصبػ ؾيبٕ٘ ٝحفك فّشخٔ يبٞ زٟػ بث ذ٘اٛشث ٝو يساضفا ْش٘ دبؼيا

ٜذيچيد يوذ٘ا ذٙو سبو ٜبٍشػد يػٛٙشٔ داذؼس سد ذ٘اٛشث ٝو ساضفا ْش٘ هي ي ٝؼػٛس ٝو زػا ٜذؿ ضػبث بٞ ٖآ يبٞ َذٔ ٚ بٞ ٜبٍشػد دبيص عٛٙس ذي٘اٛس ئ 6 ُيبثٛٔ صٚذٙيٚ ي ٝؼػٛس ساضثا بث .ذٙو ئ ٓٞاشف اس شثسبو يػاٚ يبٞ َششٙو ٖدشو زثبط ٚ يـوذٙث ٖبىٔا بٕؿ ٝث ٛيدٛشػا َاٚظيٚ .ذؿبث دٚذحٔ ٚ فبخ دسٛٔ ذٙچ يٚس بٔ ِٝبمٔ ٗيا سد ٗىيِ .ذيسٚآ زػد ٝث ٜبٍشػد ُٔبػ ٓشؼيػ يبٞ ؽسبٍ٘ ٚ ٜبٍشػد يبٞ زيّثبل ي ٜسبث سد يسبػلاًا :ٓيٙو ئ سبو

يشسبث ٚ ٓشؼيػ داصآ غثبٙٔ ٖاضئ ٝث ٝػٛس

6 ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد سد اشػا

ُىؿ غثشٔ ؾيبٕ٘ ٝحفك بث ييبٞ ٜبٍشػد ٗيٙچٕٞ ٚ يدٕٛػ ،يمفا زِبح ٚد شٞ سد زػسد ؾيبٕ٘

يِٚ ذٙٙو يٕ٘ ي٘بجيشـد اس ؾيبٕ٘ ي ٝحفك فّشخٔ يبٞ زٟػ دساذ٘بشػا ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد #ِٝبمٔ ٗيا ؽسبٍ٘ ٖبٔص سد$ ٝو يدٛػٚ بث َاٚظيٚ .ذؿ ذٞاٛخ شثسبو ششـيث يشحاس ضػبث يمفا ي ٝحفك سد ربػلاًا ؾيبٕ٘ دساٛٔ يخشث سد .دٛؿ ٓٞاشف ٖبىٔا ٗيا ٜذٙيآ سد زػا ٗىٕٔ يـوذٙث بي ،ٜدشو زثبط فبخ زيؼلٛٔ هي سد بٞ َششٙو بس دشو ذٞاٛخ ٖبس هٕو ،ْشف صٚذٙيٚ ي ٝٔب٘شث هي شثسبو يػاٚ يحاشً ْبٍٙٞ ٝث ٛيدٛشػا

.ذيٙو

بٞ َششٙو ٖدشو زثبط بي يـوذٙث

يكبخ ُحٔ سد اس بٞ َششٙو ذي٘اٛس ئ ،ذؿ ذٞاٛخ ٜداد ؾيبٕ٘ يشػسد ٝث يدٕٛػ ٚ يمفا زِبح ٚد شٞ سد ْشف هي ٝو ٗيا صا ٖذؿ ٗئٌٕٔ ياشث .ذييبٕ٘ يـوذٙث بي زثبط (Panel Control) ُ٘بد بي ْشف ذٙ٘بٔ (Parent) قٛفبٔ َششٙو هي ُخاد هي ي ٝجِ ذٙچ بي هي ٝث زجؼ٘ اس َششٙو هي بٕؿ ٝو ي٘بٔص .زػا بٞ َششٙو (Anchor) زيجظس ٚ (Dock) يـوذٙث ٗيث رٚبفس ٟٓٔ ي ٝشى٘ َششٙو هي يـوذٙث ْبٍٙٞ .ذ٘بٕث زثبط ؾيبٕ٘ زٟػ شييغس بث ٜذؿ زثبط يبٞ ٝجِ ٝث تؼ٘ ربلشخٔ ٝو ذؿ ذٞاٛخ تػٛٔ ذيٙو ئ زثبط شٙيش٘بو ٖآ رسٛك ٗيا سد ذيٙو يـوذٙث ٝجِ سبٟچ شٞ ٝث اس َششٙو شٌا .ذيٙو ئ ٗييؼس ،دشيٍث ساشل زيؼلٛٔ ٖآ سد ذيبث َششٙو ٝو اس ششٙيش٘بو صا يا ٝجِ بٕؿ .ذ٘بؿٛد ذٞاٛخ اس #شٙيش٘بو بي ْشف$ ؾلٛفبٔ َششٙو حٌػ ْبٕس َششٙو

27

http://m0911.wordpress.com

ٚ ٓيٙو ئ دبؼيا ٜدبػ ْشف هي ؾيبٕ٘ ي ٝحفك فّشخٔ يبٞ زٟػ سد بٞ ٖآ دشوسبو ٚ بٞ َششٙو زيجظس ٚ يـوذٙث رٚبفس ششٟث ٖذيٕٟف ياشث يػاٚ ٗيا ٝشجِا .ٓيٞد ئ ساشل ٖآ يٚس ذؿبث ٝشؿاد ٝيمث بث رٚبفشٔ ي ٝٙئص غد ً٘س ْاذو شٞ ٝو - (Label) اس تؼچشث َششٙو يداذؼس ٖآ زيؼهٚ شييغس ٚ بٞ َششٙو زيجظس ٚ يـوذٙث ٖذيٕٟف ٗيٕٞ شهبح َبح سد ٖآ ي ٜدبفشػا ٗيشس ٟٓٔ ٗىيِ ذؿبث فشلٔ يث شظ٘ ٝث ذيبؿ يشثسبو #3 ُىؿ$ .زػا يدٕٛػ ٚ يمفا ٗيث زٟػ شييغس ْبٍٙٞ ٝث بٞ

ٚ يمفا ٗيث زٟػ شييغس ْبٍٙٞ ٝث بٞ يـوذٙث ٝ٘ ٚ ذ٘ا ٜذؿ زثبط ٝ٘ بٞ

يـوذٙث ٝ٘ ٚ ذ٘ا ٜذؿ زثبط ٝ٘ بٞ َششٙو ،يدٕٛػ زِبح سد يا ٝفشح 6 ُيبثٛٔ صٚذٙيٚ :14 ُىؿ

ذژيبث ذژيٞد يژٔ ساشژل ْشژف يٚس ٝژو ييبٞ َششٙو ئبٕس ياشث .ْشف دٛخ يٚس يٙييبد تؼچشث ٚد ٚ ذ٘ا ٝشفشٌ ساشل ُ٘بد هي يٚس ييلابث تؼچشث ٝػ

خژچ زٕژػ ٚ لابژث يبژٞ ٝژجِ ٝژث زجؼ٘ اس بٞ َششٙو ي ٕٝٞ مشف ؾيد رسٛك ٝث ٛيدٛشػا َاٚظيٚ ٝو اشچ ذيٙو فزح اس ٖآ زيجظس يبٞ ٝلخـٔ

يژٔ ؾيژد يسلاىژـٔ يمفا ٝث يدٕٛػ صا زٟػ شييغس نحٔ ٝث يِٚ ذيآ ئ شظ٘ ٝث ةٛخ يدٕٛػ زِبح سد شثسبو يػاٚ .ذٙو ئ زثبط ٖبؿ شٙيش٘بو

.ذيٙو ٝػٛس 4 ُىؿ ٝث زػا يفبو .ذيآ

.ذيٙو ٝػٛس 4 ُىؿ ٝث زػا يفبو .ذيآ يـوذٙث ٝ٘ ٚ ذ٘ا ٜذؿ زثبط ٝ٘ بٞ

يـوذٙث ٝ٘ ٚ ذ٘ا ٜذؿ زثبط ٝ٘ بٞ َششٙو ،يمفا زِبح سد يا ٝفشح 6 ُيبثٛٔ صٚذٙيٚ :15 ُىؿ

ٝژو يّ٘بژد صا يـخث .ذ٘ٛؿ يٕ٘ ٜذيد يمفا ؾيبٕ٘ سد ذ٘دٛث ٖذيد ُثبل يدٕٛػ ؾيبٕ٘ سد ٝو تؼچشث يبٞ َششٙو ئبٕس ٝو ذيد ذيٞاٛخ ّٝكبفلاث

ي ٝحفژك خژچ ٚ زژػاس زٕژػ ٚ زژػا ٜذژؿ ٛحٔ لأبو يٙييبد تؼچشث زِبح ٗيٕٞ ٝث .زػا ٝشفس ٖٚشيث ٝحفك صا ،زػا ييلابث تؼچشث ُٔبؿ

.ذٞد ئ ٖبـ٘ اس شثسبو يػاٚ يدٕٛػ زِبح ؾيبٕ٘ ٝحفك صا يـخث بفشك يمفا زِبح يٙؼي ٗيا .ذ٘ا ٜذ٘بٔ يِبخ يدٕٛػ زِبح سد ؾيبٕ٘

ي ٝژلخـٔ صا ٜدبفشژػا بژث .ذژييبٕ٘ ٜدبفشژػا يشژػسد ٝژث بژٞ َشژٙو زژيجظس ٚ يـوذٙث صا زػا يفبو يؼيٛ٘ذو ٝث صبي٘ ٖٚذث ُىـٔ ٗيا غفس ياشث

ٗيژيؼس يبژٞ ٝژجِ ٝژث زجژؼ٘ ٖآ ربلشخٔ يٙؼي .ذيساد ٍٝ٘ زثبط ،ؾيبٕ٘ ي ٝحفك ي ٝجِ ذٙچ بي هي ٝث زجؼ٘ اس َششٙو هي ذي٘اٛس ئ Anchor

يبژٞ ٝژجِ ٝژث زجؼ٘ ٍٝ٘ٛچ َششٙو هي ٝو ذيٙو ئ ٗييؼس ضي٘ Dock ي ٝلخـٔ صا ٜدبفشػا بث .ذ٘بٔ ئ زثبط ؾيبٕ٘ زٟػ صا يشِبح شٞ سد ٜذؿ

ذژؿ ذژٞاٛخ ضژػبث ،ٖبؿ قٛفبٔ َششٙو ٝجِ هي ٝث َششٙو ذٙچ يـوذٙث بث .ذٙو شد اس ؾيبٕ٘ ي ٝحفك صا يـخث بي ،ٜذؿ صاشس ؽدٛخ قٛفبٔ َششٙو

28

http://m0911.wordpress.com

يـوذٙث تؼچشث ٗيشسلابث .ذ٘ا ٝشفشٌ ساشل ُ٘بد هي ُخاد ييلابث تؼچشث ٝػ َبظٔ ٗيا سد .ذ٘شيٌ ساشل ٓٞ شػ زـد رسٛك ٝث شظ٘ دسٛٔ يبٞ َششٙو

سد .زژػا ٜذژؿ يـوذٙث ْشف يلابث زٕػ ٝث ٝو زفٌ ٖاٛس ئ يسسبجػ ٝث .زػا ٜذؿ زثبط ُ٘بد يلابث ٚ زػاس ،خچ يبٞ ٝجِ ٝث زجؼ٘ ٚ زػا ٜذـ٘

ٜصاذژ٘ا يژمفا ؾيبژٕ٘ زژِبح سد قخژـٔ سٛژً ٝژث .دشو ذٞاٛخ٘ شييغس زػاس ٚ خچ ،لابث يبٞ ٝجِ بث تؼچشث ي ّٝكبف يمفا ٚ يدٕٛػ زِبح ٚد شٞ

ٗييبژد زٕژػ ٝژث -ذ٘ٛؿ ئ ٜداد ؾيبٕ٘ ٓٞ يٚس ٝو ُ٘بد ُخاد شٍيد تؼچ شث ٚد .ذٙٙى٘ شييغس سٛوزٔ يبٞ ّٝكبف بس دٛؿ ئ شس يسضث تؼچشث

ٝژث اس ؾيبژٕ٘ زژٟػ شژٌا .ذ٘ٛژؿ ٜداد ؾيبٕ٘ بٞ تؼچشث صا هي ْاذو ٝو ذٙو ئ قخـٔ (tab order) تيسشس ي ٜسبٕؿ .ذ٘ا ٜذؿ يـوذٙث ُ٘بد

#5 ُىؿ$ .ذؿ ذٞاٛخ شد بٞ َششٙو يػٛس ْشف حٌػ ي ٕٝٞ ٚ دٛث ذٙٞاٛخ ٜذٞبـٔ ُثبل ٖبٙچٕٞ ْشف يٚس يبٞ َششٙو ي ٕٝٞ ،ذيٞد شييغس يمفا

يبٞ َششٙو ي ٕٝٞ ،ذيٞد شييغس يمفا ٜذؿ يـوذٙث ٚ زثبط يبٞ َششٙو بث

ٜذؿ يـوذٙث ٚ زثبط يبٞ َششٙو بث ،يمفا زِبح سد يا ٝفشح 6 ُيبثٛٔ صٚذٙيٚ :16 ُىؿ

ٝو ٗيا ياشث .ذ٘ا ٜذؿ ٜداد ٜصاذ٘ا شييغس يمفا ؾيبٕ٘ ياشث بٞ َششٙو ٖٛچ ،زػا 4 ُىؿ صا ششٟث تساشٔ ٝث ،ذيٙيث ئ 5 ُىؿ سد ٝو يشثسبو يػاٚ اس فّشخٔ يبٞ زِبح ،ٝشؿازٌ زلٚ ششـيث يٕو زػا يفبو ذيٙو ييبٕ٘ بػ اس بٞ َششٙو ،يـوذٙث بي زيجظس صا ٜدبفشػا بث سٌٛچ ذيبيث ٖبس زػد .ذيٙو ؾيبٔصآ

29

http://m0911.wordpress.com

ٚ هيّو زػاس ٜبٍشػد ُىؿ يٚس .ذيٙو ؾيبٔصآ ذي٘اٛس ئ اس يمفا ٚ يدٕٛػ زِبح ٚد شٞ يشحاس ٝث 2008 ٛيدٛشػا َاٚظيٚ يحاشً ييحٔ سد ساٛ٘ يٚس يبٞ ٕٝود ،ٜدشو #هيّو$ ةبخش٘ا اس ْشف ٝو زػا ٖآ شٍيد ٜاس #6 ُىؿ$ .ذييبٕ٘ ةبخش٘ا اس Rotate Right بي Rotate Left ي ٝٙيضٌ .ذيٙو ٜدبفشػا ؾيبٕ٘ زٟػ شييغس ياشث اس ساضثا

ؾيبٕ٘ زٟػ شييغس ياشث اس ساضثا يحاشً زِبح سد ؾيبٕ٘ زٟػ شييغس :17

يحاشً زِبح سد ؾيبٕ٘ زٟػ شييغس :17 ُىؿ

ذٙو سبو فّشخٔ يبٞ ٜبٍشػد يٚس ٝو يا ٝٔب٘شث يحاشً

ذژي٘اٛس يژٔ ،ذژٙو سبو #يا ٝفشح بي دساذ٘بشػا صا ٓػا$ 6 ُيبثٛٔ صٚذٙيٚ ي ٝؼػٛس ساضثا ذلمٔ يبٞ ْشفسلاد صا يىي يٚس ٝو يساضفا ْش٘ دبؼيا ْبٍٙٞ ٝث

َاٚظژيٚ يژٙؼي دٛژؿ يژٔ ُيذژجس يشٍيد ْشفسلاد ٝث ساضفا ْش٘ زِبح ٗيا سد .ذيٞد شييغس يشٍيد ي ٝؼػٛس ساضثا سد ذلمٔ ْشفسلاد ٝث اس يّؼف ْشفسلاد

ُيذژجس يشژٍيد ْشژفسلاد ٝژث ،ذيا ٝشخبػ يا ٝفشح 6 ُيبثٛٔ صٚذٙيٚ سد ٝو اس يا ٝٔب٘شث ذيٞاٛخث شٌا .ذٞد ئ شييغس اس بٕؿ ي ٝٔب٘شث 2008 ٛيدٛشػا

يبژٞ َشژشٙو ٖآ يا ٝژفشح ؾياشژيٚ زجژؼ٘ ٝژث 6 ُيبثٛٔ صٚذٙيٚ دساذ٘بشػا ؾياشيٚ ٝو بػ ٖآ صا .زؿاد ذيٞاٛخ دٛخ يٚس ؾيد اس يسلاىـٔ ذيٙو

اشژػا ٚ ُژيبذٔبو ذژيذػ ْشفسلاد سد ٝو ذيٞد شييغس ييبٞ َششٙو ٝث ذيبث اس ٜذـ٘ ي٘بجيشـد يبٞ َششٙو ،ذٙو ئ ي٘بجيشـد شثسبو يػاٚ سد اس يششٕو

ٖذژؿ شژس ٜدبژػ ياشث ٝو زػا ٖآ شسشث ي ٜذيا ساضفا ْش٘ ي ٝؼػٛس ٜبٌذيد صا .داد ذٞاٛخ ْبؼ٘ا يشحاس ٝث اس ُيذجس سبو 2008 ٛيدٛشػا َاٚظيٚ .ذ٘ٛؿ

% هيػلا غٙيضيث ي ٝيلا ،بٞ ْشفسلاد يسبٌصبػ ضحث

يبژٞ َششٙو ٝو ذٞد ئ دبٟٙـيد بٕؿ ٝث 2008 ٛيدٛشػا َاٚظيٚ َبح ٗيػ سد ٚ ذ٘ٛؿ ئ يسازٌ زٔلاػ 2008 ٛيدٛشػا َاٚظيٚ يػٛس ،ذ٘ٛؿ يٕ٘

يژٔ ذژيٙو ُيذژجس يشژٍيد ذژلمٔ ْشژفسلاد ٝث اس ٖبس ٜطٚشد ٝو ذيشػاٛخ٘ شٌا .ذيٙو ُيذجس ذيذػ ْشفسلاد بث كجٌٙٔ زِبح ٗيشس هيدض٘ ٝث اس سٛوزٔ

يبژٞ ْشژفسلاد سد اس ٖبس ٝٔب٘شث ذي٘اٛشث يؼيٛ٘ذو ٝؼفد هي بث بس ذيٙو ٜدبفشػا (Visual Form Inheritance) بٞ ْشف يشث صسا رب٘بىٔا صا ذي٘اٛس

.ذييبٕ٘ اشػا فّشخٔ

%

،زژؼي٘ بٙژؿآ ٖبس ياشث حلاٌكا ٗيا ٓٞ شٌا .دشو ٕٝػشس اس يسسبجػ ٗيٙچ ٗيا ذيبج٘ ٝو ذيٙو ئ كيذلس ذيشؼٞ ٗف ُٞا شٌا .ْدشى٘ ٕٝػشس اس حلاٌكا ٗيا Business Logic #ٓػششٔ$ .ذيٙو ٝؼِبٌٔ اس ساضفا ْش٘ ي ٝيلا ٝث ٝيلا يسبٕؼٔ ي ٜسبث سد يجِبٌٔ زػا يفبو »!ذي٘ض٘ زػد دٛخ يبٞ ٜذ٘شيٌ ٝث«

ي٘بجيشژـد ذژيذػ ْشژفسلاد سد ٝژو شثسبو يػاٚ يبٞ َششٙو .ٓيٙو اذػ شثسبو يػاٚ ي ٝيلا صا اس

30

http://m0911.wordpress.com

بٞ ْشف يشث صسا

عٚشژؿ ٝيبد ْشف هي بث ،ششٟث ٖذيٕٟف ياشث .ذٞد ئ بٕؿ ٝث ،شٍيد ْشف صا ْشف هي يشث صسا ٖبٔص سد اس يحاشً ُٔبو رب٘بىٔا 2008 ٛيدٛشػا َاٚظيٚ

ٗژيا زػا ٗىٕٔ ٝو ٗيا دٛػٚ بث .ذٙو سبو ُيبثٛٔ صٚذٙيٚ فّشخٔ يبٞ ْشفسلاد سد ٝو يساضفا ْش٘ ذيِٛس ياشث دٛث ذٞاٛخ يصبغآ ي ٌٝم٘ ٝو ٓيٙو ئ

-ذژٙو ئ دبؼيا اس ٝيبد ْشف ٝو - (class library) علاو يا ٝ٘بخثبشو ُيبف هي دبؼيا ي ٝثشؼس ٗىيِ ،ذيبيث ٓـچ ٝث يسٚشه شيغ َٚا ٜبٍ٘ سد سبو

ٖبژؿ ْاذژو ٚ ذٙشژؼٞ شژييغس ُژثبل ٜذژؿ يشژث صسا يبٞ ْشف سد بٞ َششٙو ْاذو ذيشيٍث دبي بٕؿ ٝو ي٘بٔص عٛهٛٔ ٗيا .دٛث ذٞ اٛخ ذٙٔ ؽصسا سبيؼث

دسٛژٔ َشژشٙو Access Modifier ي ٝژلخـٔ ذيبث ذيٞد شييغس اس بٞ ٖآ دشوسبو بي بٞ َششٙو ذي٘اٛشث ٝو ٗيا ياشث .دساد يششـيث زيٕٞا ،ذٙشؼي٘

.دٛؿ ئ ٜدبفشػا ٖبس ٝٔب٘شث صبغآ ي ّٝحشٔ ٖاٛٙػ ٝث ٝو ذيٙيث ئ ٝيبد ْشف هي 7 ُىؿ سد .ذيٞد شييغس Private صا شيغ يساذمٔ ٝث اس شظ٘

Private صا شيغ يساذمٔ ٝث اس شظ٘ دساذ٘بشػا ُيبثٛٔ صٚذٙيٚ ٜبٍشػد

دساذ٘بشػا ُيبثٛٔ صٚذٙيٚ ٜبٍشػد ياشث ٝٔب٘شث ي ٝيبد ْشف :18 ُىؿ

ٝٔب٘شث ٗيا .زػا ٜدبػ ٗشٔ شٍـياشيٚ هي ٝٔب٘شث ٗيا .زػا ٛٙٔ هي ٚ -ٜدشو شد اس ٝحفك ي ٕٝٞ ٝو - (Edit) شٍـياشيٚ َششٙو هي يٚبح ٝيبد ْشف ٝژو ٗيا بث .ذٙو ئ ٓٞاشف اس يٙشٔ ُيبف فزح بي ْب٘ شييغس ٖبىٔا ٗيٙچٕٞ ٚ ذٞد ئ شييغس اس دٛػٛٔ يٙشٔ ُيبف ياٛشحٔ ،ذٙو ئ دبؼيا يٙشٔ ُيبف اس ُژيبف ذ٘ٛژؼد ،ٖبژؿ ٖدشژو ششّيف ٚ بٞ ٖآ زحاس زيشيذٔ ياشث ٗىيِ ،ذٙشؼٞ يدبػ يٙشٔ يبٞ ُيبف ٖبٕٞ ٝٔب٘شث ٗيا يػٛس ٜذؿ دبؼيا يبٞ ُيبف دساذ٘بشژػا ُژيبثٛٔ صٚذژٙيٚ .زژػا ٗژؿٚس ٓٞ ؾّيِد .زػا ٜذؿ يحاشً دساذ٘بشػا ُيبثٛٔ صٚذٙيٚ ياشث ٝيبد ْشف .ٓيا ٜداد ساشل ٝٔب٘شث ٗيا فٛلخٔ ٖبژـ٘ اس دٛژػٛٔ يبٞ ُيبف زػشٟف يىي ٝو ٓيا ٝشفشٌ شظ٘ سد شٍيد ْشف ٚد ٓٞ بٞ ُيبف زيشيذٔ ياشث .دساد يششٕو يبٞ َششٙو يا ٝفشح ٝث زجؼ٘ ئبژٕس ذژٙو يژٕ٘ ي٘بجيشژـد اس يژؼِٕ ي ٝحفك ،دساذ٘بشػا ُيبثٛٔ صٚذٙيٚ ٝو بػ ٖآ صا .دٛؿ ٜدبفشػا بٞ ٖآ فزح بي ْب٘ شييغس ياشث يشٍيد ٚ ذٞد ْشژ٘ دبژؼيا يٚس ٚ زژفٌ ٓيٞاٛخ٘ اس يٙشٔ شٍـياشيٚ ٝث ىٛثشٔ ربحيهٛس بٔ ِٝبمٔ ٗيا سد .ذ٘ٛؿ ئ ْبؼ٘ا ٛٙٔ يبٞ ٝٙيضٌ كيشً صا بٞ ُيبف ربيّٕػ ٖبژٔ زژػد ْد دٛژّ٘اد ياشژث Mobile Edit ي ٝژٕ٘ٛ٘ ي ٝٔب٘شث ٝو ذٙچ شٞ .ٓيٛؿ ئ ضوشٕشٔ ذٙو سبو بٞ ٜبٍشػد فّشخٔ عاٛ٘ا يٚس ٝو يساضفا .زؼٞ يِٚ ،ذيا ٜذيد 7 ُىؿ سد ٝچ ٖآ بث ؽا يشٞبظ رٚبفس دٛػٚ بث .ذيٙيث ئ يا ٝفشح 6 ُيبثٛٔ صٚذٙيٚ يٚس اشػا َبح سد اس يّكا ْشف بٕؿ 8 ُىؿ سد .زژػا ٜذژؿ ٝفبژها ٖآ ٝث يا ٝفشح 6 ُيبثٛٔ صٚذٙيٚ فٛلخٔ َششٙو هي يمف .زػا ٜذؿ كشـٔ ذيذيد 7 ُىؿ سد ٝو يّكا ْشف ٖبٕٞ صا ْشف ٗيا هژي يٚبژح يّژكا ْشژف ٝژو ٗيا بث .دٚس ئ سبو ٝث بٞ ُيبف زػشٟف ؾيبٕ٘ ياشث زػا اذيد ؾٔب٘ صا ٝو سًٛ ٖبٕٞ ٚ Document List هي يٙؼي

31

http://m0911.wordpress.com

ٝژشفشٌ ساشژل ٖآ يٚس (Document List) »بژٞ ُژيبف زژػشٟف« َششٙو ٖٛچ ذيٙيث يٕ٘ اس ٖآ يحاشً ْبٍٙٞ ٝث يِٚ زػا ٗشٔ شٍـياشيٚ َششٙو صا يژـخث ٝژو ييبٞ َششٙو .دٛـ٘ ٜداد ٖبـ٘ زؼي٘ ْصلا ٝو ي٘بٔص سد »بٞ ُيبف زػشٟف« َششٙو ٝو ٓيٙو ئ يسبو يؼيٛ٘ذو بث ٝٔب٘شث ُخاد .زػا سد ؾّف زٔلاػ هي بث ،ذ٘ا ٝشفشٌ ساشل ذيذػ ْشف سد يشث صسا كيشً صا ٝو اس ييبٞ َششٙو .ذٙػس ئ صسا ٝث ٓٞ ٜذؿ كشـٔ ْشف سد ذٙشؼٞ ٝيبد ْشف .ذ٘ٛؿ ئ قخـٔ #ٛٙٔ َششٙو ذٙ٘بٕٞ$ ٖبؿ خچ زٕػ لابث ي ٝؿٌٛ

ذٙ٘بٕٞ$ ٖبؿ خچ زٕػ لابث ي ٝؿٌٛ يا ٝفشح ُيبثٛٔ صٚذٙيٚ ياشث ٜذؿ

يا ٝفشح ُيبثٛٔ صٚذٙيٚ ياشث ٜذؿ كشـٔ ي ٝيبد ْشف :19 ُىؿ

ٖبژىٔا صا يشحاس ٝث ٚ دٛؿ ئ شس ٜدبػ ساضفا ْش٘ دٛخ ،ذٙٙو ئ ي٘بجيشـد يششـيث يبٞ َششٙو صا يا ٝفشح ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد ٝو بػ ٖآ صا ْشژف يژحاشً ٝژث يصبژي٘ شژٍيد ٝو ٗيا يٙؼي بٞ ُيبف زيشيذٔ ياشث »بٞ ُيبف زػشٟف« َشٙو صا ٜدبفشػا ٖبىٔا .دشو ذٞاٛخ ٜدبفشػا يؼِٕ ي ٝفك ،زژػا يا ٝفشح ٚ دساذ٘بشػا ُيبثٛٔ صٚذٙيٚ ْشفسلاد ٚد شٞ سد ٜدبفشػا ياشث #يياشػا$ يشٙيبث ُيبف هي بؼيا بٔ يّكا فذٞ ٝو بػ ٖآ صا .زؼي٘ ذيذػ .ٓيٞد ؾيبٕ٘ اس ٖآ تػبٙٔ ْشف ٚ ٓيٞد قيخـس ،دٛؿ ئ اشػا ٖآ سد ٝٔب٘شث ٝو اس يٞبٍشػد ٓي٘اٛس ئ ٖآ ياشػا عٚشؿ ْبٍٙٞ ٝث ُژيبف صا يژـخث ٝژو - اس شيص ذو ٝؼٌل .ذٙو ئ ٓٞاشف ٖبس ياشث اس ٜبٍشػد عٛ٘ قيخـس ٖبىٔا يشحاس ٝث .NET Compact Framework 3.5 :ذيٙيجث زػا Program.cs

static void Main()

{

 

if (SystemSettings.Platform == WinCEPlatform.PocketPC)

{

Application.Run(new MainFormTouch());

}

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

{

Application.Run(new MainFormNoTouch());

}

}

32

http://m0911.wordpress.com

.ٓيژٙو يژٔ ٜدبفشژػا ٖبژٔ ٝژٔب٘شث يّكا ْشف ٖاٛٙػ ٝث اس MainFormTouch بي MainFormNoTouch ْشف ٚد صا يىي ،ٜبٍشػد عٛ٘ ٝث ٝشؼث

شثسبژو شژٌا لاظژٔ .ٓيژٙو يژٔ ٜدبفشػا ٜسبثٚد ،يا ٝفشح ُيبثٛٔ صٚذٙيٚ سد اس (Main) يّكا ْشف رب٘بىٔا بٔ ٝو زػا ٗيا ْشف يشث صسا يلاكا زيضٔ

ياشژث ٝژو (event handler) يداذژيٚس شيذژٔ ،دٛژؿ ئ اشػا ٖآ سد ٝٔب٘شث ٝو يٞبٍشػد عٛ٘ صا شظ٘ فشك ،ذٙو هيّو ٛٙٔ سد اس New ي ٝٙيضٌ

:ذؿ ذٞاٛخ اشػا ،ٓيا ٜدشو فيشؼس MainFormNoTouch ي ٝحفك سد ٛٙٔ ي New ي ٝٙيضٌ

protected virtual void menuNew_Click(object sender, EventArgs e)

{

 

autoSave = false;

if (tbWorkArea.Text.Length != 0)

{

 

if (MessageBox.Show("Save contents before creating a new file", "Save current contents", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)

{

EditLogic.WriteFile(fileName, tbWorkArea.Text);

}

tbWorkArea.Text = string.Empty;

 

}

autoSave = true; fileName = EditLogic.FileName;

}

دٛخ رب٘بىٔا ذيٙيث ئ ٝو سًٛ ٖبٕٞ .ٝ٘ بي ذٙو ٜشيخر ،ذيذػ ُيبف دبؼيا صا ُجل اس ٜدبفشػا َبح سد يبٞ ُيبف بيآ ٝو ذيػشد ذٞاٛخ شثسبو صا ذو ٗيا

هژژيػلا ٗژژـيىيّدا ي ٝژژيلا صا ُژژٔبو سٛژژً ٝژژث اس شثسبژژو يژژػاٚ ي ٝژژيلا ٝژژو دساد ساشژژل EditLogic ْبژژ٘ ٝژژث يشژژٍيد علاژژو سد شٍژژـياشيٚ

سد ذژيبث ٝژو ييبٞ زيّثبل صا يىي ،دٛؿ اشػا يا ٝفشح ُيبثٛٔ صٚذٙيٚ ُٔبػ ٓشؼيػ بث ٜبٍشػد سد ٝٔب٘شث شٌا .ذٙو ئ اذػ (Application Logic)

شژيص ذژو ٝژؼٌل كثبٌٔ menuNew_Click داذيٚس شيذٔ َبٌثا بث اس سبو ٗيا .زػا »بٞ ُيبف زػشٟف« َششٙو دٛؿ َبؼف شيغ ٝٔب٘شث ياشػا ياذشثا

:ٓيٞد ئ ْبؼ٘ا

protected override void menuNew_Click(object sender, EventArgs e)

{

base.menuNew_Click(sender, e); documentList.Visible = false; MinimizeBox = false;

}

ذژو يژخ ٚد غذػ دٛؿ ئ اشػا ٝيبد ْشف سد ٜذؿ ٝشؿٛ٘ ذو اذشثا ،ذيبٕ٘ ئ ةبخش٘ا اس New ي ٝٙيضٌ يا ٝفشح ُيبثٛٔ صٚذٙيٚ سد شثسبو ٝو ي٘بٔص ٜذژيد ياشژث »بژٞ ُيبف زػشٟف« َششٙو ٖدشو يفخٔ ياشث تيسشس ٝث بٞ سٛشػد ٗيا .ذ٘ٛؿ ئ اشػا ذٙشؼٞ عششػد سد يا ٝفشح صٚذٙيٚ سد يمف ٝو .ذ٘ٛؿ ئ اشػا ،ْشف ٖاٛٙػ ساٛ٘ سد OK ي ٕٝود هي ؾيبٕ٘ ٚ »ٗشٔ ٝجؼػ« َششٙو ٖذؿ ي ٝژٙيضٌ يٚس شژٌا .ذژييبٕ٘ ٝفبژها MainFormTouch.cs ُژيبف ٝژث يشژػد سًٛ ٝث اس ٖآ ذيبث menuNew_Click داذيٚس شيذٔ َبٌثا ياشث سد ٝژو ذژٙو يژٔ دبژؼيا menuNew_Click_1 ْبژ٘ ٝث ذيذػ داذيٚس شيذٔ هي ٛيدٛشػا َاٚظيٚ ،ذيٙو هيّو ُثاد ْشف يحاشً ييحٔ سد New .ذؿ ذٞاٛخ ي٘اٛخاشف ،ٝيبد ْشف سد يّكا menuNew_Click داذيٚس شيذٔ ي٘اٛخاشف صا غد ،اشػا ٖبٔص

33

http://m0911.wordpress.com

ٓشؼيػ غثبٙٔ ٝث ٝػٛس

ي٘بژٔص ٝثبژـٔ سًٛ ٝث .دٛؿ ئ ي٘اٛخاشف داذيٚس هي #دشيٌ ساشل ٝٙئص غد سد$ دٛؿ يفخٔ ٝٔب٘شث يّكا ْشف ٝو ٖبٔص شٞ ٜبٍشػد َذٔ صا شظ٘ فشك ياشث ٓي٘اٛس ئ اس بٞ داذيٚس ٗيا .دٛؿ ئ ي٘اٛخاشف يشٍيد داذيٚس ،دشيٌ ئ ساشل صٚذٙيٚ ٝٙئص ؾيد سد ٚ دٛؿ ئ َبؼف دذؼٔ ٝٔب٘شث يّكا ْشف ٝو ي ٝظفبح ٝٔب٘شث َبح ٗيا سد #شٕيبس ٖدشو َبؼف شيغ لاظٔ$ .ٓييبٕ٘ ٜدبفشػا ،دٛؿ ئ اشػا ٕٝٙيص غد سد ٝٔب٘شث ٝو ئبٍٙٞ ٓشؼيػ غثبٙٔ يصبػ داصآ يژٔ ٜدبفشژػا يشسبث ٖاٛس ٗيششٕو ٖآ غجس ٝث ٚ ؽصادشد ٗيششٕو صا ٖبىٔلاا يشح ٚ ذيبٕ٘ ئ داصآ ،زؼي٘ ٖآ ٝث يصبي٘ ٝو ي٘بٔص اس ؽا ٜدبفشػا دسٛٔ .ذٙو :#شيص ذو$ ذٙو ئ ٜشيخر ُيبف هي سد اس ٗشٔ ٝجؼػ ياٛشحٔ زلٛٔ سًٛ ٝث دشيٍث ساشل ٝٙئص غد سد Mobile Editor ي ٝٔب٘شث شٌا

protected virtual void MainFormNoTouch_Deactivate(object sender, EventArgs e)

{

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

{

EditLogic.WriteFile(fileName, tbWorkArea.Text); tbWorkArea.Text = string.Empty; autoSave = true;

}

}

ذژٞد يژٔ ؾيبژٕ٘ tbWorkArea ٗشژٔ ٝژجؼػ سد ،ٜدشژو يثبژيصبث اس سٛوزژٔ ُيبف ياٛشحٔ ،دشيٍث ساشل ٝٙئص ؾيد سد ٜسبثٚد ٝٔب٘شث ٝو ئبٍٙٞ ٚ :#شيص ذو$

protected virtual void MainFormNoTouch_Activated(object sender, EventArgs e)

{

if (autoSave)

{

tbWorkArea.Text = EditLogic.ReadFile(fileName);

}

}

34

http://m0911.wordpress.com

ْشژ٘ يسبژٕؼٔ ياشژث ٓٞ يشىف ٝو ٗيا بٔا ،زػا شيزد ٖبىٔا ،ذٙو سبو ُيبثٛٔ صٚذٙيٚ دساذ٘بشػا ٚ يا ٝفشح ؾياشيٚ ٚد شٞ سد ٝو ييبٞ ساضفا ْش٘ ذيِٛس سبو ٗيا ،ذيشيٍث شظ٘ سد عٛٙشٔ يبٞ ٜبٍشػد سد اس فّشخٔ يساضفا زخػ رب٘بىٔا ذيؿبث ْضّٔ ٝو ي٘بٔص ٜظيٚ ٝث .زػا يػبػا ٚ ٟٓٔ سبيؼث ذيٙىث ساضفا .زػا عسبخ ِٝبمٔ ٗيا ي ّٝكٛح صا ٝشجِا ذك ٝو دٛث ذٞاٛخ شس ٜذيچيد

ٝشجِا ذك ٝو دٛث ذٞاٛخ شس ٜذيچيد فّشخٔ يبٞ ٜبٍشػد يٚس اشػا َبح سد

فّشخٔ يبٞ ٜبٍشػد يٚس اشػا َبح سد Mobile Edit ي ٝٔب٘شث :9 ُىؿ

اس يژِششٙو شژٞ ٝژشجِا .ذيژؿبث ٝشژؿاد يثبژؼح ٚ زػسد ي ٜذيا هي ذيبث Windows Forms يحاشً ييحٔ سد بٞ ْشف يشث صصا صا ٜدبفشػا ياشث ذژيٞاٛخ يژٔ شژٌا ذژؿبث ٖبژسدبي يژمف .ذييبٕ٘ ٜدبفشػا ضي٘ ٜذؿ كشـٔ يبٞ ْشف سد اس ٖآ ذيٞاٛخث ٝو يًشؿ ٝث ذيٞد ساشل ٝيبد ْشف يٚس ذي٘اٛس ئ

public بي protected بث اس َششٙو Modifiers ي ٝلخـٔ ذيبث ،ذيٞد شييغس ٜذؿ كشـٔ ْشف سد اس َششٙو هي دشوسبو

شژٌا .ذژيٙو يژٞد ساذمٔ

شژييغس اس ٖآ بي ،ٜدشو يـوذٙث بي يفخٔ اس ٖآ ذي٘اٛس ئ يمف ٜذؿ كشـٔ ْشف سد ،ذيٞذث ساذمٔ private بث اس َششٙو هي Modifiers ي ٝلخـٔ .ذيٞذث ٜصاذ٘ا

35

http://m0911.wordpress.com

مراهچ لصف

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

36

http://m0911.wordpress.com

ٝٔذمٔ َاٚظژيٚ بي هيؼيث َاٚظيٚ ٖبثص ٚد صا يىي ٝو ي٘بٔص ٜظيٚ ٝث دساد حبشىػد سد ساضفا ْش٘ ي ٝؼػٛس ٝث يدبيص زٞبجؿ ُيبثٛٔ صٚذٙيٚ ساضفا ْش٘ ي ٝؼػٛس ذژيٙو يژٔ ٜدبفشژػا ٓژٞ ُيبثٛٔ صٚذٙيٚ ياشث اس حبشىػد صٚذٙيٚ يبٞ ٝٔب٘شث ي ٝؼػٛس يبٞساضثا ٖبٕٞ بٕؿ .ذيٙو ئ ٜدبفشػا اس ز٘ راد حسبؿ يػ ُژثبل ٗيژٙچٕٞ ٚ ذ٘ساد شس دٚذحٔ غثبٙٔ ٚ شس هچٛو ؾيبٕ٘ ي ٝحفك ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد .زؼٞ ييحٔ ٚد ٗيا ٗيث ضي٘ ييبٞ رٚبفس ٗىيِ .ذٙٙو ئ ٜدبفشػا يشسبث تّغا ،ٜدٛث ُٕح ذيٙو ٝفبها ٖبس ٝٔب٘شث ٝث اس يؿسبفػ يبٞ َششٙو .ذيٙو دبؼيا ُيبثٛٔ ياشث ،ْشف صٚذٙيٚ يبٙجٔ شث يبٞساضفا ْش٘ سٌٛچ ٝو ذيشيٌ ئ دبي ِٝبمٔ ٗيا سد ٚ ساضژفا ْشژ٘ ُژخاد GPS ساضژفا زخژػ دشثسبو ٜٚلاػ ٝث .ذيٙو ٗيشٕس اس يحاشً ييحٔ ُٔبو ي٘بجيشـد بث يؿسبفػ يبٞ َششٙو ٗشخبػ يٍٍ٘ٛچ ٚ .زفشٌ ذيٞاٛخ اشف ضي٘ اس (Multi Threaded) يؿصادشد ذٙچ ي ٝٔب٘شث هي ُخاد اس شثسبو يػاٚ يبٞ َششٙو شيدبمٔ ي٘بػس صٚس ٝث ٗيٙچٕٞ

ٖبسدٛخ ي ٝٔب٘شث ٝث يؿسبفػ يبٞ َششٙو ٖدٚضفا

دساذ٘بشژژػا يبژژٞ َشژژشٙو ي ٝژژػٕٛؼٔ سد ٝژژو ذژژيٙو اذژژيد صبژژي٘ يژژكبخ يبژژٞ َشژژشٙو ٝژژث ُژژيبثٛٔ صٚذژژٙيٚ ي ٝژژٔب٘شث ي ٝؼژژػٛس ْبژژٍٙٞ ٝژژث شژژٌا :زؿاد ذيٞاٛخ ٚس ؾيد اس شيص يبٞ ُح ٜاس ،ذٙشؼي٘ .NET Compact Framework

ذيٙو زػسد ٖبس يّؼف ي ٝٔب٘شث ياشث يمف شثسبو يػاٚ َششٙو هي

ذيٙو زػسد ،ذؿبث ٜدبفشػا ُثبل ٓٞ شٍيد ي ٝٔب٘شث سد ٝو شثسبو يػاٚ َششٙو هي

ذيٙو يساذيشخ ٖبسشظ٘ دسٛٔ رب٘بىٔا بث شثسبو يػاٚ َششٙو هي

.زفشٌ ذيٞاٛخ دبي دٛػٛٔ يبٞ َششٙو بث تيوشس ٚ دذؼٔ ي ٜدبفشػا كيشً صا ٓٞ ٚ اذشثا صا ٓٞ اس بٞ َششٙو دبؼيا ؽٚس ٝػ ِٝبمٔ ٗيا سد

#يؿسبفػ$ شثسبو يبٞ َششٙو

يبژٞ َششٙو دبؼيا 2008 ٛيدٛشػا َاٚظيٚ سد .ذ٘ٚس ئ سبو ٝث ذيذػ َششٙو هي ٖدشو زػسد ٚ دٛػٛٔ َششٙو ذٙچ تيوشس بث لإٛؼٔ بٞ َششٙو ٗيا هژي ذيٙو ئ دبؼيا ذيذػ َششٙو هي يشلٚ .دٛؿ ئ ي٘بجيشـد (User Control Project) ٖآ ي ٜطٚشد عاٛ٘ا صا يىي يػٛس ُٔبو سًٛ ٝث شثسبو بژث اس دٛژػٛٔ َشژشٙو ذٙچ ذي٘اٛس ئ بٕؿ شثسبو َششٙو هي بث .ذيٞد ئ ساشل ٖآ يٚس اس بٞ َششٙو ٝو ذيآ ئ ذيذد شٙيش٘بو ذٙ٘بٔ يحاشً ي ٝحفك شثسبژو َشژشٙو هژي بٕژؿ 1 ُىژؿ سد .ذژؿبث دشفٙٔ َششٙو هي ذٙ٘بٔ ٖآ دشىّٕػ يجيوشس َششٙو صا ٜدبفشػا ْبٍٙٞ ٝث ٝو يسًٛ ٝث ذيٙو تيوشس ٓٞ يژٔ ٝژو زژػا (TextBox) ٗشژٔ ٝژجؼػ َششٙو ٚد ٚ (Label) تؼچشث َششٙو ٚد ُٔبؿ سٛوزٔ َششٙو .ذيٙيث ئ 2008 ٛيدٛشػا َاٚظيٚ ُخاد سد َشژشٙو ٗژيا دٛژؿ يژٔ ُژيبذٔبو ٜطٚشژد ٝو ي٘بٔص .ذيٙو ٜدبفشػا يسبػلاًا ه٘بث ٓشؼيػ هي ٝث دٚسٚ ياشث لاظٔ ،شثسبو يؼٙػ سبجشػا ياشث ذي٘اٛس يژؼيٛ٘ذو ،شثسبژو َشژشٙو ٗژيا سد .ددشژٌ ٜدبفشژػا ُژيبثٛٔ صٚذژٙيٚ شٍيد ي ٜطٚشد شٞ يػٛس ٜذٙيآ سد بس دٛؿ ئ ٜشيخر ؽدٛخ ٝث ىٛثشٔ يّجٕػا حٌژػ بژث شيغشٔ ٚد فيشؼس صا زػا رسبجػ شثسبو َششٙو ٗيا ُخاد صبي٘ دسٛٔ ذو بٟٙس .زؼي٘ ْصلا ٖآ يٚس يؿسبفػ َششٙو ٖداد ساشل صا غد ي٘اذٙچ ي ٝژلخـٔ .زژػا شثسبژو ْبژ٘ يژٞد ساذژمٔ ٗيژٙچٕٞ ٚ ٝژٔب٘شث هژي ُخاد ٜطاٚسزٌ ٚ شثسبو ْب٘ ٖدسٚآ زػد ٝث ياشث (Public) ئٕٛػ يػششػد .دشژيٍث شژظ٘ سد ؽدٛژخ ياشژث صبؼٔ ي ٜطاٚسزٌ هي ُلاذح ٝو ذٙو سٛجؼٔ اس شثسبو بس زػا (Read-only) ي٘ذ٘اٛخ يمف #ٜطاٚسزٌ$ Password ٖآ صا دذژؼٔ ي ٜدبفشژػا ٖبژىٔا ٚ َشژشٙو بژث سبو يشحاس شٔا ٗيا ُيِد .شثسبو َششٙو ُخاد ٝ٘ دٛؿ ئ ْبؼ٘ا ٝٔب٘شث ُخاد سد ٜطاٚسزٌ يؼٙػ سبجشػا .زػا

37

http://m0911.wordpress.com

http://m0911.wordpress.com شثسبو يؼٙػ سبجشػا ياشث يؿسبفػ َششٙو :20 ُىؿ اشژشجػا

شثسبو يؼٙػ سبجشػا ياشث يؿسبفػ َششٙو :20 ُىؿ

اشژشجػا َشژشٙو .ذژيصاذٙيث ْشف يٚس ٚ ذيـىث ٛيدٛشػا َاٚظيٚ ساضثا ٝجؼػ صا اس ٖآ زػا يفبو ٝٔب٘شث ُخاد شثسبو يؼٙػ سبجشػا َششٙو صا ٜدبفشػا ياشث صبژث يٛژٙٔ صا ٚ ذژيٙو هژيّو زػاس ساضثا ٝجؼػ General ؾخث يٚس زؼخ٘ ذيبث .دٛؿ يٕ٘ ٜداد ٖبـ٘ ساضثا ٝجؼػ سد سبودٛخ سًٛ ٝث شثسبو يؼٙػ ساضژثا ٝجؼػ سد سٛوزٔ َششٙو بس ذيٙو ٜسبؿا زػا شثسبو يؼٙػ سبجشػا َششٙو يٚبح ٝو يّجٕػا ُيبف ٝث ٚ ذي٘ضث اس Choose Items ي ٝٙيضٌ ،ٜذؿ ذژيشٍٙث ٓژٞ ساضثا ٝجؼػ ٝث شٌا .ذيٙيث ئ ٝٔب٘شث ُخاد اس (User Credentals) يؼٙػ سبجشػا َششٙو ؾيبٕ٘ يٍٍ٘ٛچ بٕؿ 2 ُىؿ سد .دٛؿ شٞبظ صا غژد .ذژيٞد ساشژل دٛژخ ْشف يٚس اس ٖآ ذي٘اٛس ئ ي٘بػآ ٝث ٝو ذيد ذيٞاٛخ ساضثا ٝجؼػ General ؾخث سد اس UserCredentals ْب٘ بث َششٙو ٝژث َبژح ٗيژػ سد ٚ يژحاشً ييحٔ سد يٞد ساذمٔ ُثبل ٝو - UserName ي ٝلخـٔ هي (Properties) ربلخـٔ ي ٜشؼٙد سد بٕؿ سبو ٗيا ذژيد ذيٞاٛخ ربلخـٔ ي ٜشؼٙد سد يششؼوبخ ً٘س بث اس Password ي ٝلخـٔ َبح ٗيػ سد .ذيٙيث ئ -زػا ٝٔب٘شث ُخاد يؼيٛ٘ ذو رسٛك دساٚ ٝژٔب٘شث ياشژػا ْبٍٙٞ ٝث شثسبو يػٛس ٝو ٖآ صا غد ؽساذمٔ يِٚ زؼي٘ يٞدساذمٔ ُثبل ٝلخـٔ ٗيا .زػا ٖآ ٖدٛث ي٘ذ٘اٛخ يمف ُيِد ٝث ٝو .دٛث ذٞاٛخ #ٖذ٘اٛخ$ يثبيصبث ُثبل ،ذؿ

38

http://m0911.wordpress.com

http://m0911.wordpress.com ٝٔب٘شث هي ُخاد يؿسبفػ َششٙو :21 ُىؿ ٜذؿ يشث صسا يبٞ

ٝٔب٘شث هي ُخاد يؿسبفػ َششٙو :21 ُىؿ

ٜذؿ يشث صسا يبٞ َششٙو

بٕؿ ٜاٛخِد كثبٌٔ ٖآ دشوسبو ٝو ذيساد ْصلا ٗىيِ ذيٙو ئ ٜدبفشػا اس .NET Compact Framework ئٕٛػ َششٙو هي لاظٔ ربلٚا يٞبٌ زػاٛخ ٝچ شٞ ٝو ذيٞد ٜصبػا شثسبو ٝث ذي٘اٛس ئ بٕؿ ٝشجِا .دٕٛ٘ دساٚ ٖآ سد دٛـث اس دذػ يمف ٝو (TextBox) ٗشٔ ٝجؼػ هي لاظٔ .ذٙو شييغس هي رسٛك ٝث بي ٖبس ٝٔب٘شث ُخاد ٜاٛخ يؿسبفػ َششٙو هي دبؼيا بٔا .ذيٙو يؼٙػ سبجشػا اس ٖآ ٝٔب٘شث ُخاد سد ،ربػلاًا دٚسٚ صا غد ٚ ذيبٕ٘ دساٚ ٗيا سد .زػا يششٟث ي ٜذيا دشيزذث بٞ ٜداد دٚسٚ ْبٍٙٞ ٝث #بميلد$ يدذػ يبٞششواسبو بفشك ٝو ،يدبػ ٗشٔ ٝجؼػ صا ٜذؿ كشـٔ ياضؼٔ َششٙو رسٛك ٗشٔ ٝجؼػ (inherited) ي ٜذؿ يشث صسا َششٙو ُخاد يؼٙػ سبجشػا ٝو اشچ زؿاد ذيٞاٛخ ٖبس ٝٔب٘شث سد اس يششٕو يؼيٛ٘ذو بٕؿ ؽٚس يحاشً ُٔبو رب٘بىٔا ذيذػ ٗشٔ ٝجؼػ ٓٞ صبث ،يِٕٛؼٔ ٗشٔ ٝجؼػ بث ٝؼيبمٔ سد ذيذػ ٗشٔ ٝجؼػ ٗيا يبٞ زيّثبل ٖذؿ دٚذحٔ دٛػٚ بث .دشيٌ ئ ُيبذٔبو ٚ دبؼيا اضؼٔ سًٛ ٝث اس سٛثضٔ َششٙو شٌا ٜٚلاػ ٝث .ذٞد ئ ساشل بٕؿ سبيشخا سد اس يّكا ٗشٔ ٝجؼػ يبٞ داذيٚس ٚ بٞ ٝلخـٔ ي ٕٝٞ ُٔبؿ هي زؼخ٘ ،اضؼٔ رسٛك ٝث numericTextbox ْب٘ بث َششٙو هي دبؼيا ياشث .ذييبٕ٘ ٜدبفشػا ٖآ صا ذي٘اٛس ئ يدذؼشٔ يبٞ ٝٔب٘شث سد ذيٙو ٝجؼػ هي ُيذجس ياشث ذو يخ ذٙچ .ذيٙو دبؼيا ٚ ةبخش٘ا Smart Device Project ي ٌٝشث سد اس Class Library عٛ٘ صا ذيذػ ي ٜطٚشد ئ شثسبو ٝث اس BackSpace ذيّو ٚ يدذػ يبٞ ٜداد دٚسٚ ي ٜصبػا بفشك ٝو زؿاد ذيٞاٛخ صبي٘ ،شظ٘ دسٛٔ يدذػ ٗشٔ ٝجؼػ ٝث يِٕٛؼٔ ٗشٔ .ذٞد

39

http://m0911.wordpress.com

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 داذيٚس ٗيٕٞ يّجل ؾخث سد ٝو زػا شثسبو يؼٙػ سبجشػا َششٙو صا ٜدبفشػا ؽٚس ٖبٕٞ ٝث ٝٔب٘شث ُخاد يدذػ ٗشٔ ٝجؼػ صا ٜدبفشػا .ذييبٕ٘ ي٘اٛخاشف .ذيذيد ِٝبمٔ

.ذييبٕ٘ ي٘اٛخاشف .ذيذيد ِٝبمٔ صبػ ٝيجؿ ُخاد اشػا ٚ يحاشً زِبح

صبػ ٝيجؿ ُخاد اشػا ٚ يحاشً زِبح سد #يدذػ ي ٜداد دٚسٚ$ NumericTextBox ٚ #شثسبو يؼٙػ سبجشػا$ UserCredentials يبٞ َششٙو :22 ُىؿ

40

http://m0911.wordpress.com

يؿسبفػ يبٞ َششٙو اس ٖبژسدٛخ يژؿسبفػ َششٙو ذي٘اٛس ئ ذيساد صبي٘ ذيذػ يبٞ َششٙو ٝث يِٚ ذيٙو #يؼيٛ٘صبث$ ٜدبفشػا ٜسبثٚد اس دٛػٛٔ يبٞ َششٙو ذيٞاٛخ يٕ٘ شٌا علاژژو صا اس بژژٞ ٖآ َبژژظٔ ٖاٛژژٙػ ٝژژث ذژژي٘اٛشث شژژٌا يژژشح ذ٘ٛژژؿ يژژٔ ٝشژژؿٛ٘ شفژژك ي ٝژژٌم٘ صا بژژٞ َشژژشٙو عٛژژ٘ ٗژژيا لاٛژژٕؼٔ .ذيصبژژؼث زػد بٞ َششٙو عٛ٘ ٗيا ٝث .ذٙؿبث ٝشؿاد اس بٞ َششٙو ئٕٛػ يبٞ ييآسبو ُلاذح ٝو ذييبٕ٘ يشث صسا System.Windows.Forms.Control ٜاس ٗيشژس ٖبژػآ .زژؼي٘ يژؿسبفػ يبٞ َششٙو ياشث يا ٜدبٔآ يٍِٛا 2008 ٛيدٛشػا َاٚظيٚ سد .ذٙيٌٛ ئ ٓٞ (Own Drawn Controls) صبػ هي يشػد رسٛك ٝث ٚ ذيٙو فزح اس شثسبو َششٙو ذي٘اٛس ئ يِبخ ي ٜطٚشد دبؼيا صا غد .زػا ٛيدٛشػا َاٚظيٚ ُخاد شثسبو َششٙو هي دبؼيا ٖبٕٞ .ذييبٕ٘ ٝفبها ٖآ ٝث 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);

}

}

ٗژيا ٝشجِا .ذيٙو ًُبث اس OnPaint ذشٔ زػا يفبو سٛظٙٔ ٗيذث .ذيٙو (Paint) ٓيػشس اس ٖآ ٖبسدٛخ ذيبث شفك صا يؿسبفػ َششٙو هي دبؼيا ياشث ٓيػشس ٝو بػ”آ صا .دٛؿ ئ ٝفبها ٖبس ٝٔب٘شث عسٛػ ٝث 2008 ٛيدٛشػا َاٚظيٚ يػٛس سبودٛخ سًٛ ٝث يؿسبفػ َششٙو دبؼيا ي ٝظحِ ٖبٕٞ صا دسٛٔ زژيٕٞا بٕژؿ يصبژػ ٜدبيد ؽٚس ييآسبو ٚس ٗيا صا ،ذيبيث ؾيد بٞ سبث ٚ بٞ سبث زػا ٗىٕٔ ٖآ صا ٜذٙٙو ٜدبفشػا ي ٝٔب٘شث ياشػا ْبٍٙٞ ٝث ٖبس َششٙو ذژشٔ ُژخاد سد هژيفاشٌ ٝژث ىٛژثشٔ يبژٞ علاو صا لإٛؼٔ ٝو بػ ٖآ صا .ٓشؼيػ غثبٙٔ صا ٜدبفشػا ٓٞ ٚ ييآسبو ٓٞ غلاٚ سد .ذٙو ئ اذيد ٖاذٙچٚد سبژث شٞ صا غد ٜدبفشػا دسٛٔ غثبٙٔ يصبػ داصآ ٚ يصبؼوبد ذيٙو ئ ٝؼػاشٔ يّكا ذو ٝث بٞ علاو ٗيا صا ٜدبفشػا سد ٚ ذيٙو ئ ٜدبفشػا OnPaint ٜدشژو ٜدبژيد using سٛشػد بث تيوشس رسٛك ٝث اس Dispose ذشٔ هي ٝو ذيٙو ٜدبفشػا ييبٞ علاو صا زػا ششٟث C# سد .زػا ٟٓٔ سبيؼث ٓيػشس صا بٕژؿ غژلاٚ سد .دٛژؿ يژٔ اشػا ٓٞ ئؿ هي يبٞذشٔ ي٘اٛخاشف ْبٍٙٞ ٝث بٌخ صٚشث سد يشح Dispose ٝو ذٙو ئ ٗيٕوس using سٛشػد .ذٙؿبث .ذيٞد ؾيبٕ٘ اس ٗشٔ هي ذيٞاٛخ ئ لاظٔ .زػا زحاس ٖبس َبيخ (Exception Handling) بٞبٌخ زيشيذٔ زثبث

41

http://m0911.wordpress.com

ششٔاسبژد صا يژـخث رسٛك ٝث اس

Graphics عٛ٘ صا ءيؿ ٚ ذيٙو ي٘اٛخاشف OnPaint ذشٔ ُخاد اس ٖآ ٚ ذييبٕ٘ ٜدبفشػا اس شيص ذو ٝؼٌل ذي٘اٛس ئ :ذيشػشفث ٖآ ُخاد ٝث 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);

}

}

}

يشژٍيد ٚ Font يژىي ،ذژيساد ْصلا ٓژٞ شژٍيد Graphics عٛژ٘ صا ءيؿ ٚد .دٛث َششٙو هي ُخاد ٗشٔ ؾيبٕ٘ ياشث ٜدبػ ذشٔ هي ذيذيد ٝچ ٖآ ذژيشجث سبو ٝث using سٛشػد بث اس بيؿا ٗيا ٝو ي٘بٔص .ذ٘ٛؿ ئ دبؼيا DisplayLabelInfo ي٘اٛخاشف ْبٍٙٞ ٝث بٞ ٗيا يٚد شٞ ٝو SolidBrush #يژػششػد$ فژيشؼس ي ٜدٚذژحٔ صا عسبژخ ٝث ٝٔب٘شث َششٙو ٝو ي٘بٔص سد زػسد Dispose ذشٔ ٖٛچ زؿاد ذٞاٛخ يشسلابث ييآسبو بٞ ٖآ يصبؼوبد ٝث يصبي٘ ٖٛچ دٛؿ ئ اشػا (Garbage Collection) ٝظفبح يصبؼوبد ْبٍٙٞ ٝث يششٕو راسٛشػد ٝؼيش٘ سد ٚ دٛؿ ئ ي٘اٛخاشف ،دٚس ئ ءيؿ دٚذژحٔ غثبژٙٔ صا بژٞ ٖآ ٝو ٖآ ُيِد ٝث - ذيساد سبو ٚ شػ هيفاشٌ ٝث ىٛثشٔ يبٞ علاو بث ٝو ي٘بٔص ٜظيٚ ٝث ؽٚس ٗيا .زؼي٘ Finalize ي٘اٛخاشف .زػا ذيفٔ سبيؼث -ذ٘ٛؿ داصآ زلٚ عشػا سد ذيبث ٝو ذٙٙو ئ ٜدبفشػا يّحٔ ،زژؿاد ذژٞاٛخ ؽشد زِبح ؾيبٕ٘ ٝحفك ذيٞد ْبؼ٘ا Graphics ي ٕٝ٘ٛ٘ يذو هي صا ٜدبفشػا بث اس يىيفاشٌ يبٞ ٓيػشس ْبٕس بٕيمشؼٔ بٕؿ شٌا شژٞ بٕؿ ٝو ٗيا يٙؼي .زػا شفبث هيٙىس صا ٜدبفشػا سبو ٗيششٟث زِبح ٗيا سد .ذيا ٝشؿٛ٘ دٛخ OnPaint ذشٔ سد اس يدبيص يبٞذو ٝو ي٘بٔص ٜظيٚ ٝث بژٞ ٖآ ي ٝژٕٞ ٓيػشس صا غد ٚ ذيٞد ْبؼ٘ا يّكا ي ٝظفبح سد Graphics ي ٝ٘بٌ اذػ يبٞ ٕٝ٘ٛ٘ سد اذشثا ذيٙو ٓيػشس ذيٞاٛخ ئ ٝو اس يضيچ .ذيٙو يذو ذٞد ئ ْبؼ٘ا اس ؾيبٕ٘ ي ٝحفك يٚس ٓيػشس ٝو Graphics ءيؿ ٝث يّكا ي ٝظفبح صا اس Graphics ءيؿ ياٛشحٔ :ذيٞد ْبؼ٘ا ذيبث اس شيص ُحاشٔ شفبث صا ٜدبفشػا ياشث .ذيٞد ئ ؾيبٕ٘ ٖآ يٚس ٗشٔ هي بث ٜاشٕٞ شيٛلس هي ذيٙو مشف

protected override void OnPaint(PaintEventArgs pe)

{

 

// Initialize a Graphics object with the bitmap we just created // and make sure that the bitmap is empty. Graphics memoryGraphics = Graphics.FromImage(memoryBitmap); memoryGraphics.Clear(this.BackColor); // Draw the control image in memory memoryGraphics.DrawImage(someImage, destRect, imageRect, GraphicsUnit.Pixel);

// Display some text DisplayLabelInfo(memoryGraphics, “Some text”, 0, 0); // Draw the memory bitmap on the display pe.Graphics.DrawImage(memoryBitmap, 0, 0); // Calling the base class OnPaint base.OnPaint(pe);

}

42

http://m0911.wordpress.com

ْبژ٘ بژث Image عٛژ٘ صا ٝژٕ٘ٛ٘ هژي ٗيژٙچٕٞ ٚ memoryBitmap ْبژ٘ بژث Bitmap عٛژ٘ صا ٝژٕ٘ٛ٘ هي بٕؿ ٝو زػا ٗيا شث مشف يّجل ذو سد سد base.OnPaint ذژشٔ ي٘اٛژخاشف .ذيا ٜدشو ٝيِٚا يٞد ساذمٔ ٚ دبؼيا ٖآ ُخاد سد شيٛلس ٓيػشس ياشث ُيٌشؼٔ هي زيبٟ٘ سد ٚ someImage ذژشٔ يژػٛس ربژيٛشحٔ ؾيبژٕ٘ صا غژد زژػا ٜذژؿ زژجط ٗژيا صا ؾيژد صا Paint داذژيٚس سد ٝچ ٖآ ٝو ذؿ ذٞاٛخ ضػبث OnPaint ذشٔ يبٟش٘ا .ذؿ ذٞاٛخ ٜداد ؾيبٕ٘ بٞ ٖآ يٚس ،بٕؿ OnPaint .ذژييبٕ٘ دبژؼيا زژػا XML ُژيبف صا يژكبخ عٛژ٘ ٝژو - .xmta ُژيبف هژي ذژيبث ،ٖبژس يژؿسبفػ َششٙو ٝث يحاشً رب٘بىٔا ٖدشو ٝفبها ياشث يژحاشً ٖبژٔص ربژلخـٔ ُژيبف هژي ٝژو ذژٞد يژٔ بٕژؿ ٝژث اس ٖبژىٔا ٗيا #ذٕٙؿٛٞ خيبس$ IntelliSense صا ٜدبفشػا بث 2008 ٛيدٛشػا َاٚظيٚ ٖبژـ٘ اس ُيبف عٛ٘ ٗيا صا ٕٝ٘ٛ٘ هي شيص ذو ٝؼٌل .ذييبٕ٘ ٝفبها سسّٛذؼوا ٗؿِٛٛػ ُخاد صا ٖبس ي ٜطٚشد ٝث (Design-Time Attribute File) ٜاشژٕٞ 2008 ٛيدٛشژػا َاٚظيٚ ربلخـٔ ي ٜشؼٙد سد ٚ ذٙو ئ دبؼيا يػٛهٛٔ يذٙث ٜدس هي بث بٕؿ يؿسبفػ َششٙو ياشث ٝلخـٔ هي ذٞد ئ .ذٞد ئ ٖبـ٘ بٕٙٞاس ٗشٔ هي بث

<?xml version="1.0" encoding="utf-16"?> <classes xmlns="http://schemas.microsoft.com/VisualStudio/2004/03/SmartDevices/XMTA.xsd"> <class name="Compass.Compass"> <property name="Heading"> <category>CompassSpecific</category> <description>Sets the travelling speed in mph</description> </property> </class> </classes>

43

http://m0911.wordpress.com

ٝٔب٘شث هي ُخاد يؿسبفػ َششٙو صا ٜدبفشػا دبژؼيا يشػسد ٝث ٖبس يؿسبفػ َششٙو ياشث اس يحاشً رب٘بىٔا بٕؿ شٌا .ذيٙو ئ ٜدبفشػا ٝٔب٘شث هي ُخاد اس ٖآ يؿسبفػ َششٙو هي دبؼيا صا غد يبژٞ َشژشٙو ذژٙ٘بٕٞ ٖبژس ٝٔب٘شث يشثسبو يػاٚ سد ٖآ ٖداد ساشل ،ذيؿبث ٜدشو ٝفبها ٛيدٛشػا َاٚظيٚ ساضثا ٝجؼػ ٝث اس يؿسبفػ َششٙو ٚ ذيؿبث ٜدشو Compass Control يژؿسبفػ َششٙو هي صا ٝو ذيٙيث ئ اس يىي٘ٚششىِا يبٕ٘ تٌل ي ٝٔب٘شث هي شثسبو يػاٚ 4 ُىؿ سد .دٛث ذٞاٛخ دساذ٘بشػا يژٔ ٜٚلاژػ ٝژث .دساد ساشل عششػد سد َششٙو ٗيا ياشث ٝلخـٔ يداذؼس بث ٜاشٕٞ يحاشً ُٔبو رب٘بىٔا ذيٙيث ئ ٝو سًٛ ٖبٕٞ .زػا ٜدشو ٜدبفشػا ذژيبث شثسبژو يژػاٚ ٗيا ٗشخبػ ياشث .ذ٘ساد ٝلخـٔ ٖآ صا ٜدبفشػا ي ٜٛح٘ ي ٜسبث سد بٕٙٞاس ٗشٔ ٚ مشف ؾيد ساذمٔ بٞ ٝلخـٔ ي ٕٝٞ ٝو ذيٙيث ي ٜذژ٘شيٌ صا بٞ ٜداد زفبيسد يصبػ َبؼف شيغ / َبؼف ياشث ٓٞ (Menu) ٛٙٔ َششٙو هي ٚ ذيصاذٙيث MainForm ُخاد اس »بٕ٘ تٌل َششٙو« هي .زػا ٜذؿ ٜدٚضفا ٝٔب٘شث ٝث GPS يّخاد

ٜذؿ ٜدٚضفا ٝٔب٘شث ٝث GPS يّخاد ذٙو ئ ٜدبفشػا اس يؿسبفػ َششٙو هي

ذٙو ئ ٜدبفشػا اس يؿسبفػ َششٙو هي ٝو يىي٘ٚششىِا يبٕ٘ تٌل ساضفا ْش٘ :23 ُىؿ

ئ ٜداد ؾيبٕ٘ »بٕ٘ تٌل َششٙو« ي ٝحفك سد شثسبو زوشح زػشػ ٚ زٟػ ،دشو زفبيسد اس GPS ييبيفاشغػ ُحٔ ربػلاًا ٝٔب٘شث ٝو ٗيا صا ذؼث يٞد ساذمٔ ُثبل ٝٔب٘شث ُخاد صا ٝو زػا ٜداد ساشل غيٛ٘ ٝٔب٘شث سبيشخا سد ٝلخـٔ يداذؼس »بٕ٘ تٌل َششٙو« بٞ ٜداد ٗيا ي٘بػس صٚس ٝث ياشث .دٛؿ .ذٙٞد ئ ٖبـ٘ ،ذ٘ٛؿ ئ ٜذ٘اٛخ GPS ي ٜذ٘شيٌ صا ٝو اس يشيدبمٔ ٚ ذٙشؼٞ

44

http://m0911.wordpress.com

ٝٔب٘شث ٝث ييبيفاشغػ ُحٔ ٝث ىٛثشٔ ربػلاًا ٖٚدضفا

هژي ٖاٛژٙػ ٝژث بٕؿ ياشث ٝو ذٙشؼٞ (GPS Intermediate Driver=GPSID) GPS صاذ٘ا ٜاس هي ياساد 6 ٚ 5 ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد

ٖبػآ سبيؼث فّشخٔ يبٞ ٝٔب٘شث ٗيث ٖآ ساضفا زخػ يسازٌ ناششؿا ٝث ٗيٙچٕٞ ٚ GPS كيشً صا ييبيفاشغػ ٖبىٔ ربػلاًا زفبيسد ،ٜذٙٞد ٝؼػٛس

ٖدسٚآ زػد ٝث ياشث .ذيؿبث ٝشؿاد ٖآ يبٙجٔ شث ساضفا ْش٘ ذيِٛس ٝث غػاس يسبػلاًا ٝو زػا ْصلا GPS ٝث ضٟؼٔ يبٞ ٜبٍشػد ؽششؼٌ بث .دٛث ذٞاٛخ

:ذييبٕ٘ ٝؼػاشٔ شيص عسدآ ٝث زفبػٚشىئ GPS صاذ٘ا ٜاس ٝٙئص سد يسبػلاًا

ٝژىّث زؼي٘ GPSID صا ٜدبفشػا بفشك بٞ ذو ٗيا صا يىي .ذ٘ساد GPS ياشث ٕٝ٘ٛ٘ ي ٝٔب٘شث ذو يدبيص داذؼس 6 ٚ 5 ُيبثٛٔ صٚذٙيٚ ي ٝؼػٛس يبٞ ساضثا

:ذيٙو اذيد شيص يبٞ ٝؿٛد سد ذي٘اٛس ئ اس بٞ َبظٔ ٗيا .داد ذٞاٛخ ساشل ٖبس سبيشخا سد اس GPSID يبٞ دشوسبو صا يشيشيذٔ علاو هي

<Installation Folder>\<Windows Mobile SDK>\Samples\PocketPC\Cs\Gps <Installation Folder>\<Windows Mobile SDK>\Samples\Smartphone\Cs\Gps ٛيدٛشژػا َاٚظژيٚ زژؼخ٘ .زػا ٜذؿ ٜشيخر ،قٛف يبٞ ٝؿٛد صا يىي سد ٝو ذيٙو زػسد GPS ٗؿِٛٛػ هي اذشثا ذيبث بٕؿ ٗيا صا ٜدبفشػا صا ؾيد

ُيذژجس ٖٚذژث ٚ ذژ٘ا ٜذؿ ٝشؿٛ٘ 2005 ٛيدٛشػا َاٚظيٚ سد ٕٝ٘ٛ٘ يبٞذو ٗيا ٖٛچ ذيػشد ذٞاٛخ ذيذػ ؽسبٍ٘ ٝث ٖآ ُيذجس ٝث غػاس بٕؿ صا 2008

يّجٕژژژػا ُژژژيبف ربژژژ٘بىٔا صا ٚ ذژژژيٙو زژژژػسد اس ٗژژژؿِٛٛػ ذژژژي٘اٛس يژژژٔ ُيذژژژجس صا غژژژد .دشژژژو ذژژژٙٞاٛخ٘ سبژژژو ذژژژيذػ ؽسبژژژٍ٘ ٝژژژث

دساٚ ٖبژژسدٛخ ٗژژؿِٛٛػ سد اس يّجٕژژػا ٗژژيا ذژژيبث سٛژژظٙٔ ٗيذژژث .ذژژييبٕ٘ ٜدبفشژژػا Microsoft.WindowsMobile.Samples.Location

ٚ بژٞ ٜداد ْاشٌبژيد .ددشژٌ شيزژد ٖبىٔا ٖبس ٝٔب٘شث سد ٖآ صا ٜدبفشػا بس ذيياضفيث ٖبس ٗؿِٛٛػ ٝث اس GPSID علاو ٝث غػشٔ هي .ذيٙو (import)

.زػا ٜذؿ ٜداد ؾيبٕ٘ 5 ُىؿ سد ِٝبمٔ ٗيا سد ٜذؿ ٜدبفشػا علاو بث يجسشٔ يبٞ ذشٔ

ٜذؿ ٜدبفشػا علاو بث يجسشٔ يبٞ ذشٔ GPSID علاو ْاشٌبيد :24 ُىؿ رسٛژك ٝژث

GPSID علاو ْاشٌبيد :24 ُىؿ

رسٛژك ٝژث GPS ييبژيفاشغػ ٖبژىٔ ربژػلاًا زژفبيسد ياشژث ييبٞذژشٔ علاو ٗيا سد .زػا ٖآ ساضفا زخػ بث بٕؿ سبو صبغآ ي ٌٝم٘ Gps علاو

َبژؼف شيغ/َبژؼف ياشژث ضژي٘ ييبٞذژشٔ .دٛؿ ئ ي٘اٛخاشف ،ٖبىٔ ربػلاًا شييغس ْبٍٙٞ ٝث ٝو داذيٚس هي ٕٗه سد ٚ دساد دٛػٚ ًٙٞبٕٞ ٚ ً٘سدلاث

.زؼٞ GPS ساضفا زخػ يصبػ

ي٘اٛژخاشف ٖآ ياشژث اس Open ذژشٔ ٚ دبؼيا Gps عٛ٘ صا ذيذػ ءيؿ هي ٝو زػا ْصلا زؼخ٘ GPS ي ٜذ٘شيٌ صا ي٘بىٔ ربػلاًا زفبيسد صا ؾيد

َبژؼف GPS ساضژفا زخژػ ،زژػا ٜبٍشژػد ٗيا يٚس GPS ساضفا زخػ ي ٜذٙٙو ٜدبفشػا ٗيِٚا بٕؿ ي ٝٔب٘شث شٌا ٝو دٛؿ ئ ضػبث سبو ٗيا .ذيٙو

GPS ءيژؿ ياشژث اس Close ذژشٔ ذژيبث زژػا ٜبٍشژػد يٚس GPS ي ٜذٙٙو ٜدبفشػا ٗيشخآ بٕؿ ي ٝٔب٘شث شٌا ،ٖآ صا ٜدبفشػا ٖبيبد صا غد .ددشٌ

فشژلٔ ٜدٛژٟيث ٜبٍشژػد يشسبژث GPS ٝژث ٗشژؿاذ٘ صبژي٘ ْبٍٙٞ ٝث ٝو دٛؿ ئ ضػبث سبو ٗيا .ذٙو َبؼفشيغ اس GPS ساضفا زخػ بس ٓيٙو ي٘اٛخاشف

.ددشٍ٘

45

http://m0911.wordpress.com

:دٛؿ ئ اشػا ٝ٘بٌاذػ يبٞ داذيٚس شيذٔ سد ٚ ذٞد ئ ٖبـ٘ اس GPS ساضفا زخػ ٝث َبلسا ٚ يصبػ َبؼف شيغ/َبؼف يٍٍ٘ٛچ شيص ذو ٝؼٌل

private void menuEnableGPS_Click(object sender, EventArgs e)

{

gps.Open(); gps.LocationChanged += new LocationChangedEventHandler(gps_LocationChanged); menuDisableGPS.Enabled = true; menuEnableGPS.Enabled = false;

}

private void menuDisableGPS_Click(object sender, EventArgs e)

{

gps.LocationChanged -= gps_LocationChanged; gps.Close(); menuEnableGPS.Enabled = true; menuDisableGPS.Enabled = false;

}

ذيٙو يػسشث #ٝٔب٘شث ٗشؼث$ Closing داذيٚس شيذٔ سد ذيبث ُيِد ٗيٕٞ ٝث ذيٙو غٌل اس GPS َبلسا ذيبث ٓٞ صبث دذٙجث اس ٝٔب٘شث ذٞاٛخث شثسبو شٌا صا Close ذشٔ ٚ (unsubscribe) ذيٛؿ عسبخ LocationChanged داذيٚس زػشٟف صا ٚ ذييبٕ٘ َبؼف شيغ اس ٖآ زػا َبؼف GPS صٛٙٞ شٌا ٝو ٝٔب٘شث شٞ .دٛؿ ئ ْبؼ٘ا gps_LocationChanged داذيٚس شيذٔ سد يىي٘ٚششىِا يبٕ٘ تٌل ي ٝٔب٘شث يّكا سبو .ذيٙو ي٘اٛخاشف اس Gps ءيؿ ياشث ٝٔب٘شث داذيٚس شيذٔ ،ذٙو شييغس GPS ي٘بىٔ ربػلاًا ٝو ٖبٔص شٞ .ذٙو (subscribe) ْب٘ زجط ٖآ سد داذيٚس شيذٔ صا ٜدبفشػا بث ذ٘اٛس ئ يا ٗيشخآ ٝث ٝظحِ شٞ سد بٕؿ ي ٝٔب٘شث ٝو ذٙو ئ ٗيٕوس 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();

}

}

اس #زػشژػ$ Speed ٚ #زژٟػ$ Heading يبژٞ ٝلخـٔ يمف داذيٚس شيذٔ ٗيا سد بٕؿ ،زؼٞ Gps علاو ياشث يدبيص يبٞ ٝلخـٔ ٝو ٗيا بث ٚ #ييبژيفاشغػ مشژػ$ Lattitude ذژٙ٘بٔ ييبژٞ ٝژلخـٔ شًبژخ ٗيژٕٞ ٝژث ،زژػا يژىي٘ٚششىِا يبژٕ٘ تژٌل هي بفشك ساضفا ْش٘ ٖٛچ .ذيٙيث ئ زژػسد ٝو زػا ْصلا ،ذ٘ٛـ٘ ٜذ٘اٛخ يشػسد ٝث زػا ٗىٕٔ ٜساٛٞبٔ صا يشفبيسد ربػلاًا ٝو بػ ٖآ صا .ذٙشؼي٘ ٟٓٔ #ييبيفاشغػ ًَٛ$ Longitude

46

http://m0911.wordpress.com

ٜذژ٘اٛخ يبژٞ ٜداد صا يژىي ُلاذح شٌا بس ذيٙو ي٘اٛخاشف 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()

،ذ٘ٛژؿ يژٔ اشػا بٕؿ ي ٝٔب٘شث سد ٖبٔص ٓٞ ؽصادشد ذٙچ ٝو ذػس ئ شظ٘ ٝث .ذٞد ئ بٔ ٝث ُىـٔ ييبػبٙؿ ياشث ئٕٟ ربػلاًا بٌخ ْبغيد ٗشٔ

س ٖآ سد بژٌخ ٝوInvalidate ذشٔ ٝو ذيٛؿ ئ ٝػٛشٔ ذيٙو زلد Stack Trace ٝث شٌا .ذيا ٜدشو دبؼيا ؽصادشد هي يمف بٕؿ ٝو يِبح سد

اشٞبژظ .زژػا ٜذژؿ ي٘اٛژخاشف GPSID زيشيذژٔ علاژو ُژخاد ذشٔ هي يػٛس ٓٞ ٖآ ٝو زػا ٜذؿ ي٘اٛخاشف داذيٚس شيذٔ ُخاد صا زػا ٜداد

.ذيؿبث ؾجظاٛٔ ذيبث ٝو زػا يضيچ ٖبٕٞ ٗيا ٚ ذٙٙو ئ ٜدبفشػا ؽصادشد ذٙچ صا ذٙو ئ زيشيذٔ اس ٖآ ٝو يػلاو بي GPSID

ئ زيشيذٔ اس ٖآ ٝو يػلاو بي GPSID بٌخ صٚشث ْبٍٙٞ ٝث # Compass $ بٕ٘

بٌخ صٚشث ْبٍٙٞ ٝث #Compass$ بٕ٘ تٌل َششٙو يبٞ ٝلخـٔ شييغس :25 ُىؿ

47

http://m0911.wordpress.com

يؿصادشد ذٙچ ي ٝٔب٘شث هي سد شثسبو يػاٚ يبٞ َششٙو ي٘بػس صٚس ٝث َشژشٙو ،َبژؼف ؽصادشد ُخاد صا ٓيمشؼٔ سًٛ ٝث ذٙٙو ئ يؼػ ٝو زػا ٗيا ذ٘ٛؿ ئ سبچد ٖآ ٝث ساضفا ْش٘ ٖبٌ ٜذٙٞد ٝؼػٛس ششـيث ٝو يٞبجشؿا 1.0 ؽسبژژٍ٘ سد .دٛژژؿ يژٔ ٜشژژظشٙٔ شژژيغ ؾٙژواٚ ٝژژث شژژؼٙٔ سبژو ٗژژيا .ذژژٙٙو اذژيد يژژػششػد بژژٞ ٖآ ٝژث بژژي ذژژٙٞد شژييغس اس شثسبژژو يژژػاٚ يبژٞ هژي ذژيٞاٛخث ٝو ئبٍٙٞ .زػا ششٟث يوذ٘ا ٝؼيش٘ شسلابث بي 2.0 ؽسبٍ٘ سد .دٛؿ ئ ُفل ٓٞ شػ زـد ٝٔب٘شث .NET Compact Framework يبژٌخ ذژيٞد شژييغس #زژػا ٜذژؿ دبژؼيا ٖآ ُژخاد سد شژظ٘ دسٛژٔ َشژشٙو ٝژو يژؿصادشد صا شيغ$ يشٍيد ؽصادشد ُخاد صا اس شثسبو يػاٚ َششٙو .ذيٙيث ئ يىي٘ٚششىِا يبٕ٘ تٌل ي ٝٔب٘شث سد اس دسٛٔ ٗيا بٕؿ 6 ُىؿ سد .ددشٌ ئ دبؼيا NotSupportedException

يژٔ ذژٙو يژٔ دبؼيا اس شثسبو يػاٚ َششٙو ٝو #يذشٔ بي$ يؿصادشد يمف« :ٝو ذيٙىث ٖٛ٘بل ٗيا زيبػس ٝث ْضّٔ اس ٖبسدٛخ ذيبث ،ُىـٔ ٗيا غفس ياشث .ذژيٙو ي٘اٛژخاشف اس Control.Invoke ذشٔ ذيبث ٝـيٕٞ ذيٞد شييغس َبؼف ؽصادشد ُخاد اس َششٙو هي ذيٞاٛخث ٝو ي٘بٔص »ذٞد شييغس اس ٖآ ذ٘اٛس غژلاٚ سد ٚ$ دساد يژػششػد َششٙو ٖآ يٚبح (window handle) ي ٜشؼٙد ي ٜذ٘ساذٍٟ٘ ٝث ٝو يؿصادشد سد اس فٛلخٔ ي ٜذٙيبٕ٘ هي ذشٔ ٗيا هي ذيبث زؼخ٘ سٛظٙٔ ٗيذث .ذيٞد شييغس اس gps_LocationChanged داذيٚس شيذٔ ذي٘اٛس ئ َبح .ذٙو ئ ي٘اٛخاشف ،#زػا ٜدشو دبؼيا اس ٖآ ٜداد عٛژ٘ هژي delegate هي .ذٙو َبػسا Control.Invoke ذشٔ ٝث ٖبٌٔٛسآ رسٛك ٝث اس ذشٔ هي ذ٘اٛشث ٝو ذيٙو فيشؼس #ٜذٙيبٕ٘$ delegate .دٛؿ يٞد ساذمٔ ٖآ بث سبٌصبػ شٌ ٜسبؿا بث ذشٔ شٞ يػٛس ذ٘اٛس ئ ٝو ذٙو ئ فيشؼس اس ذشٔ صا #شٌ ٜسبؿا$ ٝ٘بـ٘ هي ٝو زػا ٜدبػ ي

private delegate void UpdateDelegate();

void gps_LocationChanged(object sender, LocationChangedEventArgs args)

{

 

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

{

compass1.Heading = pos.Heading;

}

compass1.SpeedValid = pos.SpeedValid;

if (pos.SpeedValid)

{

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

}

if (pos.HeadingValid | pos.SpeedValid)

{

compass1.Invoke((UpdateDelegate)delegate()

{

compass1.Invalidate();

});

}

}

ذژشٔ ُخاد صا ٝىّث دٛؿ يٕ٘ ٜذ٘اٛخاشف ٓيمشؼٔ سًٛ ٝث compass1.Invalidate ٝو ذيٙيث ئ gps_LocationChanged داذيٚس شيذٔ ُخاد ؽٚس ٗژيا ذيژؿبج٘ بٙژؿآ (anonymous delegates) ْبژ٘ يث يبٞ ٜذٙيبٕ٘ ضحث بث شٌا .دٛؿ ئ ي٘اٛخاشف compass1.Invoke ْب٘ ٝث يشٍيد صا compass1.Invalidate ي٘اٛژخاشف ياشژث C# 2.0 زژيّثبل ٗيا gps_LocationChanged داذيٚس شيذٔ سد .دٛث ذٞاٛخ ْٟٛفٔ ب٘ ٖبس ياشث compass1.Invalidate ي٘اٛژخاشف ياشث يا ٝ٘بٌاذػ ذشٔ ٝو زؼٞ ٓٞ ٖبىٔا ٗيا َبح ٗيػ سد .دٛؿ ئ ٜدبفشػا compass1.Invoke ُخاد يژث ي ٜذژٙيبٕ٘ صا ٜدبفشػا ،دٛؿ ئ ي٘اٛخاشف بػ هي صا يمف Compass َششٙو ٖٛچ .دٛؿ فيشؼس UpdateDelegate ُخاد صا ٖآ ي٘اٛخاشف ٚ .دٛؿ شس ٜبسٛو يؼيٛ٘ذو ٝو ذؿ ذٞاٛخ ضػبث ْب٘

48

http://m0911.wordpress.com

.ذييبٕ٘ زفبيسد GPSID كيشً صا اس GPS يا ٜساٛٞبٔ ربػلاًا ٚ اشػا بٌخ ٖٚذث اس يىي٘ٚششىِا يبٕ٘ تٌل ي ٝٔب٘شث ذي٘اٛس ئ راشييغس ٗيا بث

ي ٝٔب٘شث ذي٘اٛس ئ راشييغس ٗيا بث GPS يبٞ ٜداد ؾيبٕ٘ ٚ اشػا َبح سد

GPS يبٞ ٜداد ؾيبٕ٘ ٚ اشػا َبح سد يىي٘ٚششىِا يبٕ٘ تٌل :26 ُىؿ

.ذژٙو ئ زفبيسد اس GPS يا ٜساٛٞبٔ ربػلاًا يِٚ دٛؿ ئ اشػا ٜبٍشػد صبػ ٝيجؿ ُخاد ٖلاا ساضفا ْش٘ ٗيا ٝو زؼٞ ٖبس ٗٞر سد َاؤػ ٗيا َبح ؟ذٙو ئ سبو ٍٝ٘ٛچ غد

ييبيفاشغػ ُحٔ ٝث عبؼح يبٞ ٝٔب٘شث ؾيبٔصآ

يژٙؼي ٝشژؼث يبژوف سد GPS يبژٞ ٜذ٘شيٌ تّغا .زػا يشٍيد ٖبشػاد ٓٞ ٝٔب٘شث ٖآ ؾيبٔصآ ذٙو ئ ٜدبفشػا GPS صا ٝو ذيؼيٛٙث يا ٝٔب٘شث شٌا هژي ٝژث ىٛژثشٔ ٜساٛٞبژٔ صا يشفبژيسد ربػلاًا ذٙٙو سبو ٓٞ شٌا ٜٚلاػ ٝث .ذٙٙو يٕ٘ ُٕػ ذيؼيٛ٘ ئ ٝٔب٘شث ٚ ذيا ٝشؼـ٘ ٖلآا بٕؿ ٝو ييبػ ٖبٕٞ ي ٝؼژػٛس ساضثا ،ُىـٔ ٗيا ُح ياشث .ذييبٕ٘ زفبيسد اس ذيذػ ربػلاًا بس ذيٙو زوشح ذي٘اٛس يٕ٘ ٝٔب٘شث ؾيبٔصآ ٚ ٝؼػٛس ْبٍٙٞ بٕؿ ٚ زػا ُحٔ GPS ٜبٍشژػد دشوسبژو يصبژػ ٝيجؿ ياشث اس GPS ربػلاًا يٚبح يٙشٔ ي ٜداد يبٞ ُيبف ٝو دساد FakeGPS ْب٘ ٝث ساضثا هي 6 ُيبثٛٔ صٚذٙيٚ يصبژػ ٝيجژؿ ياشژث FakeGPS ي ٝژٔب٘شث صا ذژٙ٘اٛس ئ يسبىشػد ٝث صبي٘ ٖٚذث ذٙٙو ئ ٜدبفشػا GPSID صا ٝو ييبٞ ٝٔب٘شث .ذيبٕ٘ ئ ٜدبفشػا اس شٍيد يبٞ ساضفا ْش٘ ذي٘اٛس ئ بٕؿ ذٙو ئ سبو ٜبٍشػد صبػ ٝيجؿ يٚس FakeGPS ٝو بػ ٖآ صا .ذٙيبٕ٘ ٜدبفشػا GPS ساضفا زخػ يؼلاٚ زِبح .ذيٙو ؾيبٔصآ ٚ اشػا ٖآ صا ٜدبفشػا بث ضي٘ ياشژث .ذؿبث ئ CAB ُيبف هي رسٛك ٝث ٝٔب٘شث ٗيا .ذييبٕ٘ تل٘ ٖآ صبػ ٝيجؿ بي ٜبٍشػد يٚس اس ٖآ ٝو زػا يفبو FakeGPS صا ٜدبفشػا ياشث بس ذيسازٍث ناششؿا ٝث Emulator Properties ي ٜشؼٙد سد اس FakeGPS ُيبف يٚبح ي ٝؿٛد ٝو زػا يفبو ٜبٍشػد صبػ ٝيجؿ يٚس ٖآ تل٘ .ذٙو ُٕػ يج٘بػ ي ٝظفبح رسبو ذٙ٘بٕٞ

ُٕػ يج٘بػ ي ٝظفبح رسبو ذٙ٘بٕٞ FakeGPS بث ٜذؿ يصبػ ٝيجؿ يثبي ٖبىٔ

FakeGPS بث ٜذؿ يصبػ ٝيجؿ يثبي ٖبىٔ ْبٍٙٞ ٝث ٝؿٛد ناششؿا :27 ُىؿ

49

http://m0911.wordpress.com

.ذژٙو ئ ٜسبؿا يواششؿا ي ٝؿٛد ٝث ٝو ذيٚشث (Storage Card) ٝظفبح رسبو ُخاد ٝث File Explorer بث ذي٘اٛس ئ ٜبٍشػد صبػ ٝيجؿ ُخاد

ُژيبف يداذژؼس بژث ٜاشژٕٞ FakeGPS ي ٝٔب٘شث .ددشٌ تل٘ صبػ ٝيجؿ سد ؽا ٝٔب٘شث بس ذيٙو اشػا ٚ ةبخش٘ا اس FakeGPS ٝث ىٛثشٔ CAB ُيبف

يبژٞ زژِبح ياشژث -ذٙشژؼٞ 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

ةبخش٘ا اس ٖبس شظ٘ دسٛٔ GPS ي ٜداد ُيبف ٚ ذيٙو َبؼف اس ٖآ غذػ ،ذيٙو اشػا صبػ ٝيجؿ سد اس ٝٔب٘شث FakeGPS صا بٞ ٜداد زفبيسد عٚشؿ ياشث .ددشٌ صبغآ GPSID ُخاد ٝث بٞ ٜداد َبػسا بس ذيٙو هيّو Done ي ٕٝود يٚس زيبٟ٘ سد .ذييبٕ٘

Done ي ٕٝود يٚس زيبٟ٘ سد .ذييبٕ٘ FakeGPS ي ٝٔب٘شث ُخاد GPS ي ٜداد ُيبف

FakeGPS ي ٝٔب٘شث ُخاد GPS ي ٜداد ُيبف ةبخش٘ا :9 ُىؿ

يىيضيف ٜبٍشػد يٚس ٓٞ ٚ ٜبٍشػد صبػ ٝيجؿ يٚس َبح .ذيشؿاد صبي٘ ٖآ ٝث GPS شث يٙشجٔ يبٞ ٝٔب٘شث ؾيبٔصآ ياشث ٝو دٛث يضيچ ٖآ ي ٕٝٞ ٗيا اس يژىي٘ٚششىِا يبژٕ٘ تژٌل ي ٝژٔب٘شث ذژي٘اٛس ئ FakeGPS ٓيظٙس ٚ تل٘ صا غد .ذيٙو ؾيبٔصآ اس ٖبس ٝٔب٘شث ذي٘اٛس ئ ُيبثٛٔ صٚذٙيٚ #يؼلاٚ$ .ذيٙو اشػا

50

http://m0911.wordpress.com

مجنپ لصف

SQL Server CE رت يا همذقم

51

http://m0911.wordpress.com

ٝٔذمٔ

َاٚظژيٚ بي هيؼيث َاٚظيٚ ٖبثص ٚد صا يىي ٝو ي٘بٔص ٜظيٚ ٝث دساد حبشىػد سد ساضفا ْش٘ ي ٝؼػٛس ٝث يدبيص زٞبجؿ ُيبثٛٔ صٚذٙيٚ ساضفا ْش٘ ي ٝؼػٛس ذژيٙو يژٔ ٜدبفشژػا ٓژٞ ُيبثٛٔ صٚذٙيٚ ياشث اس حبشىػد صٚذٙيٚ يبٞ ٝٔب٘شث ي ٝؼػٛس يبٞساضثا ٖبٕٞ بٕؿ .ذيٙو ئ ٜدبفشػا اس ز٘ راد حسبؿ يػ ٜدبفشژػا يسبػلاًا ه٘بث صا بٞ ٝٔب٘شث تّغا .زؼٞ ٓٞ يسبػلاًا ه٘بث صا ٜدبفشػا ْبٍٙٞ ٝث رٚبفس ٗيا .زؼٞ ييحٔ ٚد ٗيا ٗيث ضي٘ ييبٞ رٚبفس ٗىيِ يجِبژٌٔ ٝژِبمٔ ٗيا سد .ذيٙو ٜدبفشػا يؿٚس ٝچ صا ٝو زػا صبث ٖبس زػد ٜذٙٞد ٝؼػٛس ٖاٛٙػ ٝث بٕؿ ٜبٍشػد سد ٜداد يصبػ ٜشيخر ياشث .ذٙٙو ئ .ذژيد ذژيٞاٛخ ٜبٍشػد يٚس ٜذؿ ٜشيخر يّحٔ يبٞ ٜداد ٝث يػششػد فّشخٔ يبٞ ؽٚس ٚ SQL Server 2005 Compact Edition ٝث غػاس يبژٞ َبژظٔ سد .دشژو ٓيٞاٛژخ ٝژؼيبمٔ ٜذژؿ ٝشژؿٛ٘ ذژو ٖاضئ ٚ اشػا ياشث ْصلا ٖبٔص ييآسبو ٍبحِ صا اس بٞ ٜداد ٝث يػششػد رٚبفشٔ ؽٚس ٚد بٔ هژ٘بث ي ٜدبفشژػا دسٛژٔ ؽسبٍ٘ .ٓيا ٜدشو ٜدبفشػا اس Northwind ي ٕٝ٘ٛ٘ يسبػلاًا ه٘بث صا Order_Details ٚ Orders َٚذػ ٚد يؼيٛ٘ذو .زػا 2008 ٛيدٛشػا َاٚظيٚ بث ٜاشٕٞ SQL Server 2005 Compact Edition 3.5 ،يسبػلاًا

SQL Server Compact Edition ٖبژٔص سد .ذژٙو ٌٓ سد شػ اس بٕؿ زػا ٗىٕٔ ،ذ٘ٛؿ ئ اشػا ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد يٚس ٝو ييبٞ SQL Server يبٞ ؽسبٍ٘ ٚ بٞ ْب٘ عٛٙس :ذ٘ا شيص حشؿ ٝث ،ذٙشؼٞ ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد يٚس شث ٜدبفشػا َبح سد ٝو SQL Server 2005 يبٞ ؽسبٍ٘ ٗيشس ٟٓٔ ِٝبمٔ ٗيا ؽسبٍ٘

يبژٞ شسٛيذٔبژو يٚس ؽسبژٍ٘ ٗيا .ذؿ شـشٙٔ SQL Server 2005 ٚ 2005 ٛيدٛشػا َاٚظيٚ بث ٜاشٕٞ :SQL Server Mobile 3.0 ٗيژؿبٔ يٚس ؽسبٍ٘ ٗيا ذ٘ٛؿ ئ تل٘ حبشىػد يبٞ شسٛيذٔبو يٚس ٝؼػٛس يبٞساضثا ٝو ي٘بٔص صا .دٛؿ ئ اشػا #Tablet PC$ هچٛو .دٛؿ ئ اشػا يكبخ يبٞ

SQL Server Mobile ي ٝژيبد شژث يدبژيص ذح بس ٚ ذؿ شـشٙٔ 2006 َبػ سد :SQL Server 2005 Compact Edition 3.1 بژٞ حبس خِ ٚ بٞ حبشىػد يٚس َبح ٗيػ سد ٚ ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد يٚس SQL Server CE ؽسبٍ٘ ٗيا .زػا ٜذؿ ٝشخبػ 3.0 ُژٔبو ربژ٘بىٔا ٚ دساد SQL Server فّشخٔ يبٞ ؾياشيٚ بث يدبيص يسبٌصبػ SQL Server CE .ددشٌ ئ اشػا زيدٚذحٔ ٖٚذث ٓٞ (ROM) ْاس يّژكا ي ٝژظفبح يٚس SQL Server CE ؽسبژٍ٘ ٗژيا .ذژٙو يژٔ ٓٞاشف هچٛو عبيمٔ سد اس يا ٌٝثاس يسبػلاًا ه٘بث .ذؿبث ئ تل٘ 6 ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد

ُژخاد َبژح ٗيژػ سد ٚ ذژؿ شـشٙٔ ُمشؼٔ دّٛ٘اد رسٛك ٝث 2007 َبػ سد :SQL Server 2005 Compact Edition 3.5 SP1

3.1 ي ٝؼژژژػٛس يبژژژٙجٔ شژژژث .زژژژػا دٛژژژػٛٔ ضژژژي٘ 2008 ٛيدٛشژژژػا َاٚظژژژيٚ

Microsoft Syncronization غيٚشژػ كيشً صا اس زفبػٚشىئ يبٞ سٚشػ بث يصبػ ٖبؼٕٞ ٖبىٔا SQL Server CE ؽسبٍ٘ ٗيا

.زژژژػا ٜذژژژؿ ذژژژيِٛس SQL

Server

CE

.دصبػ ئ ٓٞاشف ADO.NET ياشث

SQL Server 2005 Compact Edition زخبػ شيص

ٝو يا ٝٔب٘شث بث ٜاشٕٞ ؽصادشد هي رسٛك ٝث ،SQL Server شٍيد يبٞ ؽسبٍ٘ فلاخ شث ٚ زػا هجػ يسبػلاًا ه٘بث هي SQL Server CE

ه٘بث .زػا ٜذـ٘ يصبػ ٜدبيد اضؼٔ سٚشػ هي رسٛك ٝث SQL Server CE ٝو زػا يٙؼٔ ٖاذث ٗيا .دٛؿ ئ اشػا ،ذٙو ئ ٜدبفشػا ٖآ صا

ٜبٍشػد ٚ حبشىػد شسٛيذٔبو هي ٗيث ٖآ ربيٛشحٔ يصبػ ٖبؼٕٞ ٖبىٔا ٗيٙچٕٞ ٚ دٛؿ ئ ٜشيخر sdf ذ٘ٛؼد بث دشفٙٔ ُيبف هي سد ٖآ يسبػلاًا

ي ٝٔب٘شث بي يد غىيا صٚذٙيٚ سد (ActiveSync) هٙيػ ٛيشوا ي ٝٔب٘شث كيشً صا ُيبثٛٔ صٚذٙيٚ

RDA يػٛس يصبػ ٖبؼٕٞ شس ٝشفشـيد رب٘بىٔا .دساد دٛػٚ ٖٛػ بي بشؼيٚ صٚذٙيٚ سد (Windows Mobile Device Center) WMDC

يشح ٚ ٜبٍشػد ذٙچ ٚ سٚشػ ٗيث يصبػ ٖبؼٕٞ ياشث ADO.NET يصبػ ٖبؼٕٞ غيٚشػ ٚ ٖدشو يذو ،ْبغدا ٗيٙچٕٞ .زػا عششػد سد

رب٘بىٔا ّٕٝػ صا ،ذٙشؼٞ ي٘بػس صٚس ٝث َبح سد ٖبٔص ٓٞ رسٛك ٝث شثسبو ذٙچ يػٛس بٞ ٜداد ٝو يدساٛٔ سد ُخاذس قيخـس ٓشؼيػ صا ي٘بجيشـد

ّٕٝو بث ذٙ٘اٛس ئ يسبػلاًا يبٞ ه٘بث ،ٝيمث ذٙ٘بٕٞ ٚ زػا يشيٙٔا فّشخٔ حٌٛػ ياساد SQL Server صا ؽسبٍ٘ ٗيا .زػا SQL Server CE

52

http://m0911.wordpress.com

ٖذؿ ٌٓ مشؼٔ سد ٝو ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد ياشث فٛلخ ٝث عٛهٛٔ ٗيا .ذ٘ٛؿ يسبٍ٘ ضٔس ضي٘ بٟ٘آ ُخاد يبٞ ٜداد ،ٜذؿ زظفبحٔ ضٔس ي

.زػا زلشػ مشؼٔ سد ششـيث ٝظفبح رسبو ٚ دٛؿ ئ ٜشيخر ٝظفبح رسبو يٚس يسبػلاًا ه٘بث ٝو ي٘بٔص ٜظيٚ ٝث .زػا ٟٓٔ ،ذٙشؼٞ زلشػ بي

فّشخٔ ؽٚس ذٙچ بٕؿ .ذٙو ئ ضحث ٜذؿ زيشيذٔ ساضفا ْش٘ هي ٚ SQL Server 2005 Compact Edition 3.5 تيوشس يٚس ِٝبمٔ ٗيا

.ذيد ذيٞاٛخ دساد اس دٛخ فِبخٔ ٚ كفاٛٔ ْاذو شٞ ٝوٜذؿ زيشيذٔ ي ٝٔب٘شث هي ُخاد صا اس بٞ ٜداد يثبيصبث ٚ شييغس ،عسد

ٜدبفشػا ياشث .ٓيا ٜدشو ةبخش٘ا اس Order Detail ٚ Orders يبٞ َٚذػ Northwind يسبػلاًا ه٘بث صا بٔ شٍيذىي بث بٞ ؽٚس ي ٝؼيبمٔ ياشث

شيؼٔ ٖبٕٞ C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Samples شيؼٔ سد ٝو - يسبػلاًا ه٘بث ٗيا صا

ٓشؼيػ شيذٔ صٛؼٔ بث اس 2008 ٛيدٛشػا َاٚظيٚ ٝو زػا ْصلا -دساد ساشل 2008 ٛيدٛشػا َاٚظيٚ تل٘ مشف ؾيد

ذيٞاٛخ٘ اس يسبػلاًا ه٘بث ٝث يػششػد ٚ َبلسا ٖبىٔا رسٛك ٗيا شيغ سد .ذييبٕ٘ اشػا ٖٛػ بي بشؼيٚ صٚذٙيٚ سد (administrator elevations)

.زؿاد

عٛ٘ ياساد يبٞ زػبشيد صا ٜدبفشػا

رسٛژك ٝژث ذژو صا يدبژيص ساذژمٔ .زػا SQL Server CE يسبػلاًا ه٘بث ٝث يػششػد ياشث ٖبػآ ؽٚس هي ،عٛ٘ ياساد يبٞ زػبشيد صا ٜدبفشػا عاشخشژػا SQL Server CE ذژٙ٘بٔ ٜداد غجٙٔ صا ٝو زػا يّكا ي ٝظفبح سد بٞ ٜداد صا يذو هي غلاٚ سد زػبشيد ٗىيِ .دٛؿ ئ ذيِٛس سبودٛخ بژس زػا ْصلا ٖبٔص ٝو زػا يٙؼٔ ٖاذث ٗيا .ذيٙو ئ سبو بٞ ٖآ بث بٕؿ ٝو زػا ييبٞ ٜداد صا يىيضيف يذو هي زػبشيد شٍيد رسبجػ ٝث .زػا ٜذؿ .ذ٘ٛژؿ يژٕ٘ َبٕػا يسبػلاًا ه٘بث يٚس سبودٛخ سًٛ ٝث ،بٞ ٜداد يٚس ٝشفشٌ رسٛك راشييغس ٚ ذ٘ٛؿ يسازٌسبث زػبشيد سد يسبػلاًا ه٘بث صا بٞ ٜداد يژٔ ْبژؼ٘ا غيشژػ سبيؼث بٞ ٜداد بث سبو ،ذيٙو ئ سبو يّكا ي ٝظفبح سد بٞ ٜداد يذو يٚس بٕؿ ٝو بػ ٖآ صا ،زػبشيد ي ٝيِٚا يٞدساذمٔ ْبٍٙٞ ٝث .ذيٛؿ ٝػاٛٔ يّكا ي ٝظفبح دٛجٕو ُىـٔ بث زػا ٗىٕٔ ٓيؼح يسبػلاًا يبٞ ه٘بث بث سبو ياشث .دٛؿ

53

http://m0911.wordpress.com

http://m0911.wordpress.com ٜداد عٛ٘ بث يبٞ (DataSet) زػبشيد :28 ُىؿ 54

ٜداد عٛ٘ بث يبٞ (DataSet) زػبشيد :28 ُىؿ

54

http://m0911.wordpress.com

هژ٘بث ٝژث ٝژو (Data Source) ٜداد غژجٙٔ هژي بث ٜاشٕٞ Smart Device عٛ٘ صا ٜطٚشد هي ٝو ذيٙيث ئ اس 2008 ٛيدٛشػا َاٚظيٚ 1 ُىؿ سد

ٜداد غژجٙٔ ٝث ٝو ذ٘ا ٜذؿ ةبخش٘ا Order Detail ٚ Orders َٚذػ ٚد Data Source Wizard ُخاد .زػا ُلشٔ Northwind يسبػلاًا

سبژودٛخ سٛژً ٝژث Order Detail ٚ Orders ٗيث ي ٌٝثاس ،ذيٙيث ئ Data Sources ي ٜشؼٙد سد ٝو سًٛ ٖبٕٞ .ذٙشؼٞ ُلشٔ عٛ٘ ياساد ي

شظ٘ دسٛٔ يبٞ َششٙو ذيبث ،ذيؿبث ٝشؿاد شثسبو يػاٚ سد اس (master-detail) ُلشٔ َٚذػ ٚد ؾيبٕ٘ ذيٞاٛخ ئ شٌا .زػا ٜذؿ دبؼيا بٕؿ ياشث

Order َٚذژػ ربژػلاًا ٝژو زژػا ْصلا بژٞ َٚذژػ ٗيژث ي ٌٝثاس سبودٛخ يساذٍٟ٘ ياشث .ذيـىث ْشف يٚس Data Sources ي ٜشؼٙد صا اس ٖبس

.ٓييبٕ٘ ةبخش٘ا Orders َٚذػ بث ٜاشٕٞ اس Detail

ةبخش٘ا Orders َٚذػ بث ٜاشٕٞ اس Detail ٛيدٛشػا َاٚظيٚ يحاشً ييحٔ سد

ٛيدٛشػا َاٚظيٚ يحاشً ييحٔ سد سبودٛخ ي ٜذؿ ذيِٛس يبٞ ْشف :29 ُىؿ

اس Northwind يسبػلاًا ه٘بث ربػلاًا ذي٘اٛس ئ يؼيٛ٘ذو ٝث صبي٘ ٖٚذث .ذيٙيث ئ ذ٘ا ٜذؿ دبؼيا سبودٛخ سًٛ ٝث ٝو اس ييبٞ ْشف 2 ُىؿ سد ه٘بث سد راشييغس ٝو ذيٛؿ ٗئٌٕٔ ذيساد صبي٘ َبح .زػا يّكا ي ٝظفبح سد زػبشيد ُخاد بٞ ٜداد يذو ،زػا ٜذؿ ْبؼ٘ا ٝو يسبو بٟٙس .ذيٙيجث ٖبـ٘ MainForm سد اس بٞ ٜداد ذ٘اٛس ئ يمف زػا ٜذؿ ذيِٛس 2008 ٛيدٛشػا َاٚظيٚ يػٛس ٝو يذو .ذ٘ٛؿ ٜشيخر يٕئاد سًٛ ٝث يسبػلاًا .زػا ٜذؿ ذيِٛس ٛيدٛشػا َاٚظيٚ يػٛس بٞ ٜداد ؾياشيٚ ي ِٕٝبىٔ ي ٜشؼٙد ٚ ٝكلاخ ربػلاًا ؾيبٕ٘ زٟػ ٓٞ يشٍيد يبٞ ذو #1 ذو$ .ذٞد ٝث ٖذؿ ُكٚ ياشث اس (connection string) َبلسا ي ٝشؿس ذيبث لابٕشحا زػبشيد يبٞ ٜداد يػٛس شثسبو يػاٚ يبٞ َششٙو يٞد ساذمٔ صا ؾيد َاٚظيٚ زػد ٝث اس ٝٔب٘شث سبؼفا شٌا ،ٜطاٚسزٌ يػٛس ٜذؿ زظفبحٔ يسبػلاًا ه٘بث ياشث ٜظيٚ ٝث .ذيٞد شييغس 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

http://m0911.wordpress.com

 

{

 

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 ذو

(data binding) ٜداد َبلسا يػٛس اس بٞ ٜداد ٝو - زػبشيد ٝث Northwind يسبػلاًا ه٘بث صا بٞ ٜداد MainForm_Load داذيٚس شيذٔ سد يػسشث ياشث .زػا ٜذؿ ٝشؿٛ٘ ذيذػ #دسٛوس$ ؽسبفػ ٖٚدضفا ٚ ربيئضػ ؾيبٕ٘ ياشث ٓٞ ٝفبها ذو .ذ٘ٛؿ ئ يذو -ذٞد ئ ٖبـ٘ شثسبو ياشث ششٔٛ٘شو ءيؿ صا ٜدبفشػا بث اس ٖبٔص MainForm_Load داذيٚس شيذٔ ياذشثا سد ذي٘اٛس ئ يسبػلاًا ه٘بث صا بٞ ٜداد يثبيصبث سد ؽٚس ٗيا ييآسبو ٜذؿ فشك ٖبٔص ذي٘اٛس ئ َبح .ذيٙو زجط ٜسبثٚد اس ٖبٔص ٚ فلٛشٔ اس ششٔٛ٘شو ضي٘ سٛوزٔ داذيٚس ي٘بيبد سٛشػد سد ٚ ذيٙو زجط (Stopwatch) ْبٍٙٞ ٝث ضي٘ اس ربيئضػ ؾيبٕ٘ ياشث ْصلا ٖبٔص ذي٘اٛس ئ ٝثبـٔ ؽٚس ٝث .ذيٞد ؾيبٕ٘ (status bar) زيؼهٚ ساٛ٘ سد اس بٞ ٜداد يثبيصبث ياشث ٝث ،ٜدشو زجط ،شثسبو يػٛس بٞ دسٛوس ٗيث زوشح ٝث ىٛثشٔ ذيّو ٖداد سبـف ْبٍٙٞ ٝث اس ٖبٔص سٛظٙٔ ٗيذث .ذيٙو ٝجػبحٔ بٞ دسٛوس ٗيث زوشح ْبٍٙٞ ٝث اس بٞ ٖبٔص ٗيا 3 ُىؿ .ذييبٕ٘ ٝجػبحٔ اس ي٘بٔص ي ّٝكبف ٚ زجط اس ٖبٔص ٜسبثٚد MainForm سد ٗشٔ ٝجؼػ ساذمٔ شييغس ٗيشؼخ٘ نحٔ ْشف يٚس بٞ ٜداد ؾيبٕ٘ بس ٝٔب٘شث ياشػا صبغآ صا ْصلا ٖبٔص ذيٙيث ئ ٝو سًٛ ٖبٕٞ .ذٞد ئ ٖبـ٘ بٕؿ ٝث ، ٜداد عٛ٘ ياساد زػ بشيد صا ٜدبفػا يّئ 300 ٗيٍ٘بئ سًٛ ٝث ؽسبفػ ربيئضػ ٝث ىٛثشٔ ربػلاًا ؾياشيٚ ٜظيٚ ٝث ٚ بٞ دسٛوس ٗيث زوشح .زػا ٜدٛث ٝي٘بط 13 صبػ ٝيجؿ سد يّكا ؽا يذؼث دسٛوس ٝث دسٛوس هي صا زوشح ٖاضئ ٖبٕٞ ٝث شخآ دسٛوس ٝث َٚا دسٛوس صا زوشح ٝو ذيٙيث ئ بٕؿ َبح ٗيػ سد .زػا ٜدشث ٖبٔص ٝي٘بط سد شخآ ٝث َٚا دسٛوس صا زوشح ٖبٔص يشيٌ ٜصاذ٘ا .ذٙو ئ سبو يّكا ي ٝظفبح سد لأبو زػبشيد ٝو ذٞد ئ ٖبـ٘ غلاٚ سد ٗيا ٚ زػا ٜدشث ٖبٔص .زػا ٜذؿ ٜداد ٖبـ٘ 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

http://m0911.wordpress.com

http://m0911.wordpress.com بٞ دسٛوس ٗيث ييبػ ٝث بػ ٚ بٞ ٜداد ؾيبٕ٘ ٚ يساضٌسبث

بٞ دسٛوس ٗيث ييبػ ٝث بػ ٚ بٞ ٜداد ؾيبٕ٘ ٚ يساضٌسبث ياشث ْصلا ٖبٔص :30 ُىؿ

زجط يسبػلاًا ه٘بث سد اس راشييغس ٝو زػا ْصلا يلخـٔ يبٞ ٖبٔص سد دساد ئ ٍٝ٘ يّكا ي ٝظفبح سد اس بٞ ٜداد ي ٕٝٞ زػبشيد ٝو بػ ٖآ صا ي٘بٔص ٚ ذيٙو سبو زػبشيد يٚس زػا ٗىٕٔ ٝو ييبػ بس ٝو زػا ٗيا ؽٚس هي .دساد ٖبس دٛخ شظ٘ ٝث ٝشؼث ٖآ ٖبٔص ٚ ذيٙو (commit) يؼٌل ٖبؼٕٞ يّكا سٚشػ هي بث اس بٞ ٜداد زػا ساشل شٌا ٝشجِا .ذييبٕ٘ يؼٌل زجط يسبػلاًا ه٘بث يٚس اس راشييغس دذٙجث اس ٝٔب٘شث ذٞاٛخ ئ شثسبو ٝو #ْس ي ٝظفبح$ زػبشيد سد بٞ ٜداد ي ٕٝٞ شٌا َبح شٞ ٝث .ذييبٕ٘ يؼٌل زجط اس بٞ ٜداد ،ٖآ بث يصبػ ٖبؼٕٞ صا ؾيد ٝو زػا ششٟث ،ذيٙو يصبػ ّٕٝػ صا يكبخ يبٞ ٖبٔص سد بٕؿ زػا ٗىٕٔ يِٕٛؼٔ ي ٝٔب٘شث هي سد .زفس ذٙٞاٛخ ٗيث صا بٕؿ يبٞ ٜداد ،ٝٔب٘شث ٖدبشفا سبو صا ْبٍٙٞ ٝث ذٙ٘بٕث ٕٗٔ َبح ٗيػ سد .ذييبٕ٘ يؼٌل زجط اس بٞ ٜداد ،دشيٌ ئ ساشل ٝٙئص غد سد ٜب٘شث ٝو ي٘بٔص ٚ يػسبخ سٚشػ بث يصبػ ٖبؼٕٞ ،ٝٔب٘شث ٖذؿ ٝشؼث فشلٔ يث يساشىس يذو هي رسٛك ٝث بجيشمس زػبشيد ،زِبح ٗيا سد ٝو ذيٙو يؼٌل زجط ضي٘ ذيذػ دسٛوس دبؼيا نحٔ ٝث اس بٞ ٜداد ذيٞاٛخث زػا زجط بٞ ٜداد #ٝٔب٘شث ٗشؼي$ Closing داذيٚس شيذٔ سد َبظٔ ٗيا سد .ذٞد ئ ٖبـ٘ بٕؿ ٝث اس يؼٌل زجط ي ٜٛح٘ 3 ذو .دٛث ذٞاٛخ بٞ ٜداد صا .ذؿبث ٜدشو شييغس زػبشيد ياٛشحٔ ٝو يًشؿ ٝث ٝشجِا ذ٘ٛؿ ئ يؼٌل

private void MainForm_Closing(object sender, CancelEventArgs e)

{

 

if (northwindDataSet.HasChanges())

{

ordersTableAdapter.Update(northwindDataSet);

order_DetailsTableAdapter.Update(northwindDataSet);

}

}

ٝٔب٘شث ٗشؼث ْبٍٙٞ ٝث بٞ ٜداد يؼٌل زجط :3 ذو

بٞ ٜداد بث سبو زػبشيد ي ٝيِٚا يٞد ساذمٔ صا غد ٚ دٛؿ ئ دبؼيا ٛيدٛشػا َاٚظيٚ يػٛس ذو ٓظػا ؾخث ،ذييبٕ٘ ئ ٜدبفشػا زػبشيد صا ٝو ي٘بٔص ياشث بٕؿ زػا ٗىٕٔ ٜٚلاػ ٝث .زػا يسبػلاًا ه٘بث سد بٞ ٜداد يؼٌل زجط ذيؼيٛٙث بٕؿ زػا ْصلا ٝو يذو بٟٙس غلاٚ سد .دٛؿ ئ ْبؼ٘ا زػشػ بث اس بٞ ٜداد ذيٞاٛخث ٝو ي٘بٔص لاظٔ ،ذييبٕ٘ ٜدبفشػا زػبشيد يٞد ساذمٔ ياشث اس مشف ؾيد صا شيغ ُح ٜاس ٚ ذيٙو يؼيٛ٘ذو بٞ ٜداد ٗيث زوشح .ٓيا ٜدشو شظ٘ فشك اس شيخأس بث بٞ ٜداد يسازٌسبث ذٙ٘بٔ ٝشفشـيد رب٘بىٔا يخشث بٔ ِٝبمٔ ٗيا سد .ذيٞد ساشل ٝظفبح سد غذػ ،ٜدشو ششّيف

57

http://m0911.wordpress.com

ٜداد عٛ٘ بث SqlCeResultSets صا ٜدبفشػا سًٛ ٝث بٕؿ ياشث ذو صا يـخث .زؿاد ذيٞاٛخ يػششػد شس زحاس SQL CE يسبػلاًا ه٘بث يبٞ ٜداد ٝث SqlCeResultSets صا ٜدبفشػا بث ه٘بث بث ٓيمشؼٔ ٖدشو سبو SqlCeResultSets ٟٓٔ يبٞ يٌظيٚ صا يىي .ذيذيد زػبشيد سد ٝو يا ٜصاذ٘ا ٝث ٝ٘ يِٚ دٛؿ ئ دبؼيا سبودٛخ بث SqlCeResultSets هي .ذ٘ٛؿ يٕ٘ يذو ُيبثٛٔ صٚذٙيٚ ٜبٍشػد زٕيل ٖاشٌ ٚ دٚذحٔ ْس ي ٝظفبح سد بٞ ٜداد شٍيد رسبجػ ٝث .زػا يسبػلاًا ٚ زػبشيد ييآسبو ي ٝؼيبمٔ ياشث .زػا ٜدشو تيوشس (DataReader) سذيسبشيد ييآسبو بث اس (DataSet) زػبشيد سبو يشحاس غلاٚ سد ،ٜداد عٛ٘ ٖبٕٞ بث اس ييآسبو .دشو ٓيٞاٛخ ٜدبفشػا -ذٙو سبو ربيّٕػ ٖبٕٞ بث يّجل َبظٔ َٚاذػ ٖبٕٞ يٚس ٝو - ٝثبـٔ يا ٝٔب٘شث صا SqlCeResultSets SqlCeResultSets دبؼيا ياشث يؿسبفػ ساضثا هي ،ربلخـٔ ي ٜشؼٙد سد بٕؿ 4 ُىؿ سد .زفشٌ ٓيٞاٛخ ٜصاذ٘ا (Stopwatch) ششٔٛ٘شو ءيؿ ٝث اس Northwind يسبػلاًا ه٘بث ٝث ُلشٔ (DataSource) ٜداد غجٙٔ هي بٕؿ .زػا ُجل ٝثبـٔ زؼخ٘ ي ّٝحشٔ .ذيٙيث ئ زػبشيد يبػ ٝث بٕؿ غذػ .ددشٌ ئ دبؼيا 2008 ٛيدٛشػا َاٚظيٚ يػٛس سبودٛخ سًٛ ٝث ،عٛ٘ ياساد زػبشيد هي ،ٜداد غجٙٔ ٖدٚضفا ْبٍٙٞ .ذيياضفا ئ ٖبس ٜطٚشد ٝو زػا ٗيا ذيٙيث ئ 4 ُىؿ سد ٝچ ٖآ .ذيبٕ٘ دبؼيا اس بٞ SqlCeResultSets بس ذيٞد ئ شييغس ربلخـٔ ي ٜشؼٙد سد اس يؿسبفػ ساضثا يػشف -يّكا ؾيبٕ٘ هي ٗشؿاد ياشث .دساذ٘ دٛػٚ ٚد ٖآ ٗيث يًبجسسا يِٚ زػا ٜدشو دبؼيا ٖبس ياشث SqlCeResultSets ٚد ٛيدٛشػا َاٚظيٚ .ذيؼيٛٙث اس يػشف ٚ يّكا يبٕ٘ ٚد ٗيث َبلسا ٝث ىٛثشٔ ذو ٖبسدٛخ ذيبث MainForm سد (Master-Detail)

ٝو ذيؿبث ٝشؿاد ٝػٛس .زػا ٜذؿ ٜداد ٖبـ٘ 1 ذو سد ذيبٕ٘ ئ دبؼيا ٖبس ياشث MainForm سد بٞ ٜداد ؾيبٕ٘ ياشث ٛيدٛشػا َاٚظيٚ ٝو يذو .ذؿ ذٞاٛخ شد ؾِٚذػ يبٞ ٜداد بث ٛيدٛشػا َاٚظيٚ يػٛس سبودٛخ سًٛ ٝث Orders َٚذػ يبٞ ٜداد يٚبح (DataGrid) ذيشٌبشيد يمف .دٛؿ يٕ٘ دبؼيا بٞ دسٛوس ؾياشيٚ ِٕٝبىٔ ي ٜشؼٙد بي بٞ ٜداد ي ٝكلاخ ؾيبٕ٘ ياشث بٞ ٗيا شث ٝفبها ْشف چيٞ ٗيٙچٕٞ

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);

}

}

SqlCeResultSet يػٛس شثسبو يػاٚ يبٞ َششٙو ي ٝيِٚا يٞد ساذمٔ ياشث سبودٛخ ي ٜذؿ ذيِٛس ذو :4 ذو

58

http://m0911.wordpress.com

http://m0911.wordpress.com ٜداد عٛ٘ بث يبٞ SqlCeResultSet :31 ُىؿ ذٙچ ،ٜداد زٕحص ٖبسدٛخ

ٜداد عٛ٘ بث يبٞ SqlCeResultSet :31 ُىؿ

ذٙچ ،ٜداد زٕحص ٖبسدٛخ ٝث يوذ٘ا ذيبث بٕؿ Order َٚذػ صا ٜذؿ ةبخش٘ا دسٛوس بث ٖبٔص ٓٞ Order_Details َٚذػ يبٞ ٜداد ؾيبٕ٘ ياشث يٚس .زػا Order_DetailsResultSet دشوسبو دٛجٟث ٚ ذو ٗشؿٛ٘ سبو ٗيا ياشث ةٛخ عٚشؿ ي ٌٝم٘ هي .ذيٙو يؼيٛ٘ ذو يخ دبؼيا ٖبس ياشث Northwind.cs ْب٘ ٝث حسبؿ يػ ذو ُيبف هي ٛيدٛشػا َاٚظيٚ .ذيٙو هيّو زػاس سسّٛذؼوا ٗؿِٛٛػ سد Northwind.xsd ٜدبيد (partial) يئضػ علاو هي رسٛك ٝث يحاشً ييحٔ يػٛس ٜذؿ ذيِٛس ذو .ذيٙو سبو Order_DetailsResultSet يٚس ٝو ذيبٕ٘ ئ بث ذيذػ (Constructor) ي ٜذ٘صبػ هي .ذيٙيث ئ ذيا ٜدٚضفا Order_DetailsResultSet ٝث ٝو اس يسب٘بىٔا بٕؿ 5 ذو سد .دٛؿ ئ يصبػ شٌا .ٝ٘ بي دساد ٖذؿ صبث ٝث صبي٘ Order Details َٚذػ بيآ ٝو ذٞد ئ ٖبـ٘ يمٌٙٔ شيغشٔ ٗيا ٝو زػا ٜذؿ دبؼيا (boolean) يمٌٙٔ ششٔاسبد ٚ عشد ياشػا ياشث 5 ذو سد ٝو - اضؼٔ سًٛ ٝث Open َاٚس هي يػٛس ذي٘اٛس ئ ذٙى٘ صبث اس َٚذػ ٝو ذيٙو ي٘اٛخاشف يسًٛ اس ٜذ٘صبػ ٗيا بٕؿ ٝو ذيا ٜدشو دبؼيا Order_DetailsResultSet هي بٕؿ تيسشس ٗيذث .ذيٙو صبث اس َٚذػ دٛؿ ئ ٜذيد Order Details َٚذػ يٚس ٛػ ه٘بث يصبػ ٝٙيٟث ٚ ييآسبو ٖدشث شسلابث ياشث يسازٌ (index) قخبؿ صا بٔ ِٝبمٔ ٗيا سد .زػا ٜدشو يسازٌسبث اس ٖبس شظ٘ دسٛٔ يبٞدسٛوس يمف ذي٘اٛس ئ قخبؿ ٖدٚضفا بث ازِ .زػا SqlCeResultSet ٚ زػبشيد ٗيث ييآسبو حيحك ي ٝؼيبمٔ سبو ٗيا ُيِد.ٓيا ٜدشى٘ ٜدبفشػا يسبػلاًا .ذيسٚآ زػد ٝث يششٟث غيبش٘

59

http://m0911.wordpress.com

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())

{

// Designtime Connection String resultSetConnectionString = "Data Source=C:\\Users\\Maarten\\Documents\\Visual Studio " +

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

}

else

{

// Runtime Connection String resultSetConnectionString = ("Data Source =" + (System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\Northwind.sdf;"));

}

if (openTable) this.Open();

}

public void Open(string query)

{

System.Data.SqlServerCe.SqlCeCommand sqlCeSelectCommand = null; try

{

// Open a connection to the database // sqlCeConnection = new System.Data.SqlServerCe.SqlCeConnection(this.resultSetConnectionString); sqlCeConnection.Open(); // Create the command // sqlCeSelectCommand = sqlCeConnection.CreateCommand(); sqlCeSelectCommand.CommandText = query; sqlCeSelectCommand.CommandType = System.Data.CommandType.Text;

// Generate the ResultSet

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

}

finally

{

60

http://m0911.wordpress.com

if ((sqlCeSelectCommand != null))

{

sqlCeSelectCommand.Dispose();

}

}

}

}

Order_DetailsResultSet ي ٝؼػٛس :5 ذو

هي ٝث اس شثسبو يػاٚ يبٞ َششٙو ذيٛؿ ٗئٌٕٔ ٝو ٗيا زؼخ٘ .ذيساد ششـيث سبو يوذ٘ا ٝث صبي٘ Order_DetailsResultSet ي ٝؼػٛس صا غد ئ ساشل ْشف يٚس ٖذيـو بث اس Order_DetailsResultSet يبٞ َششٙو ٝو ي٘بٔص .ذيا ٜدشو ُلشٔ ذيذػ (BindingSource) َبلسا غجٙٔ ذؿ ذٙٞاٛخ ُلشٔ ،زػا ٜذؿ دبؼيا ْشف يٚس OrderResultSet ذيشٌبشيد ٖداد ساشل ٚ ٖذيـو ْبٍٙٞ ٝث ٝو يِبلسا غجٙٔ ٝث بٞ ٖآ ،ذيٞد ذّيف زػسدب٘ َبلسا يِٚ .ذٙو يٕ٘ زػسد يّىـٔ -زػا َٚذػ ٚد ٗيث نششـٔ يذيّو ذّيف هي ٝو - Order ID ذّيف ياشث دسٛٔ ٗيا .#5 ُىؿ$ غجٙٔ ٗيا سد ٖٛچ ،ذؿ ذٙٞاٛخ اشػا ٖبٔص يبٌخ صٚشث تػٛٔ OrderResultSetBindingSource ٝث Order_DetailsResultSet يبٞ .ذ٘ا ٜذـ٘ فيشؼس ٜداد

يبٞ .ذ٘ا ٜذـ٘ فيشؼس ٜداد زػسدب٘ ي ٜداد غجٙٔ ٝث Product ID ٗشٔ

زػسدب٘ ي ٜداد غجٙٔ ٝث Product ID ٗشٔ ٝجؼػ َبلسا :32 ُىؿ

بژث شژثاشث اس ٖآ DataSource ي ٝژلخـٔ ٝژو زژػا ٗؿِٛٛػ ٝث (binding source) َبلسا غجٙٔ هي ٖدٚضفا ُىـٔ ٗيا غفس ٜاس ٗيشس زحاس صا شثسبژژو يژژػاٚ يبژژٞ َشژژشٙو ٗشخاذژژ٘ا ٚ ٖذيژژـو ْبژژٍٙٞ ٝژژث سبژژو ٗژژيا صا غژژد .#6 ُىژژؿ$ ٓيژژٞد ساشژژل Order_DetailsResultSet بث .ذييبٕ٘ ٜدبفشػا ذيٞاٛخ ئ اس َبلسا غجٙٔ ْاذو ٝو ذيػشد ذٞاٛخ بٕؿ صا ٛيدٛشػا َاٚظيٚ MainForm يٚس ٝث Order_DetailsResultSet ربژػلاًا ربژيئضػ ؾيبژٕ٘ ياشژث ذژو ٗشژؿٛ٘ ،يذؼث دسٛٔ .ذؿ ذٞاٛخ فشًشث داشيا ٗيا ،ذيا ٜدٕٛ٘ ٝفبها ٖبس دٛخ ٝو يِبلسا غجٙٔ ٖدشو قخـٔ ي ٝؼژػٛس ؾژخث ٖبٕٞ صا .ذيٙو ْبٕس اس سبو ٗيا ذي٘اٛس ئ MainForm سد يؼيٛ٘ ذو يخ ذٙچ بث .زػا ذيشٌبشيد صا يّؼف ي ٜذؿ ةبخش٘ا دسٛوس .ذيٙو ٜدبفشػا 5 ذو سد ٜذؿ ٝشؿٛ٘ Order_DetailsResultSet

61

http://m0911.wordpress.com

http://m0911.wordpress.com Order_DetailsResultSet ٝث ٖآ ةبؼش٘ا ٚ (binding source) َبلسا غجٙٔ

Order_DetailsResultSet ٝث ٖآ ةبؼش٘ا ٚ (binding source) َبلسا غجٙٔ يشػد ٖدٚضفا :33 ُىؿ

.ذژيسٚآ زژػد ٝژث اس Order ID #ٝژيِٚا ذيّو$ ذّيف ساذمٔ ذيبث اذشثا ،#6 ُىؿ$ ذٙو ئ ةبخش٘ا ذيشٌبشيد صا اس #ؽسبفػ$ دسٛوس هي شثسبو ٝو سبث شٞ ٝژث اس ٜذژؿ ةبخش٘ا ؽسبفػ ربيئضػ ٝث ىٛثشٔ ربػلاًا 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

http://m0911.wordpress.com

order_DetailsResultSet = new SqlCE35WithResultSets.NorthwindResultSets.Order_DetailsResultSet(false); order_DetailsResultSet.Open(query); order_DetailsResultSet.Bind(order_DetailsResultSetBindingSource);

}

(master) يّكا ٝث (details) يػشف يبٕ٘ َبلسا :6 ذو

َبلسا غجٙٔ يٚس PositionChanged داذيٚس ذٙو ئ ةبخش٘ا #Orders َٚذػ ذيشٌبشيد سد$ اس ذيذػ دسٛوس هي شثسبو ٝو ي٘بٔص يّؼف دسٛوس Order ID ذّيف ساذمٔ ٖدسٚآ زػد ٝث ياشث ذ٘اٛس ئ داذيٚس ٗيا .دٛؿ ئ ٜذ٘اٛخ اشف ordersResultSetBindingSource يبٙجٔ شث ذيذػ يٛػ ٚ عشد هي صا ٜدبفشػا بث ٖآ صا شٍيد يىي ،ٜذؿ داصآ يّؼف order_DetailsResultSet ي ٝظفبح .دٛؿ ٜدبفشػا Order َٚذػ صا ،زػا يّؼف Order ID بث شثاشث ٖآ ي ٜسبٕؿ ٝو اس يؿسبفػ ربيئضػ ٝث ىٛثشٔ ربػلاًا ٝو دٛؿ ئ ٝشخبػ Order ID .ذ٘ادشٌ ئ شث Details دسٛٔ سد ٗىيِ .دٛؿ ئ دبؼيا ٖبس ياشث سبودٛخ سًٛ ٝث دسٛوس ؾياشيٚ ٚ بٞ ٜداد ي ٝكلاخ ؾيبٕ٘ ْشف ٝو ذيذيد زػبشيد ؾخث سد ُيِد ٝث ِٝبمٔ ٗيا سد .ذيٙو دبؼيا اس ٖآ ٝث ىٛثشٔ يبٞ ذو ٚ بٞ ْشف ذيبث ٖبسدٛخ بٕؿ ٚ ذٙو يٕ٘ يسبو ٗيٙچ ٛيدٛشػا َاٚظيٚ SqlCeResultSet ٝث SqlCeResultSet ٖٛچ ٝو ٗيا شٍيد دسٛٔ .ٓيداذ٘ ْبؼ٘ا اس ؾخث ٗيا ٓيدشو ئ زجحك ؽٚس ٚد ييآسبو ي ٝؼيبمٔ ي ٜسبث سد بٔ ٝو ٗيا #زػبشيد ذٙ٘بٕٞ$ بٞ ٜداد يؼٌل زجط ياشث يؼيٛ٘ذو ٝث يصبي٘ بٞ ٜداد شييغس ْبٍٙٞ ٝث ،ذٙو ئ ٜشيخر يسبػلاًا ه٘بث يٚس اس بٞ ٜداد ٓيمشؼٔ سًٛ .زؼي٘ MainForm_Load داذيٚس شيذٔ سد .ٓيٙو ئ ٜدبفشػا ششٔٛ٘شو ءيؿ صا ،ي٘بٔص ييآسبو يشيٌ ٜصاذ٘ا ياشث ٓٞ بػ ٗيا سد زػبشيد ؽٚس بث ٝثبـٔ ٝث ىٛثشٔ ربػلاًا ٖدسٚآ زػد ٝث ياشث ْصلا ٖبٔص تيسشس ٗيٕٞ ٝث .ٓيٞد ؾيبٕ٘ زيؼهٚ ساٛ٘ سد ٝشفشٌ ٜصاذ٘ا اس بٞ ٜداد يسازٌسبث ٖبٔص ٓي٘اٛس ئ ياشث اس ييآسبو يشيٌ ٜصاذ٘ا ٗيا غيبش٘ 7 ُىؿ .ٓيسٚآ ئ زػد ٝث شٍيد دسٛوس ٝث دسٛوس هي صا زوشح ْبٍٙٞ اس ؽسبفػ ربيئضػ يسبػلاًا ه٘بث صا بٞ ٜداد يثبيصبث بس ٜبٍشػد صبػ ٝيجؿ سد ٝٔب٘شث يسازٌسبث ي ٝظحِ صا ذيٙيث ئ ٝو سًٛ ٖبٕٞ .ذٞد ئ ٖبـ٘ SqlCeResultSet ْصلا ٖبٔص ٝي٘بط يّئ 50 (Order details) ؽسبفػ ربيئضػ ٜظيٚ ٝث بٟ٘آ ي٘بػس صٚس ٝث ،بٞ دسٛوس ٗيث زوشح .زػا ْصلا ٖبٔص ٝي٘بط يّئ 300 .ذ٘ٛؿ ٜذ٘اٛخ ذيبث يششـيث يبٞدسٛوس داذؼس ٖٛچ دساد ْصلا ٖبٔص زػبشيد زِبح صا ششـيث يوذ٘ا دسٛوس ٗيشخآ ٝث دسٛوس ٗيِٚا صا زوشح .دساد

ٝث دسٛوس ٗيِٚا صا زوشح .دساد #3 ُىؿ بث ذيٙو ٝؼيبمٔ$ بٞ دسٛوس ٗيث

#3 ُىؿ بث ذيٙو ٝؼيبمٔ$ بٞ دسٛوس ٗيث ييبػ ٝث بػ ٚ بٞ ٜداد ؾيبٕ٘ ٚ يساضٌسبث ياشث ْصلا ٖبٔص :34 ُىؿ

63

http://m0911.wordpress.com

يشيٌ ٝؼيش٘ ٜظيٚ ٝث .ذيساذ٘ ْصلا ي٘اذٙچ يؼيٛ٘ ذو بٕؿ ذٙو ئ ذيِٛس اس ذو ؽدٛخ 2008 ٛيدٛشػا َاٚظيٚ ٝو بػ ٖآ صا .زػا ٖبػآ سبيؼث زػبشيد صا ٜدبفشػا ؾيبٕ٘ ياشث يششـيث ٖبٔص ،يّكا ٝظفبح ٝث بٞ ٜداد ي ٕٝٞ يسازٌسبث ُيِد ٝث .زػا تػبٙٔ يػشف -يّكا يبٞ َٚذػ ٖبٔص ٓٞ ؾيبٕ٘ زِبح سد فشلٔ ذيبث ٓٞ اس ٖبس ُيبثٛٔ صٚذٙيٚ ٜبٍشػد زٕيل ٖاشٌ ٚ ٗي٘صب٘ يّكا ي ٝظفبح ٗيٙچٕٞ ٚ دساد ْصلا بٕؿ ي ٝٔب٘شث ْشف سد بٞ دسٛوس ي ٝيِٚا .ذيٙو يمف ٚ ذٙو ئ سبو يسبػلاًا ه٘بث يٚس ٓيمشؼٔ سًٛ ٝث ٖٛچ .بٞ ٜداد ي ٝيِٚا يسازٌسبث ْبٍٙٞ ٜظيٚ ٝث دساد يششـيث ييآسبو SqlCeResultSet ذو ٝث صبي٘ يػشف -يّكا َٚذػ ٚد ٖبٔص ٓٞ ؾيبٕ٘ زِبح سد .ذٙو ئ يسازٌسبث يّكا ي ٝظفبح ٝث ،ذٞد ئ ٖبـ٘ ذيشٌبشيد سد ٝو اس ييبٞ دسٛوس ي ٝكلاخ ٚ ؾياشيٚ ؾيبٕ٘ ْشف شٌا .دٛؿ ششـيث ذ٘اٛس ئ يسبػلاًا ه٘بث سد (index) قخبؿ دبؼيا بث SqlCeResultSet زػشػ .ذيساد يؼيٛ٘ ٓٞ ذيبؿ ٚ ذيؼيٛٙث اس ذو يخ ذٙچ ٝو دصسا ئ ؾشٕحص ٝث ؽٚس ٗيا شسلابث ييآسبو زيبٟ٘ سد .ذيٙو يؼيٛ٘ ذو ٖبسدٛخ ذيبث ذيٞاٛخ ئ اس بٞ ٜداد ; ) .ذيٙو يذو ِٝبمٔ هي صا

64

http://m0911.wordpress.com

مشش لصف

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

65

http://m0911.wordpress.com

ٝٔذمٔ

َاٚظژيٚ بي هيؼيث َاٚظيٚ ٖبثص ٚد صا يىي ٝو ي٘بٔص ٜظيٚ ٝث دساد حبشىػد سد ساضفا ْش٘ ي ٝؼػٛس ٝث يدبيص زٞبجؿ ُيبثٛٔ صٚذٙيٚ ساضفا ْش٘ ي ٝؼػٛس ذژيٙو يژٔ ٜدبفشژػا ٓژٞ ُيبثٛٔ صٚذٙيٚ ياشث اس حبشىػد صٚذٙيٚ يبٞ ٝٔب٘شث ي ٝؼػٛس يبٞساضثا ٖبٕٞ بٕؿ .ذيٙو ئ ٜدبفشػا اس ز٘ راد حسبؿ يػ ٗژيا ،ذژٙٙو يژٔ ٝژهشػ اس ُيبثٛٔ صٚذٙيٚ ٜبٍشػد ٝو ٜاشٕٞ ٗفّس سٛساشدا بي ٜذ٘صبػ زوشؿ ٝث ٝشؼث .زؼٞ ييحٔ ٚد ٗيا ٗيث ضي٘ ييبٞ رٚبفس ٗىيِ ٝژٔب٘شث هژي ٖذژـ٘ بژي ٖذژؿ اشػا ي ٜذٙٙو ٗييؼس ٜبٍشػد زيٙٔا ٜذٙٞد ٝؼػٛس هي ٜبٌذيد صا .ذٙشؼٞ يػٛٙشٔ يشيٙٔا ربٕيظٙس ياساد بٞ ٜبٍشػد بژث ٝژو ي٘بٔص ٜظيٚ ٝث ساضفا ْش٘ تل٘ بي غيصٛس يٍٍ٘ٛچ سد ِٝأؼٔ ٗيا .دساد يػششػد بٞ ٖآ ٝث ٝٔب٘شث ٝو زػا ٓشؼيػ صا يؼثبٙٔ ٗيٙچٕٞ ٚ ٖآ يٚس .ذٙو ئ اذيد يششـيث زيٕٞا ،ذيساد سبو ٚ شػ فّشخٔ ٖبٌ ٜذ٘صبػ صا يػٛٙشٔ يبٞ #يؿٌٛ$ ٜبٍشػد شيذژٔ ساضژثا صا ٜدبفشژػا بث يشيٙٔا فّشخٔ ربٕيظٙس ؾيبٔصآ يٍٍ٘ٛچ ،ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد زيٙٔا ي ٝٙئص سد اس يذيفٔ ربػلاًا ِٝبمٔ ٗيا ٝژياسا بٕژؿ ٝژث ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد يٚس بٞ ٝٔب٘شث زػسد تل٘ ي ٜٛح٘ زيبٟ٘ سد ٚ 2008 ٛيدٛشػا َاٚظيٚ (security manager) زيٙٔا .ذٞد ئ

ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد سد زيٙٔا

شٞ تل٘ ُٔبو سًٛ ٝث زػا ٗىٕٔ ٜبٍشػد هي .ذ٘ساد يػٛٙشٔ يشيٙٔا ربٕيظٙس ٖبؿ ٜذ٘صبػ زوشؿ ٝث ٝشؼث ُيبثٛٔ صٚذٙيٚ فّشخٔ يبٞ ٜبٍشػد

شثاشث سد يّو ٝث ٜبٍشػد ٝو ٗيا بي .دشيٍث ٝيذييأس شثسبو صا ٝٔب٘شث هي ياشػا بي تل٘ ٗيِٚا ْبٍٙٞ ٝث زػا ٗىٕٔ شٍيد ٜبٍشػد ٚ دشيزذث اس يا ٝٔب٘شث

.ذؿبث دٚذؼٔ ،دساذ٘ ٖآ ي ٜذ٘صبػ صا يشيٙٔا ي ٝيذييأس ٝو ييبٞ ٝٔب٘شث تل٘

ياشث ٚ ذٙشؼٞ ٜاشٕٞ ٗفّس رب٘بىٔا ياساد ُيبثٛٔ صٚذٙيٚ ي ٝشفشـيد يبٞ ٜبٍشػد تّغا ٝو زػا ٗيا فّشخٔ يشيٙٔا ربٕيظٙس دٛػٚ ُيِد هي

سد .زػا ٝىجؿ دٛخ زيٙٔا ُيبثٛٔ صٚذٙيٚ ٜبٍشػد ُيلاد صا يىي ازِ .ذ٘ٚس ئ سبو ٝث ،زػا ٜاشٕٞ ٗفّس سٛساشدا سبيشخا سد ٝو يا ٝىجؿ هي سد ىبجسسا

ٝث .ذٙٙو زظفبحٔ ،ذ٘ٛؿ ئ تل٘ ٖاشثسبو يػٛس يشحاس ٝث ٝو ييبٞ ساضفا ْش٘ شثاشث سد اس ٖبؿ ٝىجؿ ذٙٞاٛخ ئ ٜاشٕٞ ٗفّس يبٞ سٛساشدا غلاٚ

.دشو تل٘ ُيبثٛٔ صٚذٙيٚ ٜبٍشػد هي يٚس -ذؿبث ٜذؿ ٝشؿٛ٘ ُيبثٛٔ صٚذٙيٚ فٛلخٔ شٌا يشح - اس يا ٝٔب٘شث شٞ ٖاٛس يٕ٘ ُيِد ٗيٕٞ

.ذٙشؼٞ يفّشخٔ يشيٙٔا ربٕيظٙس ياساد ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد ،ٜاشٕٞ ٗفّس يبٞ سٛساشدا زػاٛخسد دسٛٔ زيٙٔا ٗئأس ياشث تيسشس ٗيذث

ٜدبفشػا عٛ٘ ٝث ٝىّث ،زؼي٘ ٖآ ي ٜذٙٙو ٜدبفشػا زوشؿ بي ٜاشٕٞ ٗفّس سٛساشدا ُيِد ٝث بفشك ُيبثٛٔ صٚذٙيٚ ٜبٍشػد هي سد ٜذؿ َبٕػا زيٙٔا ٗىيِ

يشيٙٔا فّشخٔ يبٞ ٝيلا .زػا ٜذؿ ٝيجؼس ُٔبػ ٓشؼيػ ُخاد ُٔبو سًٛ ٝث ٚ يسٚشه ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد زيٙٔا .دساد يٍشؼث ضي٘ ٖآ ي

ٝ٘ بي ذ٘ٛؿ شػا ٚ تل٘ ٜبٍشػد يٚس ذٙ٘اٛس ئ بٞ ٝٔب٘شث بيآ ٝو ذٙٙو ٗييؼس قخـٔ يشيٙٔا ٓيظٙس هي يبٙجٔ شث زيبٟ٘ سد بس ذ٘ا ٜذؿ تيوشس ٓٞ بث

؟ٍٝ٘ٛچ ،زػا زجظٔ ؾػشد ٗيا ٝث خػبد شٌا ٚ

ساضفا ْش٘ تل٘ يبٞصٛؼٔ

.ذؿبث عٕٛٙٔ بٞ ٖآ ياشػا يّو ٝث ٝو ٗيا بي ذ٘ٛؿ اشػا ٖآ يٚس زػا ٗىٕٔ بٞ ٝٔب٘شث ُيبثٛٔ صٚذٙيٚ فبخ ٜبٍشػد هي يشيٙٔا ربٕيظٙس ٝث ٝشؼث

:ذ٘ا ٜذؿ فيشؼس ُيبثٛٔ صٚذٙيٚ ٜبٍشػد هي يٚس بٞ ٝٔب٘شث ياشػا ياشث شيص يبٞ صٛؼٔ

ٗيٙچٕٞ ٚ دساد ٓشؼيػ يششؼيػس ٚ ُيبف ٓشؼيػ ٝث ُٔبو يػششػد ،ذٞد ْبؼ٘ا ذ٘اٛس ئ ٜبٍشػد يٚس يسبو شٞ ساضفا ْش٘ :(Privileged) ٜظيٚ

.ذٙو تل٘ ٜبٍشػد يٚس شٍيد يبٞ ساضفا ْش٘ ياشػا ياشث ٝيذييأس ذ٘اٛس ئ

زظفبحٔ يبٞ ؾخث سد ذ٘اٛس يٕ٘ ،ذٙو ي٘اٛخاشف ذ٘اٛس يٕ٘ اس Win32 API غثاٛس .دساد اشػا ياشث ييبٞ زيدٚذحٔ ساضفا ْش٘ :(Normal) يدبػ

.ذٙو تل٘ ٝيذييأس بي ذؼيٛٙث ٓشؼيػ يبٞ ُيبف يٚس بي ذٞد شييغس يششؼيػس ي ٜذؿ

.دساذ٘ اشػا صٛؼٔ ٝػٚ چيٞ ٝث ساضفا ْش٘ :(Blocked) دٚذؼٔ

66

http://m0911.wordpress.com

ساضفا ْش٘ يبٞ ٝيذييأس

.ذژ٘ساد ٝژيذييأس عٛژ٘ ٚد ُژيبثٛٔ صٚذژٙيٚ يبژٞ ٜبٍشػد .ذيشيٍث ٝيذييأس ٖبـ٘ ٖآ ياشث ذي٘اٛس ئ ٖبس ساضفا ْش٘ ياشث اشػا صٛؼٔ ٖدسٚآ زػد ٝث ياشث زوشژؿ ذژٙ٘بٔ$ فبژخ ٜٚشژٌ هي ٝو بػ ٖآ صا .دٛؿ ئ ٗييؼس ٓٞ ٖآ يػششػد حٌػ ٝيذييأس عٛ٘ بث كثبٌٔ ٝو يدبػ ي ٝيذييأس ٚ ٜظيٚ ي ٝيذييأس ٝچ شٌا .ذيؿبث ىبجسسا سد ٖبس ساضفا ْش٘ ي ٝيذييأس زفبيسد ياشث ضواشٔ ٗيا بث ذيبث بٕؿ ،ذٙٞد ئ ٝياسا اس بٞ ٝيذييأس ٗيا #ٜاشٕٞ ٗفّس سٛساشدا بي ٜذ٘صبػ ٜبٍشژػد يٚس ٖبژس ساضژفا ْش٘ ٝو ذيٞاٛخث زػا ٗىٕٔ #Independent Software Vendor ; ساضفا ْش٘ ُمشؼٔ ي ٜذٙؿٚشف$ ISV هي ذٙ٘بٕٞ ياشژث اس ؾِٛژلحٔ ذژ٘اٛس يژٔ ساضژفا ْشژ٘ ي ٜذٙٙو ذيِٛس شٞ ٚ زػا ٜدشو صبغآ اس يسبو ٗيٙچ Mobile2Market زوشؿ .ذٙو سبو يػٛٙشٔ يبٞ غژيصٛس ٚ ذيِٛس هي ٖاٛٙػ ٝث بٕؿ ٖبٔصبػ بي بٕؿ ٝو زػا بٙؼٔ ٗيا ٝث Mobile2Market صا ٝيذييأس زفبيسد .ذيبٕ٘ ٝياسا بٞ ٖآ ٝث ٝيذييأس زفبيسد .ذيٛؿ ئ ٝشخبٙؿ زيٕػس ٝث ساضفا ْش٘ ي ٜذٙٙو

ساضفا ْش٘ يػششػد حٌٛػ

ٗژيا .ذژٞد ْبژؼ٘ا ُژيبثٛٔ صٚذژٙيٚ ٜبٍشژػد يٚس ذژ٘اٛس ئ ييبٞسبو ٝچ ٝيذييأس ٖٚذث ساضفا ْش٘ هي ٝو ذٙٙو ئ قخـٔ فّشخٔ يػششػد حٌٛػ :دساد شيص حشؿ ٝث يػششػد حٌػ ٚد ُيبثٛٔ صٚذٙيٚ .ذ٘ٛؿ ئ ٜذئب٘ (tier) ٝيلا ،فّشخٔ يػششػد حٌٛػ يبژٞ ؾخث ي ٕٝٞ ٝث ُٔبو يػششػد ٚ دٛؿ ئ اشػا ٜبٍشػد يٚس ٜظيٚ صٛؼٔ بث ٝيذييأس ياساد ساضفا ْش٘ :(One-tier security) ٝيلا هي زيٙٔا اشػا ٜظيٚ صٛؼٔ ٖبٕٞ بث رسٛك ٗيا سد .دٛؿ اشػا ٖآ يٚس ذ٘اٛشث ٜبٍشػد يشيٙٔا ربٕيظٙس ٝث ٝشؼث زػا ٗىٕٔ ٝيذييأس ٖٚذث ساضفا ْش٘ .دساد ٜبٍشػد .ذؿ ذٞاٛخ صٛژؼٔ بژث ذژ٘اٛس يژٔ ؽا ٝژيذييأس عٛژ٘ ٝث ٝشؼث ٚ دٛؿ اشػا ٜبٍشػد يٚس ذ٘اٛس ئ ٝيذييأس ياساد ساضفا ْش٘ :(Two-tier security) ٝيلا ٚد زيٙٔا اشژػا يدبژػ صٛژؼٔ بث اشػا رسٛك سد ٗىيِ ،دٛؿ اشػا زػا ٗىٕٔ ٜبٍشػد يشيٙٔا ربٕيظٙس ٝث ٝشؼث ٝيذييأس ٖٚذث ساضفا ْش٘ .دٛؿ اشػا ٜظيٚ بي يدبػ .ذؿ ذٞاٛخ

ٜبٍشػد يشيٙٔا ربٕيظٙس

ٗشژؿاذ٘ دٛژػٚ بژث بٕژؿ ساضژفا ْش٘ بيآ .ذ٘بٔ ئ ٟٓٔ ؾػشد هي ،ذيذؿ ٝػٛشٔ اس ساضفا ْش٘ ي ٝيذييأس ٖبـ٘ بث ساضفا ْش٘ ياشػا صٛؼٔ رٚبفس ٝو َبح فژيشؼس ُژيبثٛٔ صٚذژٙيٚ يبژٞ ٜبٍشػد ياشث ساذ٘بشػا يشيٙٔا ٓيظٙس ذٙچ ؟دٛؿ اشػا ٚ تل٘ ُيبثٛٔ صٚذٙيٚ فبخ ٜبٍشػد هي يٚس ذ٘اٛس ئ ٝيذييأس :ذييبٕ٘ اشػا اس ٝيذييأس ٖٚذث ي ٝٔب٘شث ٝو داد ذٙٞاٛخ اس صٛؼٔ ٗيا بٕؿ ٝث يخشث ٝو زػا ٜذؿ

اشػا ٜبٍشػد يٚس ٜظيٚ صٛؼٔ بث ذٙ٘اٛس ئ ٝيذييأس ٗشؿاذ٘ بي ٗشؿاد صا شظ٘ فشك بٞ ساضفا ْش٘ ي ٕٝٞ :(Security Off) زيٙٔا ٖٚذث .ذ٘ٛؿ يٚس ٜظيٚ صٛؼٔ بث ،يشيٙٔا ي ٝيذييأس ٖبـ٘ ياساد يبٞ ساضفا ْش٘ ي ٕٝٞ :(One-Tier Prompt) شثسبو يػٛس يا ٝيلا هي ذييأس اس ٝيذييأس ٖٚذث ساضفا ْش٘ ياشػا شثسبو شٌا .دشيٌ ئ رسٛك شثسبو ٓيٕلس بث ٝيذييأس ٖٚذث يبٞ ساضفا ْش٘ ياشػا .ذ٘ٛؿ ئ اشػا ٜبٍشػد .ذؿ ذٞاٛخ اشػا ٜظيٚ صٛؼٔ بث ساضفا ْش٘ ،دشيزذث صٛؼٔ ٗىيِ ذؿ ذٙٞاٛخ اشػا ٜبٍشػد يٚس ٝيذييأس ياساد يبٞ ساضفا ْش٘ ي ٕٝٞ :(Two-Tier Prompt) شثسبو يػٛس يا ٝيلا ٚد ذييأس ذ٘ٛؿ اشػا ذٙ٘اٛس ئ شثسبو ي ٜصبػا بث ،ٝيذييأس ٖٚذث يبٞ ساضفا ْش٘ .دٛؿ ئ ٗييؼس يشيٙٔا ي ٝيذييأس عٛ٘ ٝث ٝشؼث يدبػ بي ٜظيٚ ياشػا .ذؿ ذٙٞاٛخ اشػا يدبػ صٛؼٔ بث يمف ،اشػا رسٛك سد ٗىيِ صٛؼٔ .ذ٘ٛؿ اشػا ٜبٍشػد يٚس ذٙ٘اٛس ئ يشيٙٔا ي ٝيذييأس ياساد يبٞ ساضفا ْش٘ يمف :(Third-Party Signed) ضِبط قخؿ ٝيذييأس ذٙ٘بٔ ساضفا ْش٘ ي ٝؼػٛس ٓشؼيػ هي سد ذيبث ٝيذييأس زفبيسد ياشث .دٛث ذٞاٛخ ساضفا ْش٘ ي ٝيذييأس عٛ٘ ٝث ٝشؼث يدبػ بي ٜظيٚ ياشػا ذ٘ٛؿ ئ ٝياسا ٚ يساذيشخ ٜاشٕٞ ٗفّس يبٞ سٛساشدا يػٛس ٝو ُيبثٛٔ صٚذٙيٚ يبٞ ٜبٍشػد تّغا .ذيٙو ْب٘ زجط Mobile2Market .ذ٘ساد دٛخ بث اس Mobile2Market ي ٝيذييأس تؼح شث يدبػ بي ٜظيٚ ياشػا صٛؼٔ .ذ٘ٛؿ اشػا ٜبٍشػد يٚس ذٙ٘اٛس ئ يشيٙٔا ي ٝيذييأس ياساد يبٞ ساضفا ْش٘ يمف :(Locked) دٚذؼٔ .دٛؿ ئ قخـٔ ٝيذييأس عٛ٘

67

http://m0911.wordpress.com

DLL ي ٝ٘بخثبشو يبٞ ُيبف ٚ اشػا صٛؼٔ

يبٙژؿآ حلاٌژكا ٖبٕٞ صا غد ٗيا صا ٝو زػا يىئبٙيد ي ٝ٘بخثبشو يبٞ ُيبف ٓٞ ٖآ ٚ ٓيٙىث ٖآ َبح ٝث يشىف ذيبث ٝو زؼٞ ٓٞ شٍيد دسٛٔ هي ٝشژؿاد يدبژػ بژي ٜظژيٚ ياشػا صٛؼٔ بث ٝيذييأس ٝو ٗيا بي ذٙؿبث ٝيذييأس ٖٚذث ذٙ٘اٛس ئ ٓٞ بٞ DLL بٞ ٝٔب٘شث ذٙ٘بٕٞ .ٓيٙو ئ ٜدبفشػا اس DLL هژي ٜظژيٚ يژػششػد صٛؼٔ بث ٝٔب٘شث هي لاظٔ شٌا .ذيآ ئ ؾيد تِبػ َاؤػ هي ذ٘ٛؿ ئ ٜدبفشػا بٞ ٝٔب٘شث ُخاد صا بٞ DLL ٝو بػ ٖآ صا .ذٙؿبث شژٌا ؟ذژشفا يژٔ يلبژفسا ٝژچ ذٙو ٜدبفشػا ،ذ٘اٛخ ئ اشف اس Win32 API ٖبٙيًٕا دسٛٔ غثبس هي دٛخ ُخاد صا ٓٞ ٖآ ٝو اس ٝيذييأس ٖٚذث DLL .دٛث ذٞاٛخ يشيٙٔا قم٘ هي ٗيا ٝو دٛؿ ٜداد بمسسا ٝٔب٘شث يػششػد حٌػ ٖبٕٞ ٝث ٓٞ DLL ُيبف

68

http://m0911.wordpress.com

:ذٙٙو اذيد يػششػد بٞ DLL ٝث ٖآ كثبٌٔ بس زػا ٜذؿ دبؼيا بٞ ٝٔب٘شث ياشث شيص ٗي٘اٛل ٚس ٗيا صا

يا ٝيلا ٚد ي ٝيذييأس

يا ٝيلا هي ي ٝيذييأس

زيٙٔا ٖٚذث

DLL ٚ ٝٔب٘شث تيوشس

شثسبو ي ٜصبػا بث يدبػ

صٛؼٔ ٖٚذث ي ٝٔب٘شث شثسبو ي ٜصبػا بث ٜظيٚ

ٜظيٚ

ٜظيٚ

صٛؼٔ ٖٚذث DLL

شثسبو ي ٜصبػا بث يدبػ

شثسبو ي ٜصبػا بث ٜظيٚ

ٜظيٚ

يدبػ يػششػد بث DLL

شثسبو ي ٜصبػا بث يدبػ

شثسبو ي ٜصبػا بث ٜظيٚ

ٜظيٚ

ٜظيٚ يػششػد بث

DLL

شثسبو ي ٜصبػا بث يدبػ

يدبػ صٛؼٔ بث ي ٝٔب٘شث

ٜظيٚ

صٛؼٔ ٖٚذث DLL

يدبػ

ٜظيٚ

ٜظيٚ

يدبػ يػششػد بث DLL

يدبػ

ٜظيٚ ٜظيٚ صٛؼٔ بث ي ٝٔب٘شث

ٜظيٚ

ٜظيٚ يػششػد بث

DLL

صبؼٔ شيغ

ٜظيٚ

ٜظيٚ

صٛؼٔ ٖٚذث DLL

صبؼٔ شيغ

ٜظيٚ

ٜظيٚ

يدبػ يػششػد بث DLL

ٜظيٚ

ٜظيٚ

ٜظيٚ

ٜظيٚ يػششػد بث

DLL

يشيٙٔا ربٕيظٙس فّشخٔ يبٞ زِبح سد ٝٔب٘شث ؾيبٔصآ

ٝژو ذژٞد يژٔ ٖبژىٔا بٕؿ ٝث ٝو زػا Device Security Manager ٖبٕٞ بي »ٜبٍشػد زيٙٔا شيذٔ« 2008 ٛيدٛشػا َاٚظيٚ يبٞ ساضثا صا يىي .ذيسٚآ زػد ٝث اس ٜذؿ يصبػ ٝيجؿ ُيبثٛٔ صٚذٙيٚ ٜبٍشػد هي يٚس َبؼف يشيٙٔا ربٕيظس ٜصبژػا بٕژؿ ٝژث ،ٖآ يّؼف يشيٙٔا ربٕيظٙس ٝو ذيٞد شييغس ُيبثٛٔ صٚذٙيٚ يىيضيف ٜبٍشػد هي يٚس اس يشيٙٔا ربٕيظٙس ذي٘اٛس ئ ي٘بٔص بٕؿ :ٝشى٘ .زژؼي٘ زژـٌصبث ُثبل زِبح ٗيا ،ذيٞد شييغس (Locked) دٚذؼٔ زِبح ٝث اس ٜبٍشػد هي يشيٙٔا ربٕيظٙس شٌا ٝو ذيٙو زلد .ذٞذث اس سبو ٗيا ي يژٔ يژشحاس ٝژث ٜبٍشژػد صبػ ٝيجؿ صا ٜدبفشػا بث .داد ذٞاٛخ ساذـٞ بٕؿ ٝث زِبح ٗيا سد ٜبٍشػد زيٙٔا شيذٔ ٝشجِا .ذيٙو ىبيشحا دسٛٔ ٗيا سد غد .ذييبٕ٘ ؾيبٔصآ اس يشيٙٔا يبٞ زِبح ئبٕس ذي٘اٛس يژشيٙٔا ٓيظٙس بي ذيٙو َبؼف ،زػا ٜذؿ فيشؼس ؾيد صا ٝو اس يشيٙٔا ٓيظٙس شٞ ذي٘اٛس ئ Device Security Manager ي ٝٔب٘شث صا ٜدبفشػا بث صبژػ ٝيجژؿ بي ُيبثٛٔ صٚذٙيٚ ٜبٍشػد يٚس ٜذؿ تل٘ يشيٙٔا يبٞ ٝيذييأس ئبٕس زػشٟف ذي٘اٛس ئ ٜٚلاػ ٝث .ذيٙو ٝٔب٘شث (import) دساٚ اس ذيذػ .ذيسٚآ زػد ٝث اس ٜبٍشػد

69

http://m0911.wordpress.com

http://m0911.wordpress.com Device Security Manager ي ٝٔب٘شث :35 ُىؿ :ذيٙيجث ذي٘اٛس ئ 2008

Device Security Manager ي ٝٔب٘شث :35 ُىؿ

:ذيٙيجث ذي٘اٛس ئ 2008 ٛيدٛشػا َاٚظيٚ ُخاد اس شيص َبظٔ .ذ٘ٛؿ فيشؼس XML يبٞ ٜذ٘ٚشد ُخاد ذ٘اٛس ئ بٞ ٜبٍشػد يشيٙٔا ربٕيظٙس

<wap-provisioningdoc /> <characteristic type="SecurityPolicy" /> <parm name="4102" value="1" /> <parm name="4122" value="0" /> <parm name="4123" value="0" /> </characteristic /> </wap-provisioningdoc />

فّشخٔ يشيٙٔا ربٕيظٙس سد يػششػد فّشخٔ حٌٛػ ؾيبٔصآ ئ ٜدبػ َبظٔ هي ٖاٛٙػ ٝث شيص ذو ٝؼٌل .ٓيٞد ئ ْبؼ٘ا اس ؾيبٔصآ ذٙچ ،ذيٙو َبٕػا اس فّشخٔ يشيٙٔا ربٕيظٙس سٌٛچ ذيشفشٌ دبي ٝو َبح DLL بي ٝٔب٘شث هي سد اس ذو ٝؼٌل ٗيا بٕؿ شٌا .ذٙو ئ ٜدبفشػا Win32 API ي ٜذؿ ذييأس غثبس هي صا ذو ٝؼٌل ٗيا .ذؿبث صبغآ ي ٌٝم٘ ذ٘اٛس ٝٔب٘شث دشوسبو زؼ٘اٛس ذيٞاٛخ زيبٟ٘ سد ذيٙو اشػا ٝيذييأس ٖٚذث يشح بي ،ذيشيٍث فّشخٔ يبٞ (certificate) ٝيذييأس ْاذو شٞ ياشث ٚ ذيٞد ساشل .ذيٙو ؾيبٔصآ يشيٙٔا فّشخٔ ربٕيظٙس سد اس

[DllImport("coredll.dll")] public extern static void PowerOffSystem(); private void btnInstructions_Click(object sender, EventArgs e)

{

PowerOffSystem();

}

70

http://m0911.wordpress.com

ٜذؿ ؽٛٔبخ ٖٛچ دٛؿ ئ ٝشؼث ٜبٍشػد صبػ ٝيجؿ ّٝكبفلاث ٝو ذيٙيث ئ ٖآ ياشػا بث ،ذؿبث ٜذؿ ذييأس يبٞ API ي٘اٛخاشف ٝث صبؼٔ ٝٔب٘شث شٌا

ي ٜذؿ زظفبحٔ يحاٛ٘ سد ذيٞاٛخث بٕؿ شٌا .دٛؿ ئ ٝشفشٌ ٜذيدب٘ API ٚ ذشفا يٕ٘ يلبفسا چيٞ ذؿبج٘ ي٘اٛخاشف ٗيا ٝث صبؼٔ ٝٔب٘شث شٌا ٚ زػا

.ذؿ ذيٞاٛخ ٝػاٛٔ (UnauthorizedAccessException) صبؼٔ شيغ يػششػد يبٌخ بث ذيؼيٛٙث ٜبٍشػد يششؼيػس بي يّيبف ٓشؼيػ

ٝٔب٘شث تل٘

َاٚظيٚ ُخاد صا بٞ ساضفا ْش٘ تل٘ ٝو زػا ٜدٛث ٗيا شث مشف ،ِٝبمٔ يبؼٙيا بس .دسازٌ ئ شطا ٓٞ بٞ ٝٔب٘شث تل٘ يٚس ٜبٍشػد يشيٙٔا ربٕيظس

َبح سد ٝو ئبٍٙٞ ٝشجِا ذك .دشيٌ ئ رسٛك Device Security Manager كيشً صا ضي٘ يشيٙٔا ربٕيظٙس ٚ ذ٘ٛؿ ئ تل٘ 2008 ٛيدٛشػا

ذيبث ُيِد ٗيٕٞ ٝث ٚ دشو ذيٞاٛخ شـشٙٔ اس ٖب٘ ٝٔب٘شث بٕؿ زيبٟ٘ سد ٗىيِ ،ذٙو ئ ٖبػآ يّيخ اس بٕؿ سبو ،ٖبىٔا ٗيا ذيشؼٞ يؼيٛ٘ ٝٔب٘شث

بي CAB ُيبف هي رسٛك ٝث بٕؿ ي ٝٔب٘شث يٙؼي ٗيا ٚ ذيؿبث ٝشؿاد (end users) ييبٟ٘ ٖاشثسبو ياشث ٝٔب٘شث تل٘ ي ٝٙئص سد يثٌّٛٔ ٝثشؼس

يػٛس ٚ ذٙو يذو ؽدٛخ ُيبثٛٔ صٚذٙيٚ ٜبٍشػد ُخاد ٝث اس ُيبف ذيبث شثسبو ،دٛؿ شـشٙٔ CAB ُيبف رسٛك ٝث ٖبس ٝٔب٘شث شٌا .ددشٌ شـشٙٔ MSI

ذيٞد ساشل #MSI ٖبٕٞ بي$ Microsoft Installer ُيبف هي ُخاد اس CAB ُيبف ذيٞاٛخث ٓٞ شٌا .ذيبٕ٘ اشػا ٚ صبث اس ٖآ سسّٛذؼوا ي ٝٔب٘شث

صٚذٙيٚ سد ActiveSync ي ٝٔب٘شث كيشً صا ٖبؿ ُيبثٛٔ صٚذٙيٚ ٜبٍشػد ٝو ي٘بٔص ٖبؿدٛخ حبشىػد شسٛيذٔبو صٚذٙيٚ كيشً صا ذٙ٘اٛس ئ ٖاشثسبو

.ذٙٙو تل٘ اس ٝٔب٘شث ،زػا ُلشٔ شسٛيذٔبو ٝث ٖٛػ بي بشؼيٚ صٚذٙيٚ سد Windows Mobile Device Center ي ٝٔب٘شث بي يد غىيا

ٝيذييأس فشك غلاٚ سد .دٛؿ تل٘ ٖآ يٚس بؤا ٖٚذث CAB ُيبف ٝو ذٞذ٘ ٜصبػا زػا ٗىٕٔ ذؿبث ٝ٘اشيٍشخػ ٜبٍشػد يشيٙٔا ربٕيظٙس شٌا

ٝث ي٘بٔشف يخ ي ٝٔب٘شث هي 6 ُيبثٛٔ صٚذٙيٚ ي ٝؼػٛس ساضثا .ذيشيٍث ٝيذييأس يبؤا ٓٞ CAB ُيبف ياشث ذيبث ٝىّث زؼي٘ يفبو ٖبس ٝٔب٘شث ٗشؿاد

يخ صا زػا ششٟث سبو يشحاس ياشث .ذٙو ئ ٜدبفشػا 2008 ٛيدٛشػا َاٚظيٚ ي signtool.exe صا ٝو دساد سبو ٗيا ياشث cabsigntool.exe ْب٘

ي ٜٛح٘ شيص َبظٔ .ذيٙو يٞد ساذمٔ ٝٔب٘شث ٗيا ٗشفبي ياشث اس path يٌيحٔ شيغشٔ ذيؿبج٘ سٛجؼٔ ٝو ذيٙو ٜدبفشػا 2008 ٛيدٛشػا َاٚظيٚ ٖبٔشف

:ذٞد ئ ٖبـ٘ بٕؿ ٝث ٖبٔشف يخ كيشً صا اس 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"

ُخاد ٝو - يـيبٔصآ ي ٝيذييأس هي بث ،ٖآ ُخاد يياشػا يبٞ ٝٔب٘شث ْبٕس ٚ DVDsMobileCab.cab ْب٘ بث CAB ُيبف َبظٔ ٗيا سد

:ذيٙو اذيد ذي٘اٛس ئ ٓٞ شيؼٔ ٗيا سد اس cabsigntool.exe ي ٝٔب٘شث .ذ٘ٛؿ ئ بؤا زػا Windows Mobile 6 SDK

\program files\Windows Mobile 6 SDK\Tools\Security cabsigntool.exe صا ٜدبفشػا غلٛٔ سبث شٞ ذؿبث ساشل شٌا ًٙف ٚ ً٘د ٕٝٞ ٗيا بث ٝو ذيٛؿ ئ ٝػٛشٔ لابث ي٘بٔشف يخ يبٞ سٛشػد ٝث ٜبٍ٘ هي بث

شٞ ٚ ذيٞد ساشل اس بٞ سٛشػد ٗيا bat يا ٝشػد ُيبف هي سد ٝو زػا ٖآ ششٟث غد .زؼٞ يسٛشػد يبٌخ صٚشث َبٕشحا ذييبٕ٘ دساٚ اس بٞ ششٔاسبد ٗيا

.ذيٙو ي٘اٛخاشف اس ٖآ سبث

71

http://m0911.wordpress.com

بٞ ٝٔب٘شث ي٘بػس صٚس ٝث ٝث ٖبىٔا ٝو ClickOnce ؽٚس ٝث تل٘ ٖبىٔا ُيبثٛٔ صٚذٙيٚ سد ذ٘ٛؿ ئ ذيِٛس 2008 ٛيدٛشػا َاٚظيٚ سد ٝو حبشىػد يبٞ ٝٔب٘شث فلاخ شث اس ٗيا ٝثبـٔ دشوسبو ذي٘اٛس ئ بٕؿ ٗىيِ .دساذ٘ دٛػٚ ذٞد ئ ذيذػ ي ٝخؼ٘ سد ٖآ شييغس رسٛك سد اس ٜذؿ تل٘ ُجل صا يبٞ ُيبف ي٘بػس صٚس .ذيد ذيٞاٛخ ُيبثٛٔ صٚذٙيٚ يبٞ ٝٔب٘شث ي٘بػس صٚس ٝث ياشث ClickOnce ٝثبـٔ يؿٚس ِٝبمٔ ٗيا سد .ذييبٕ٘ دبؼيا غيٚشػ ةٚ ي ّٝيػٚ ٝث لاظٔ .ذيٙو صٚس ٝث اس ٖبس يبٞ ٝٔب٘شث ؽٚس ٗيا ٝث ذي٘اٛشث ٖبسدٛخ ٝو داد ذٞاٛخ يفبو ربػلاًا بٕؿ ٝث ٚ دٛث ذٞاٛخ صبغآ ي ٌٝم٘ هي بفشك َبظٔ ٗيا ؽسبٍ٘ بث ٚ ْلاػا اس ٝٔب٘شث ي ٜذؿ شـشٙٔ ؽسبٍ٘ ٗيشخآ ٝو ذيٙو ٜدبفشػا يؼيٚشػ ةٚ صا ذي٘اٛس ئ ٖبس يبٞ ٝٔب٘شث سبودٛخ ي٘بػس صٚس ٝث ياشث ٜذٙٙو تل٘ ي ٝٔب٘شث هي ذيبث ذيٙو ي٘بػس صٚس ٝث اس اشػا َبح سد ي ٝٔب٘شث هي ذيبث بٕؿ ٝو بػ ٖآ صا .ذٙو ٝؼيبمٔ يّؼف ي ٜدبفشػا دسٛٔ ي ٝٔب٘شث .ذيؼيٛٙث -زػا ٜدشو تل٘ ٜبٍشػد يٚس اس ٖبس ٝٔب٘شث اذشثا صا ٝو يا ٜذٙٙو تل٘ ذٙ٘بٕٞ - اضؼٔ ي

ذيذػ ي ٝٔب٘شث هي تل٘ شثسبو ،ٝٔب٘شث دّٛ٘اد ياشث .ذيٙو تل٘ ASP.NET