ليست پيوندي
همانطور که گفته شد ليست پيوندي مجموعه اي از يکسري داده است که اين داده ها از نوع اشيا خودارجاعي هستند . ( هر شي خودارجاعي داراي يک متغير نوع variant براي نگهدار مقدار و يک اشاره گر به شي بعدي است ) . هر عضو ليست پيوندي را يک گره گويند . هر ليست پيوندي از طريق يک اشاره گر به اولين گره قابل دسترسي است . گره هاي بعدي از طريق قسمت لينک موجود در هر گره قابل دسترس هستند . همچنين لينک آخرين گره با Nothing تنظيم مي شود که انتهاي ليست را نشان مي دهد .
مزيت اصلي ليست هاي پيوندي نسبت به آرايه اينست که تعداد عناصر ليست پيوندي قابل تغيير است . بعبارت ديگر ليست هاي پيوندي بصورت ديناميک هستند و طول آنها قابل تغيير است اما سايز آرايه ثابت است . ( البته ويژوال بيسطک از آرايه هاي با سايز متغير نيز پشتيباني مي کند اما اين عمل تغيير سايز اتوماتيک نيست .)
عمل درج در ليست پيوندي ساده است و تنها بايستي دو اشاره گر تغيير يابد .
ليست هاي پيوندي را مي توان به سادگي با قراردادن هر عضو جديد در محل صحيح بصورت sortشده نگهداري کرد .
اعضاي ليست پيوندي در حافظه بصورت پيوسته ذخيره نمي شوند بنابراين نمي توان فوراً به هر عضو ليست دسترسي داشت ( بر خلاف آرايه ) .
براي ايجاد ليست پيوندي در ويژوال بيسيک نياز به سه کلاس است :

»» ادامـه آمـوزش ««
+
نوشته شده در سه شنبه 31 اردیبهشت1387ساعت 20:21  توسط حامد سیستم
|
مقدمه :
ساختارهاي داده اي از نظر تعداد اعضا به دو دسته استاتيک و ديناميک تقسيم مي شوند . ساختارهاي استاتيک مثل آرايه هاي يک بعدي و آرايه هاي دو بعدي ، تعداد اعضاي آنها در زمان طراحي برنامه مشخص مي شود و در طول اجراي برنامه ثابت است اما تعداد اعضاي ساختارهاي داده اي ديناميک در طول اجراي برنامه تغيير مي کند . ليست پيوندي ( LinkList ) ، پشته ( Stack ) ، صف ( Queue ) و درختهاي باينري ( Tree Binary) ، نمونه هايي از ساختارهاي داده اي ديناميک هستند .
ليست پيوندي شامل مجموعه اي از عناصر داده اي است که اضافه و حذف اعضا در هر جاي ليست ممکن است .
پشته يک ساختار داده اي مهم در کامپايلرها و سيستم هاي عامل است که عمل اضافه و حذف عناصر از ابتداي آن انجام مي شود .
صف يک ساختار داده اي است که عمل اضافه کردن از انتها و عمل حذف کردن از ابتداي آن انجام مي شود .
درختهاي دودويي براي جستجوي بسيار سريع ، ذخيره سازي داده ها و کامپايل عبارات استفاده مي شوند .
نوع داده Variant :
نوع داده variant براي متغيرهايي بکار مي رود که بطور صريح نوع آنها تعريف نشده است مثال :
Dim value As Variant
اين نوع داده مي تواند هر نوع داده اي را در خود ذخيره کند . همچنين براي ايجاد ساختارهاي داده اي مثل ليست هاي پيوندي ، صف ، پشته و درخت مناسب است .
نوع داده موجود در variant مي توان توسط توابع VarType و TypeName تعيين کرد . تابع VarType يک مقدار صحيح برمي گرداند که نشان دهنده نوع ذخيره شده در variant است .
مثال :
Dim value as Variant
value=”Hello”x
در اينصورت مقدار بازگشتي ( VarType( value برابر 4 خواهد بود .
تابع TypeName يک رشته برمي گرداند که نشان دهنده نام نوع داده ذخيره شده در variant است .
اخذ حافظه بطور ديناميک Dynamic Memory Allocation :
براي ايجاد و نگهداري ساختارهاي داده اي ديناميک بايستي در هنگام اجراي برنامه بتوان فضاي بيشتري براي نگهداري داده هاي جديد بدست آورد . با استفاده از کلمه کليدي New مي توان در ويژوال بيسيک حاقظه ديناميک گرفت :
Set NewNode=New ListNode
که ListNode يک شي از ساختار داده اي مورد نظر ماست .
کلاسهاي خود ارجاعي :
کلاس خودارجاعي نوعي کلاس است که داراي يک اشاره گر ( Pointer ) به يک شي از همان نوع کلاس باشد . براي مثال اگر کلاس ما به اسم ClistNode باشد و متغير زير را در آن تعريف کنيم ، اين کلاس يک کلاس خود ارجاعي است :
Private mNextNode as ClistNode
از mNextNode براي لينک دادن اعضاي يک ساختار داده اي ديناميک بهم استفاده مي شود ( بعبارت ديگر گره زدن يک شي از کلاس ClistNode به يک شي ديگر از همان کلاس ) . شي هاي خودارجاعي مي توانند به همديگر لينک شوند و ساختارهاي داده اي مثل ليست پيوندي ، صف ، پشته و درخت را ايجاد کنند .
شکل زير دو شي خود ارجاعي را نشان مي دهد که بصورت يک ليست بهم لينک شده اند . عبارت NULL بدين معنا است که شي خودارجاعي به شي ديگري اشاره نمي کند ( Nothing ) و نشان دهنده انتهاي ساختار داده است .
+
نوشته شده در دوشنبه 30 اردیبهشت1387ساعت 20:20  توسط حامد سیستم
|
امروز قصد دارم در مورد API هاي ويندوز و چگونگي استفاده از آنها در ويژوال بيسيک بطور خلاصه توضيح دهم و همچنين دو مثال پراستفاده را نيز در اين زمينه بيان کنم که عبارتند از چگونگي پخش فايلهاي Wav و ساخت يک تايمر با دقت بالا :
»» ادامـه آمـوزش ««
+
نوشته شده در پنجشنبه 26 اردیبهشت1387ساعت 16:46  توسط حامد سیستم
|
موضوع : مروري بر مباحث قبلي - ساخت يک موتور گرافيکي سه بعدي
قبل از شروع مباحث جديد برنامه نويسي Direct3D ، با هم مروري بر مباحث قبلي خواهيم داشت . ( مباحث قبلي در آرشيو موجود مي باشند ) .
در اين درس با استفاده از مطالب قبلي يک Engine سه بعدي ساخته و از امکانات آن در يک برنامه نمونه استفاده خواهيم کرد .
اين engine داراي دو کلاس است :
1 – کلاس MainD3D
2 – کلاس D3Dobject
در کلاس MainD3D متغيرها و توابع لازم براي ساخت يک device سه بعدي ، تنظيمات ماتريسي ، تابع رندر و غيره موجود مي باشد .
متغيرهاي عمومي اين کلاس عبارتند از :
»» ادامـه آمـوزش ««
+
نوشته شده در چهارشنبه 25 اردیبهشت1387ساعت 3:13  توسط حامد سیستم
|
اتصالات FTP
پروتکل FTP علاوه بر نقل و انتقال فايل بين دو کامپيوتر ، مي تواند نوعي مديريت فايل ( مثل حذف فايل يا ايجاد پوشه ) روي کامپيوتر مقصد را انجام دهد . FTP در انتقال فايل بسيار قويتر از HTTP است ولي به مراتب پيچيده تر از HTTP مي باشد اما کنترل IT اين پيچيدگيها را از ديد برنامه نويس مخفي کرده است .
براي کار با سرورهاي FTP بايد به آنها Login نمود . نوع خاصي از Login به نام Anonymous Login ( ورود ناشناس ) وجود دارد که با آن کاربران مي توانند بدون محدوديت از سايت FTP استفاده کنند . توجه کنيد که حتي براي ورود ناشناس هم نياز به نام کاربر و کلمه عبور است . براي ارسال نام کاربر و کلمه عبور از خواص username و password کنترل IT استفاده مي شود . اگر خاصيت username خالي باشد ( blank ) ، کنترل IT بطور خودکار از anonymous استفاده مي کند و آدرس email کاربر بعنوان passowrd استفاده مي شود .
استفاده از متد OpenURL : متد OpenURL ساده ترين راه انجام عمليات FTP است . دستور زير از يک سايت FTP ليست مي گيرد :
Text.text=Inet.OpenURL("ftp://ftp.microsoft.com",icString)x
براي خواندن فايل از يک سايت FTP بايد در حالت باينري کار کرد :
b()=Inet.OpenURL("ftp://ftp.microsft.com/test.zip",icByteArray)x
استفاده از متد Execute : متد Execute قابليتهاي بيشتري دارد و اجرای آن در FTP نياز به دو پارامتر دارد :
Inet.Execute(url,operation)x
که url آدرس سايت FTP بهمراه نام و مسير فايل و پارامتر operation يک فرمان FTP است . کنترل IT با داده هاي خوانده شده FTP به دو طريق رفتار مي کند :
برخي از داده ها مثل پاسخ فرمان DIR در بافر کنترل IT قرار مي گيرد و بايد آنها را با متد GetChunk خواند .
برخي ديگر از داده ها مثل فايل خوانده شده با فرمان GET مستقيماً روي ديسک نوشته مي شوند و ديگر نيازي به استفاده از متد GetChunk نيست .
فرامين FTP بسيار قوي هستند و حتي به شما اين امکان را مي دهند که فايلها را به روي کامپيوتر مقصد کپي کنيد ، به پوشه هاي کامپيوتر مقصد برويد ، فايلها را حذف کنيد و يا تغيير نام دهيد . البته بايد توجه داشت که فرامين قابل اجرا به نوع ورود به سيستم FTP بستگي دارد . اگر با کاربر anonymous به يک سايت FTP وارد شويد تنها مي تواند فايلها را ببيند و آنها را download کنيد .
مهمترين فرامين FTP عبارتند از :
CD path : به دايرکتوري path مي رويد .
CDUP : به يک دايرکتوري بالاتر مي رود .
CLOSE : بستن اتصال FTP
DELETE file1 : حذف فايل file1
DIR file1 : جستجوي فايل file1 روي دايرکتوري جاري
MKDIR path : ايجاد يک دايرکتوري با نام path
PUT file1 file2 : فايل file1 را از کامپيوتر مبدا روي فايل file2 در کامپيوتر مقصد کپي مي کند .
PWD : نام دايرکتوري جاري در کامپيوتر مقصد را برمي گرداند .
QUIT : قطع اتصال FTP
GET file1 file2 : فايل file1 را از کامپيوتر مقصد روي فايل file2 در کامپيوتر مبدا کپي مي کند .
RENAME file1 file2 : تغيير نام فايل file1 به file2
RMDIR path : حذف دايرکتوري path در کامپيوتر مقصد
SIZE file1 : بدست آوردن تعداد بايتهاي فايل يا دايرکتوري file1










چاکر بازدید کنندگان گرامی : ترانه جان و امیر خفن










+
نوشته شده در سه شنبه 24 اردیبهشت1387ساعت 13:39  توسط حامد سیستم
|
مقدمه : کنترل Internet Transfer نسبت به کنترل WebBrowser که در روزهاي قبلي معرفي شد در سطح پايينتري قرار دارد . اين کنترل با استفاده از دو پروتکل HTTP و FTP مي تواند داده ها را منتقل کند . اين کنترل زمانيکه از پروتکل HTTP استفاده مي کند با همان روش کنترل WebBrowser به سرويس دهنده صفحات وب متصل مي شود اما بجاي آنکه صفحه وب را نمايش دهد متن Html صفحه را بازيابي مي کند . همچنين زمانيکه اين کنترل از پروتکل FTP استفاده مي کند قادرست فايلها را بين کامپيوترهاي روي شبکه منتقل سازد .
اتصالات HTTP : همانطور که مي دانيد ، پروتکل HTTP استاندارد وب مي باشد . صفحات وب با زبان Html نوشته مي شوند و انتقال آنها از server به client توسط پروتکل HTTP صورت مي گيرد .
متد OpenURL : ساده ترين راه استفاده از کنترل IT متد OpenURL است . شکل کلي اين متد بصورت زير است :

»» ادامـه آمـوزش ««
+
نوشته شده در یکشنبه 22 اردیبهشت1387ساعت 20:43  توسط حامد سیستم
|
هدف از اين مبحث آموزشي ، آشنايي با تابع BitBlt و برخي ديگر از توابع کتابخانه Win32 GDI براي انجام برخي عمليات گرافيکي مثل double buffering و خواندن sprite از فايل است .
نکته : sprite به کاراکترهاي متحرکي گفته مي شود که در بازيها وجود دارد .
اولين چيزي که به آن نياز داريد ايجاد يک فرم است . خاصيت ScaleMode آنرا برابر 3-Pixel قرار دهيد . پيشنهاد مي کنم که هميشه در هنگام استفاده از فرم بهمراه API از pixel براي scalemode استفاده کنيد .
سپس سايز فرم را به اندازه اي افزايش دهيد تا ScaleWidth برابر 320 و ScaleHeight برابر 256 شود . توجه کنيد که خاصيت HasDC فرم را True قرار دهيد . همچنين از خاصيت AutoRedraw براي فرم استفاده نمي کنيم زيرا مي خواهيم از Double Buffering استفاده کنيم که بسيار سريعتر و کارامدتر مي باشد .
مرحله بعدي declare کردن API هايي است که به آنها نياز داريم :

»» ادامـه آمـوزش ««
+
نوشته شده در جمعه 20 اردیبهشت1387ساعت 10:22  توسط حامد سیستم
|
به نام خداوند علم و دانش
اللهم صلٌ علی محمٌد و آل محمٌد و عجٌل فرجهم
صفحه کلید و صفحه تصویر
مقدمه ای بر توابع داخلی
توابع نوعی روال هستند. تفاوت بین تابع و سابروتین آن است که تابع پس از اتمام کار خود(یعنی اجرای کد بدنه تابع)یکم مقدار را به قسمت دیگری از برنامه می فرستند. در فصل بعد یاد می گیرید که چگونه توابع را بنویسید و نیز با طرز کار آنها با تمام جزئیات آشنا می شوید.
آشنایی با توابع داخلی:
»» ادامـه آمـوزش ««
+
نوشته شده در پنجشنبه 19 اردیبهشت1387ساعت 8:25  توسط حامد سیستم
|
ادامه قسمت سوم
اگر بنا به دلایلی حروفی غیز ازa|b|c|d|f درون متن ظاهر شود دستور case else اجرا شود و با تنظیم مقدار برچسب . خطایی را اعلام می کند.
بقیر از دستورات select case دستوراتی دیگر در مورد همین مانند محدودها و.... می باشد.
حلقه do
ویژوال بیسیک یک دستور چند خطی به نام حلقه do دارد. در اینجا نیز مانند دستور if دستورات حلقه do با فرمت های مختلفی می آیند.
Do while condition
Block of one or more visual basic statements
Loop
Do
Block of one or more visual basic statements
Loop while condition
Block of one or more visual basic statements
Loop
Do
Block of one or more visual basic statements
Loop while condition
منظور از condition در حلقه do یک عبارت کنترل یا مقدار بولی است که درست یا غلط می باشد. فرمتی را که انتخاب می کنید اصولا به سلیقه شما بستگی دارد. اما تفاوت هایی نیز بین آنها وجود دارد.
شما می توانید از هر شکل حلقه do استفاده کنید.
Do while intctr <=10
Lblout.caption=intctr
Intctr=intctr +1
Loop
این قسمت ادامه دارد
این قسمت ادامه دارد برای آموزش های دیگر.................
یعنی کسی این مطالبو نمیخونه که نظری نمیدین ؟
+
نوشته شده در چهارشنبه 18 اردیبهشت1387ساعت 20:31  توسط حامد سیستم
|
ادامه قسمت سوم
در اینجا نیز مانند کلیه دستورهای چند خطی برای واضح شدن بدنه دستور بصورت تو رفته می باشد.
اما به خاطر داشته باشید. که این شیوه ضروری نیست. اولین فرمت if که قبلا دیدید کدی را نشان می داد که اگر شرط درست باشد این کد اجرا می شد.
در این فرمت اگر شرط غلط باشد کدی برای اجرا وجود نخواهد داشت. Else بدین منظور به کار می رود.
دستور if…elseاز آنکه if … else خاتمه یافت اجرای بقیه برنامه ادامه یافت پیدا می کند.
دستورات if تو در تو
If text.text="majid" then
If text.text="majid2" then
Text2.text="majid"
Else
Text2.text="majid3"
End if
End if
گاهی اوقات بر اساس داده های مختلف ممکن است بخواهد یک رویداد یا نوع از روال ها را زودتر از موعد مقرر خاتمه دهید. برای انجام این کار می توانید دستور if را با دستور exit ترکیب کنید.
Exit sub|function|do|for
استفاده از دستور exit sub برای ختم زودرس یک روال
دستورات if…elseتودرتو
چنمانچه بخواهیم یک دستور if…else را درون یک دستور دیگر if……else قرار دهید باید برای شروع دستور if تو در تو از elseif استفاده کنید.
Elseif کمک می کند تا دو یا چند دستور if….else تو در تو با هم ترکیب شوند.
If text1.text="majid" then
Text2.text="majidddddddd"
Elseif text12.text="majidddddddddd"
Text3.text="ddd"
End if
همانطور که دیدید ما در قسمت if می گفتیم اگر وelse را در بین if می گزاشتیم که اگر خواستیم بگویید ویا
حال دستور elseif می گوید ویا اگر که هم ویا است و هم اگر یعنی دستور ویا دستو استفاده می شود.
انتخاب از طریق دستور select case
مناسب ترین موقعیت برای استفاده ار دستور select case هنگام انتخاب با وجود چند شرط است . مسلما اگر بیشتر از سه یا چهار دستور if…else تودرتو داشته باشید نتیجه یک برنامه پیچیده خواهد بود.بعبارت دیگر وارد یک منطق در هم و برهم بصورت زیر می شوید : اگر این درست باشد. بعد اگر این درست باشد.
بعد اگر این هم درست باشد آنگاه کاری را انجام بده در غیر این صورت ... فرمت select case بصورت زیر است.
Select case expression
Case expressionmatch
Block of one or more visual basic statements
[ case expressionmatch1
Block of one or more visual basic statements]
[ case expressionmatch2
Block of one or more visual basic statements]
[ case expressionmatch3
Block of one or more visual basic statements]
End select
Select caseیک مورد را از میان چند مورد انتخاب می کند. تعداد شرایطی که امتحان می شوند به نیاز شما بستگی دارد. این شرایط بصورت[case expressionmatch#...] نشان داده می شوند. فرض کنید که هیچکدام از این شرایط بر قرار نباشند.علیرغم فرمت پیچیده استفاده از دستور select case ساده است. به مثال زیر توجه کنید.
Select case txtgrade.text
Case "a"
Lblannounce.caption="ma"
Case "b"
Lblannounce.caption="maa"
Case "c"
Lblannounce.caption="maj"
Case "d"
Lblannounce.caption="maji"
Case "f"
Lblannounce.caption="majid"
Case else
Lblannounce.caption="majid rahimy"
End select
نظرم اگه داشتی بده
+
نوشته شده در سه شنبه 17 اردیبهشت1387ساعت 23:9  توسط حامد سیستم
|
قسمت سوم :
کنترل برنامه ها
عملگر های شرطی
مثالا می خواهید برنامه ای برایحساب پرداخت ها بنویسیم.این مقدار طلب هر فروشنده را که با آن معادله دارید محاسبه می کند و چک مربوط را چاپ می نماییم.حال اگر با یکی از فروشندگان مبادله نداشته باشد چه رخ می دهد.
می خواهیم یک چک به مبلغ صفر دلار چاپ کنیم؟؟؟ مطمئنا پاسخ منفی است. تا اینجا همه کد های که درون روال دیده ایددستور به دستور اجرا می شوند. اما به کمک عملگرهای شرطی و دستور های مر بوط می توانید. برنامه ای بنویسید. که اگر لازم بود ترتیب اجرای دستورات تغییر نکند. بنابراین برنامه شما می تواند فقط چکهایی را چاپ کند که به فروشندگان آنها مبلغیبدهکار هستند.
ویژال بیسیک از 6 عملگرها شرطی پشتیبانی می کند.
عملگرها:=|<|>|=<|=>|<>
توضیح:مساوی|بزرگتر از|کوچکتر از|بزرگتر یا مساوی|کوچکتر یا مساوی|نا مساوی
مثال:2=7|3<6|11>5|23=<23|21=>4|3<>3
نتیجه:غلط|درست|درست|درست|در� �ت|غلط
داده های شرطی
همیشه دو مقدار را با هم مقایسه کنید که از یک نوع داده باشند. مثلا می توانید دو عدد از یک نوع را با هم مقایسه کنید تا ببینید کدام بزرگتر است. همچنین می توانید رشته های را با هم و انواع boolean را نیز با هم دیگه مقایسه کنید.
اما هیچ وقت سعی نکنید یک رشته را با یک عدد مقایسه کنید چون نتیجه معمولا اشتباه در می آید.
دستور if
یک از متد اول ترین فرمان های زبان ویژال بیسیک فرمان if است . فرمان if قسمتی از یک دستور چند خطی به نام دستور if می باشد که فرمت آن به شکل زیر می باشد:
If conditional then
Block of one or more visual basic statements
End if
Conditional عبارتی است که نتیجه آن true یا false می باشد. در نتیجه conditional می تواند یک متغیر بولی بشد.می تواند یک کنترل معادل با مقدار true یا false باشد یا حتی ممکن است یک عبارت طولانی تر باشد که شامل عملگرهای شرطی و امتحان یک یا چند عملگر منطقی است.
وقتی که ما از دستور if استفاده می کنید دستور اگر می باشد مثالا می گوییم اگر فلان چیز را زد یا ...
فلا چیز بعدی اجرا یا ... اعمال شود این دستور یکی از دستور های است که در اکثر زبان های دیگر کا می کند. و اگر از این دستور در ویبی نخواهید استفاده کنیم یه جای کار می لنگه.
بدنه یک دستور if باید بصورت تو رفته باشد تا بتواند با یک نگاه نقاط شروع و خاتمه این دستور را تشخیص دهید . کلیه دستورات if چند خطی دارای مجموعه متناظری از دستورات end if در جایی از برنامه می باشند . دستور end if همیشه با آخرین دستور if مرتبط است بدون توجه به اینکه چقدر تو رفته باشد.
مقایسه داده ها به وکمک if
If (cursales > cursalesgoal) then
Cursalarybonus=100.00
Lblsalesnote.caption="maji"
Lblsalesnote.backcolor=red
Lblsalesnote.fontbold=true
End if
تکمیل دستور if با لغت کلیدی else
در قسمت های بالا در مورد شکل دستور ifآشنا شدید. اما برنامه نویسان غالب اوقات از شکل توسعه یافته آن استفاده می کنند.
که فرمت زیر را دارد.
If conditional then
Block of one or more visual basic statements
Else
Block of one or more visual basic statements
End if

این داستان ادامه دارد ...
+
نوشته شده در دوشنبه 16 اردیبهشت1387ساعت 23:54  توسط حامد سیستم
|
رجيستري چيست ؟
سيستم عامل ويندوز تنظيمات سخت افزاري و نرم افزاري خود را بطور مرکزي در يک بانک اطلاعاتي با ساختار سلسله مراتبي ذخيره مي کند که رجيستري نام دارد . رجيستري جايگزيني براي بسياري از فايلهاي پيکربندي INI ، SYS و COM است که در نسخه هاي اوليه ويندوز موجود بود . رجيستري ، سيستم عامل را با مهيا کردن اطلاعات موردنيز براي اجراي برنامه ها و load شدن component ها ، کنترل مي کند .
رجيستري شامل انواع مختلفي از اطلاعات مي باشد مثل :
- اطلاعات سخت افزارهاي نصب شده روي سيستم
- اطلاعات درايورهاي نصب شده روي سيستم
- اطلاعات برنامه هاي نصب شده روي سيستم
- اطلاعات پروتکلهاي شبکه اي مورد استفاده در سيستم
ساختار رجيستري شامل چندين مجموعه رکورد است که داده هاي اين رکوردها توسط بسياري از برنامه ها و اجزاي سيستم عامل خوانده و يا نوشته مي شود .
اجزاي رجيستري
اجزاي تشکيل دهنده رجيستري عبارتند از :
1 – subtree : Subtree ها همانند folder هاي موجود در ريشه يک درايو هارد هستند . رجستری ويندوز داراي پنج subtree مي باشد :
- HKEY_LOCAL_MACHINE : شامل تمام داده هاي پيکربندي براي کامپيوتر مي باشد و شامل 5 key است :Hardware ، SAM ، Security ، Software و System
- HKEY_USERS : شامل داده هاي مربوط به تنظيمات سيستم عامل براي هر user است مثل تنظيمات desktop و محيط ويندوز
- HKEY_CURRENT_USER : شامل داده هاي کاربر فعلي سيستم
- HKEY_CLASSES_ROOT : شامل اطلاعات پيکربندي نرم افزار است مثل داده هاي OLE و داده هاي کلاسهاي متناظر با فايل
- HKEY_CURRENT_CONFIG : شامل اطلاعات مورد نياز براي تنظيمات داريورهاي سخت افزاري و غيره
2 – Key : key ها همانند folder ها و subfolder هاي روي هارد هستند . هر key متناظر با object هاي نرم افزاري يا سخت افزاري مي باشد . subkey ها key هايي هستند که درون يکسري key قراردارند .
3 – Entry : هر key داراي يک يا چند entry است . هر entry داراي سه بخش مي باشد :
- نام Name
- نوع داده اي Data Type : مقدار هر entry يکي از انواع داده هاي زير است :
REG_DWORD ، REG_SZ ، REG_EXPAND_SZ ، REG_BINARY ،
REG_MULTI_SZ ، REG_FULL_RESOURCE_DESCRIPTOT
- مقدار Value
نکته 1 : براي مشاهده رجيستري و اعمال تغييرات در آن ( لطفاً اگر هيچ تجربه اي در تنظيم کردن رجيستري نداريد اطلاعات آنرا تغيير ندهيد ) ، مي توانيد از برنامه regedit.exe و يا regedt32.exe موجود در ويندوز استفاده کنيد . براي اينکار کافيست نام برنامه را در کادر Run وارد کنيد .
نکته 2 : در قسمت دوم اين مقاله کلاسي براي خواندن و نوشتن از/به رجيستري در ويژوال بيسيک خواهم نوشت و سپس نمونه اي از کاربردهاي نوشتن يکسري اطلاعات خاص در رجيستري را خواهيم ديد .
+
نوشته شده در دوشنبه 16 اردیبهشت1387ساعت 17:21  توسط حامد سیستم
|
مقدمه
PacketX مجموعه ای از کلاسهای اکتيو ايکس است که امکانات WinPcap را در ويژوال بيسيک و هر زبان برنامه نويسی ديگری که از تکنولوژی Microsoft ActiveX پشتيبانی کند مهيا می کند .
بطور خلاصه PacketX از WinPcap برای capture کردن و ----- کردن packet های شبکه استفاده می کند . علاوه بر capture استاندارد ، شما می توانيد از PacketX برای گردآوری اطلاعات ترافيک شبکه و ارسال raw packet استفاده کنيد .
دريافت PacketX
برای دريافت نسخه 1.3 اين کتابخانه به آدرس زير مراجعه کنيد :
PacketX 1.3 Download
قبل از استفاده از PacketX بايستی WinPcap 2.3 را که آدرس آن در بخش قبل گفته شد دريافت و نصب نمائيد .
استفاده از PacketX
با يک مثال ساده سعی می کنم روش استفاده از اين کتابخانه را به شما آموزش دهم .
پس از نصب PacketX وارد محيط ويژوال بيسيک شده و از منوی Project مورد Components را انتخاب کنيد .
سپس مورد PacketX Type Library را انتخاب کنيد تا به ToolBar اضافه شود .
اين ActiveX را در فرمتان قرار دهيد و سپس در قسمت properties آن روی Custom کليک نموده و نوع آداپتور را مشخص نمائيد .
پس از انتخاب آداپتور با کليک روی دکمه Edit می توانيد اطلاعاتی از قبيل مد کاری و ساير بافر و نوع فيلترينگ را مشخص نمائيد .
نام اين شی را نيز PacketX1 می گذاريم .
در فرمتان دو دکمه به نامهای Start و Stop قرار دهيد . همچنين يک listBox با نام IPList در فرمتان قرار دهيد .
در کد مربوط به Form_load عبارت زير را بنويسيد :
PacketX1.Adapter.BPFilter = "port 80"x
عبارت فوق مشخص می کند که می خواهيم packet های پورت 80 را capture کنيم .
کد زير را برای event مربوط به کليک شدن دکمه Start بنويسيد :
PacketX1.start
کد زير را برای متد OnPacket مربوط به PacketX1 بنويسيد :
Private Sub PacketX1_OnPacket(ByVal pPacket As PACKETXLibCtl.IPktXPacket)x
IPList.AddItem (pPacket.DestIpAddress)x
End Sub
کد فوق آدرس IP مقصد packet ها را به يک ليست اضافه می کند . شما می توانيد اطلاعات ديگری از قبيل داده موجود در packet ، سايز داده ، آدرس مبدا ، تاريخ ارسال داده و غيره را استخراج کنيد .
کد زير را برای event مربوط به کليک شدن دکمه Stop بنويسيد :
PacketX1.stop
برای اينکه بتوانيد در يک مدت خاص وضعيت دريافت و ارسال packet را بدست آوريد بايد ابتدا توسط دستور زير مد آداپتور را در حالت Statistic قرار دهيد :
PacketX1.Adapter.Mode=PktXModeStatistics
PacketX1.Adapter.ReadTimeout=2000 '// 2 sec
سپس PacketX1 را start نموده و توسط متد OnStatistics اطلاعات مربوطه را استخراج کنيد .
اطلاعات بيشتر :
برای مشاهده اطلاعات کامل در مورد ساختار PacketX و ماژولهای آن به آدرس زير مراجعه کنيد :
PacketX Documentation
+
نوشته شده در یکشنبه 15 اردیبهشت1387ساعت 14:30  توسط حامد سیستم
|
مقدمه :
برای آشنايي با مبانی شبکه های TCP/IP به بحث مروری بر TCP/IP مراجعه کنيد .
معرفی :
کتابخانه WinPcap يک معماری برای استخراج Packet های TCP/IP و آناليز شبکه در محيطهای ۳۲ بيتی ويندوز می باشد . اين کتابخانه شامل سه بخش است :
۱ - يک ----- Packet در سطح هسته سيستم عامل ( Kernel )
۲ - يک کتابخانه dll سطح پايين ( low-level ) با نام packet.dll
۳ - يک کتابخانه مستقل از سيستم عامل و سطح بالا ( high-level ) با نام wpcap.dll
----- packet يک درايور دستگاه ( device driver ) است که به ويندوزهای ۹۵ ، ۹۸ ، ME ، NT و ۲۰۰۰ قابليت استخراج و capture کردن و نيز ارسال داده خام ( raw data ) از يک کارت شبکه را می دهد . همچنين اين امکان را دارد که packet های capture شده را در يک بافر ذخيره کند و يا آنها را ----- نمايد .
packet.dll يک API است که بمنظور دسترسی مستقيم به عملکرد درايور packet استفاده می شود . بنابراين packet.dll يک واسط برنامه نويسی مستقل از سیستم عامل های مايکروسافت را مهيا می کند .
Wpcap.dll مجموعه ای از ابزارهای سطح بالای اصلی برای capture را مهيا می کند که اين توابع با کتابخانه libpcap ( کتابخانه capture در سيستم عامل UNIX ) سازگار می باشند . اين توابع اجازه capture کردن packet ها را با روشی مستقل از سخت افزار شبکه و مستقل از سيستم عامل مهيا می کنند .
دريافت کتابخانه WinPcap :
نسخه WinPcap 2.2 :
برای دريافت برنامه auto-installer ( شامل درايور و DLL های مربوطه ) برای سيستم هایWindows 95/98/ME/NT/2000 به آدرس زير مراجعه کنيد :
WinPcap auto-installer (driver +DLLs)
برای دريافت بسته توسعه دهنده اين کتابخانه که شامل برنامه های نمونه ايجاد شده توسط packet capture driver و packet.dll و libpcap است ، به آدرس زير مراجعه کنيد :
Developer's pack
برای دريافت source code کتابخانه WinPcap به آدرس زير مراجعه کنيد :
WinPcap source code
+
نوشته شده در شنبه 14 اردیبهشت1387ساعت 17:28  توسط حامد سیستم
|
مقدمه :
کنترل WinSock نسبت به تمام کنترلهاي اينترنت در سطح پايينتري قرار دارد . اين کنترل امکان ايجاد سرويسهاي شبکه اي مبتني بر پروتکلهاي TCP و UDP را مهيا مي کند . بعبارت ديگر توسط اين کنترل مي توان برنامه هاي کاربردي Client/Server ( سرويس گيرنده / سرويس دهنده ) ايجاد و با استفاده از پروتکل TCP و يا UDP بين آنها ارتباط برقرار نمود .
با تنظيم خصوصيات و فراخواني متدهاي اين کنترل مي توانيد به راحتي به يک کامپيوتر راه دور متصل شويد و داده ها را در هر دو جهت جابجا نمائيد . نمونه کاربرهايي که مي توان با اين کنترل ايجاد نمود :
Client-server chat ، Mail client ، Mail server ، Proxy Server ، Network Game ، Port Scanner ، پياده سازي الگوريتم هاي موازي و …
مباني TCP :
پروتکل کنترل اينترنت ( Transfer Control Protocol ) اجازه مي دهد يک اتصال ( Connection ) را از طريق سوکت ( socket ) به يک کامپيوتر راه دور ( Remote Computer ) ساخته و استفاده کنيد . با استفاده از اين اتصال ، هر دو کامپيوتر مي توانند داده ها را بين خودشان انتقال دهند . برقراري ارتباط از طريق TCP همانند صحبت کردن با تلفن است که بايد حتماً اتصالي بين دو کامپيوتر صورت گيرد تا بتوانند با هم ارتباط برقرار کنند .
اگر يک برنامه Client مي سازيد بايستي بدانيد که نام يا آدرس IP کامپيوتر Server چيست ( Remote Host IP ) و همچنين از طريق چه پورتي مي توانيد به آن متصل شويد ( Remote Port ) . حال بايستي به آن پورت Connect کنيد .
همچنين اگر يک برنامه Server مي سازيد بايستي پورتي را که روي آن به درخواستها گوش مي دهيد مشخص کنيد ( LocalPort ) و سپس به پورت گوش دهيد ( Listen ) .
زمانيکه يک کامپيوتر Client تقاضاي يک اتصال را مي دهد Server اين درخواست را Accept مي کند .
زمانيکه يک اتصال ساخته مي شود ، هر دو کامپيوتر مي توانند داده را فرستاده و دريافت کنند .

»» ادامـه آمـوزش ««
+
نوشته شده در جمعه 13 اردیبهشت1387ساعت 19:58  توسط حامد سیستم
|
FTP
پروتکل FTP علاوه بر نقل و انتقال فايل بين دو کامپيوتر ، مي تواند نوعي مديريت فايل ( مثل حذف فايل يا ايجاد پوشه ) روي کامپيوتر مقصد را انجام دهد . FTP در انتقال فايل بسيار قويتر از HTTP است ولي به مراتب پيچيده تر از HTTP مي باشد اما کنترل IT اين پيچيدگيها را از ديد برنامه نويس مخفي کرده است .
براي کار با سرورهاي FTP بايد به آنها Login نمود . نوع خاصي از Login به نام Anonymous Login ( ورود ناشناس ) وجود دارد که با آن کاربران مي توانند بدون محدوديت از سايت FTP استفاده کنند . توجه کنيد که حتي براي ورود ناشناس هم نياز به نام کاربر و کلمه عبور است . براي ارسال نام کاربر و کلمه عبور از خواص username و password کنترل IT استفاده مي شود . اگر خاصيت username خالي باشد ( blank ) ، کنترل IT بطور خودکار از anonymous استفاده مي کند و آدرس email کاربر بعنوان passowrd استفاده مي شود .
استفاده از متد OpenURL : متد OpenURL ساده ترين راه انجام عمليات FTP است . دستور زير از يک سايت FTP ليست مي گيرد :
Text.text=Inet.OpenURL("ftp://ftp.microsoft.com",icString)x
براي خواندن فايل از يک سايت FTP بايد در حالت باينري کار کرد :
b()=Inet.OpenURL("ftp://ftp.microsft.com/test.zip",icByteArray)x
استفاده از متد Execute : متد Execute قابليتهاي بيشتري دارد و اجرای آن در FTP نياز به دو پارامتر دارد :
Inet.Execute(url,operation)x
که url آدرس سايت FTP بهمراه نام و مسير فايل و پارامتر operation يک فرمان FTP است . کنترل IT با داده هاي خوانده شده FTP به دو طريق رفتار مي کند :
برخي از داده ها مثل پاسخ فرمان DIR در بافر کنترل IT قرار مي گيرد و بايد آنها را با متد GetChunk خواند .
برخي ديگر از داده ها مثل فايل خوانده شده با فرمان GET مستقيماً روي ديسک نوشته مي شوند و ديگر نيازي به استفاده از متد GetChunk نيست .
فرامين FTP بسيار قوي هستند و حتي به شما اين امکان را مي دهند که فايلها را به روي کامپيوتر مقصد کپي کنيد ، به پوشه هاي کامپيوتر مقصد برويد ، فايلها را حذف کنيد و يا تغيير نام دهيد . البته بايد توجه داشت که فرامين قابل اجرا به نوع ورود به سيستم FTP بستگي دارد . اگر با کاربر anonymous به يک سايت FTP وارد شويد تنها مي تواند فايلها را ببيند و آنها را download کنيد .
مهمترين فرامين FTP عبارتند از :
CD path : به دايرکتوري path مي رويد .
CDUP : به يک دايرکتوري بالاتر مي رود .
CLOSE : بستن اتصال FTP
DELETE file1 : حذف فايل file1
DIR file1 : جستجوي فايل file1 روي دايرکتوري جاري
MKDIR path : ايجاد يک دايرکتوري با نام path
PUT file1 file2 : فايل file1 را از کامپيوتر مبدا روي فايل file2 در کامپيوتر مقصد کپي مي کند .
PWD : نام دايرکتوري جاري در کامپيوتر مقصد را برمي گرداند .
QUIT : قطع اتصال FTP
GET file1 file2 : فايل file1 را از کامپيوتر مقصد روي فايل file2 در کامپيوتر مبدا کپي مي کند .
RENAME file1 file2 : تغيير نام فايل file1 به file2
RMDIR path : حذف دايرکتوري path در کامپيوتر مقصد
SIZE file1 : بدست آوردن تعداد بايتهاي فايل يا دايرکتوري file1
+
نوشته شده در پنجشنبه 12 اردیبهشت1387ساعت 4:51  توسط حامد سیستم
|
مقدمه : کنترل Internet Transfer نسبت به کنترل WebBrowser که در روزهاي قبلي معرفي شد در سطح پايينتري قرار دارد . اين کنترل با استفاده از دو پروتکل HTTP و FTP مي تواند داده ها را منتقل کند . اين کنترل زمانيکه از پروتکل HTTP استفاده مي کند با همان روش کنترل WebBrowser به سرويس دهنده صفحات وب متصل مي شود اما بجاي آنکه صفحه وب را نمايش دهد متن Html صفحه را بازيابي مي کند . همچنين زمانيکه اين کنترل از پروتکل FTP استفاده مي کند قادرست فايلها را بين کامپيوترهاي روي شبکه منتقل سازد .
اتصالات HTTP : همانطور که مي دانيد ، پروتکل HTTP استاندارد وب مي باشد . صفحات وب با زبان Html نوشته مي شوند و انتقال آنها از server به client توسط پروتکل HTTP صورت مي گيرد .
متد OpenURL : ساده ترين راه استفاده از کنترل IT متد OpenURL است . شکل کلي اين متد بصورت زير است :

»» ادامـه آمـوزش ««
+
نوشته شده در دوشنبه 9 اردیبهشت1387ساعت 13:43  توسط حامد سیستم
|
ادامه قسمت دوم
انواع داده ها در ویژال بیسیک؟
قواعد اولیه:
وقتی می خواهیم با کد کا کنیم لازم است که چند نکته مقدماتی را بدانیم.مثلا اینکه کدها به فرم ها و کنترل های برنامه متصل می شوند. در ابتدا بخاطر داشته باشید. که از طریق پنجره project می توانید برنامه های خود را سازماندهی کنید و همه فایلهای مرتبط با برنامه را مشاهده نمایید با وجودی که روالها رویداد را درون پنجره code می نویسید اما اینها به فایل های خاص برای خودشان نیاز ندارند. بلکه همراه با کنترل های مربوط در یک جا قرار می گیرند.بعنوان مثال پروژههای که تا به اینجات کار کردیم فقط شامل یک فرم بود و آن فرم کنترلها و روال های رویداد مربوط به آن کنترل ها را حفظ می کند.
همانطوریکه خواهید دید یک فرم می تواند کدی را نگه دارد که لوزما کد روال رویداد نیست بلکه یک کد چند منظوره است.
بعضی پروژه ها انواع دیگری از کدها را حفظ می کنند.در فصل قبل یاد گرفتید که همه کد درون روال ها ظاهر می شود و ویژال بیسیک از سابروتین و تابع پشتیبانی می کند.روالهای رویداد در گروه سابروتین قرار می گیرند اما در طول کتاب با نحوه نوشتن توابع نیز آشنا می شوید.چنانچه یک روال رویداد مربوط یک کنترل خاص نباشد می توانید در یک مدول کد جدا گانه ظاهر شود پنجره project فهرست مدولها را هم نشان می دهند.
پنجره project properties را باز کرده از داخل منو project
Project type= این قسمت مخصوص انتخاب نوع form می باشد.form activex……
Startup object= این قسمن مشخص می کنید که در موقع اجراع برنامه کدام یک از فرم های شما اجرا شود.اگر که یک عدد فورم داشته باشید که همان یک عدد فورم ظاهر می شود ولی اگر تعداد فرم های شما از 2 عدد بیشتر باشد امکان انتخاب یکی ز این فرم ها امکان پذیر است.
پنجره کد نویسی دارای چندین قسمت است.
قسمت اعلان
روالها عمومی
شروع رواهای یک رویداد.
داده ها در ویژوال بیسیک:
برای انجام محاسبات در ویژال بیسیک لازم است چند نوع داده را پردازش کنید . مثلا با نام ها نشانی ها مقادیر پولی اعداد بزرگ و کوچک و داده های منطقی کار کنید.داده های منطقی می توانند درست یا غلط باشند. ویژال بیسیک از بسیاری از انواع داده ها پشتیبانی می کند لذا همه نیازهای برنامه نویسی را می تواند بپوشاند.
قبل از اینکه با یک داده کار کنید لازم است به ویژوال بیسیک اعلام کنید که نوع این داده چیست .
داه های عددی
بطور کلی همه داده های عددی در دو گروه قرار می گیرند:
اعداد صحیحintegers=اعداد کامل بدون ممیز اعشاری می باشند مثل 614.934-و938.3.918
اعداد صحیح نشان دهنده سن . تعداد . سال و غیره می باشند.
اعداد اعشاری decimals:اعداد دارای ممیز اعشاری می باشند که مقادیر کسری را نشان می دهند مثل
8.709.0.005و-402.35534اعداد اعشاری که گاهی اعداد با ممیز شناور floating point
نیز نامیده می شوند نشان دهنده درجه حرارت نرخ بهره و غیره می باشند. در کلیه اعداد اعشاری باید ممیز اعشاری را قرار دهید حتی اگر قسمت کسری سمت راست ممیز مساوی صفر باشند.
هفت نوع داده عددی که ویژوال بیسیک از آنها پشتیبانی می کند.
نوع حافظه مورد نیاز محدوده مقادیر
Byte یک بایت 0تا 255
Integer دوبایت -32.768تا32.767
Long چهار بایت -2.147,483,648 تا 2,147,483,647
Single چهار بایت ||مقادیر منفی از3.402823e+38 تا -1.401298e-45 مقادیر مثبت از1.401298e-45 تا 3.402823e+38
Double هشت بایت ||مقادیر منفی از -1.79769313486232e+308 تا-4.9406565841247e-324مقادیر مثبت از 4.9406545841247e-324 تا 1.79769313486232e+308
Currency هشت بایت -922,337,203,685,477,5808 تا 922,337,203, 685, 477,5807
دقت بیشتر باعث می شود که محاسبات پولی تا دو رقمی اعشاری درست باشند.
Decimal دوازده بایت اگر از عداد اعشاری استفاده نکنید +/-79,228,162,514,264,337,593,543,950,335 و برای 28 رقم اعشاری استفاده نکنید +/-7.9228162514264337593543950335نوع داده decimalهنوز بطور کامل در ویژوال بیسیک پشتیبانی نمی شود اما در نگارش جدید هست.
کاراکترهای پسوند ویژوال بیسیک برای مقادیر صریح
پسوند نوع داده
& long
! single
# double
@ currency
ویژوال بیسیک از چند نوع داده عددی پشتیبانی می کند.
نوع حافظه مورد نیازش محدوده مقادیر
Stringطول ثابت طول رشته 1تا 56.400 کاراکتر
Stringطول متغیر طول رشته بعلاوه 10 بایت صفر تا دو میلیارد کارا کاتور
Date 8 بایت اول ژانویه 100 تا 31 دسامبر 9999
Boolean 2 بایت true یا false
Object 4 بایت هر شی پنهان شده
Variantعددی 16 بایت همه مقادیر مشابه double
Variantمتنی طول متن بعلاوه 22 بایت مشبه string با طول متغیر
پیشوند نام متغیرها که نوع داده را نشان می دهند
پیشوند نوع داده مثال
Bln Boolean blnbuttonenabled
Byt byte bytlength
Cur currency cursales98
Dte date dteoverdue
Dbl double dblscientificamt
Int integer intyera1998
Ing long ingweatherdistance
Obj object objworksheetacct99
Sng single sngsales1stqte
Str string strfirstname
Vnt variant vntvalue
مثال
در اینجا بعضی از علان ها مجاز با استفاده از dim را می بینید.
Dim inttotal as integer
Dim cursales99 as currency
عملگرهای رایج محاسبات و دستکاری داده ها.
عملگر هدف مثال نتیجه
^ توان 2^3 8
* ضرب 2*3 6
/ تقسیم 2/6 3
+ جمع 3+5 8
- تفریق 6-3 3
Mod باقیمانده 11mode 3 2
\ |تقسیم عدد صحیح 11\3 3
+یا& ترکیب رشته ای "hi,"bay" "hi, bay"
ویژوال بیسیک برای محاسبات عبارت های ریاضی از ترتیب زیر برای عملگرها تبعیت می کند
ترتیب عملگر مثال نتیجه
1 پرانتزها() (3+2)*7 35
2 ^ 2^3+1 9
3 mod,\,\.* 2+3*7 43
4 -,+ 10-4*2+1 3
پایان قسمت دوم
+
نوشته شده در پنجشنبه 5 اردیبهشت1387ساعت 12:21  توسط حامد سیستم
|
ادامه قسمت دوم
ساخت منو ها
2 روش برای فراخوانی پنجره مربوط به منو یعنی menu editor امکان پذیر می باشد.
1:فراخوانی از پنجره نوار ابزار کلید بر روی menu editor
2:راست کلیک بر روی فرم و انتخاب menu editor
بعد از باز شدن پنجره menu editor گزینه های پیش روی شما نمایان می شود.
تعریف:
Caption=در این قسمت نام منو را مشخص کنید.
Name = در این قسمت نام اصلی منو که در قسمت برنامه نویسی بکار می رود می نویسید
Index=اگر نام یک منو ماننده هم بود از این قسمت استفاده می کنید.
helpcontextID= در این قسمت شماره آی دی برای گزاشتن راهنما را می گزاررید.
Checked=این قسمت کنار منو یک علامت تیک می گزارد.
Enabled= این قسمت اجرا یا غیر اجرا بودن یک فورم را نمایش می دهد.
Visibeld= این قسمت برای نمایش دادن منو است. آیا نمایش داده شود یا خیر
Shortcut=در این قسمت مشخص می کند که هر دکمه از یک کلید یا کلیدهای استفاده کند مانندهalt+c
Next =برای ساخت یا جلو رفتن برای منو
Insert=فاصله گزاری
Deleted=پاک کردن یک منو
اگر در قسمت caption یک – بگزارید یک جدا کننده ساخته می شود.
کلید های راست چپ پایین بالا برای
پایین بالا برای عوض کردن جاهای یک منو است.
چپ و راست هم برای اینکه منو ساخته شده خودش باز کننده داشته باشد یا نه.
در قسمت کد نویسی امکانات اینکه رنگ منو چه باشد و....... امکان پذیر است.
+
نوشته شده در چهارشنبه 4 اردیبهشت1387ساعت 1:11  توسط حامد سیستم
|
برنامه Internet Explorer يا iexplore.exe در واقع برنامه کوچکي است که وظيفه اصلي آن ايجاد چارچوبي براي بهم پيوستن عناصر مختلف است و اين عناصر هستند که وظايف اصلي مثل load کردن صفحات وب ، اجراي کدهاي Html و غيره را انجام مي دهند . اصلي ترين عنصري که مستقيماً توسط iexplore.exe استفاده مي شود کنترل Webbrowser ( موجود در فايل shdocrw.dll ) مي باشد . وظيفه اين فايل dll ، عبارت است از حرکت بين صفحات وب ، مديريت تاريخچه صفحات ديده شده و غيره . اين فايل خود از فايل ديگري بنام Mshtml.dll استفاده مي کند که وظيفه آن بررسي و اجراي فايلهاي html است . مايکروسافت به برنامه نويسان اين امکان را داده که بتوانند در برنامه هايشان از کنترل webbrowser استفاده کنند . با استفاده از اين کنترل مي توان به سادگي يک مرورگر وب تقريباً کامل ساخت .
خصوصيات کنترل Webbrowser :
Webbrowser علاوه بر خواص استانداردي مثل width ، height و … خواص زير را دارد :
1 – Busy : اگر در حال load کردن يک صفحه يا در حال جستجو در وب باشد اين خاصيت True است . توسط متد Stop مي توان عمليات جاري را متوقف کرد .
2 – Container : ارجاع به شي نگهدارنده کنترل webbrowser
3 – Document : ارجاع به صفحه html فعلي . براي کار با اين صفحه html مي توان از خواص و متدهابي شي Document استفاده کرد .
4 – LocationName : حاوي آدرس محلي است که اکنون در کنترل webbrowser ، load شده است . اگر اين محل يک صفحه html باشد عنوان آن صفحه خواهد بود و اگر اين محل يک فايل در شبکه باشد مسير کامل آن فايل خواهد بود .
5 – LocationURL : حاوي url محلي است که فعلاً در کنترل webbrowser ، load شده است .
6 – Offline : اگر کنترل webbrowser در حالت عدم اتصال باشد مقدار آن True و در غيراينصورت False است .
7 – Parent : فرمي را نشان مي دهد که کنترل webbrowser در آن قرار دارد .
8 – ReadyState : وضعيت کنترل webbrowser را برمي گرداند .
متدهاي کنترل webbrowser : اين متدها مربوط به مرور در صفحات وب هستند :
1- GoBack : در ليست تاريخچه url ها ، يکي به عقب برمي گردد .
2 – GoForward : در ليست تاريخچه url ها ، يکي به جلو مي رود .
3 – GoHome : به homepage مرورگر مي رود .
4 – Navigate : به يک url يا فايل مي رود . ساختار اين متد بصورت زير است :
Navigate URL [Flags,][TargetFrameName,][PostData,][Headers]x
URL آدرس مقصد مي باشد . Flags نحوه باز شدن آدرس مقصد را تعيين مي کند . اگر اين پارامتر ذکر نشود آدرس جديد در پنجره فعلي باز خواهد شد و به ليست تاريخچه اضافه شده و اگر کپي آن در temperory cache موجود باشد از آنجا خوانده مي شود . مقادير پارامتر Flags عبارتند از :
- NavOpenInNewWindow : آدرس جديد را در پنجره جديدي باز مي کند .
- NavNoHistory : به ليست تاريخچه اضافه نمي شود بلکه جايگزين صفحه فعلي مي شود .
- NavNoReadFromCache : صفحه جديد از cache خوانده نمي شود .
- NavNoWriteToCache : صفحه جديد روي cache نوشته نمي شود
Event هاي کنترل webbrowser : اين event ها مربوط به مرور در وب و تغيير حالت آن هستند :
1 – CommandStateChange : براي فعال يا غيرفعال کردن دکمه هاي Forward و Back در مرورگر استفاده مي شود . شکل کلي فراخواني اين event بصورت زير است :
Private Sub WebBrowser1_CommandStateChange(ByVal Command As Long, ByVal Enable As Boolean)
که command فرماني است که حالت فعال آن تغيير کرده است و دو مقدار مي گيرد : 1 و 3 که بترتيب معادل فرمانهاي GoForward و GoBack هستند .
Enable فعال يا غيرفعال بودن فرمان را تعيين مي کند .
2 – DocumentComplete : اين event زماني فعال مي شود که صفحه در حال load شدن به حالت ReadyState_Complete برود . شکل کلي فراخواني اين event بصورت زير است :
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
که pDisp ارجاعي به کنترل webbrowser است که event در آن رخ داده است و URL آدرس صفحه در حال load شدن است .
3 – DownloadBegin : اين event در آغاز حرکت به صفحه جديد روي مي دهد و هيچ پارامتري نمي گيرد . مرورگر مي تواند در اين event پيغامي براي شروع عمليات جديد نشان مي دهد .
4 – DownloadComplete : اين event در پايان عمليات يا در صورت انصراف کاربر يا بروز خطا روي مي دهد .
5 – ProgressChange : با بروز هر تغييري در وضعيت load ، اين event روي مي دهد . شکل کلي فراخواني آن بصورت زير است :
Private Sub WebBrowser1_ProgressChange(ByVal Progress As Long, ByVal ProgressMax As Long)
که Progress نشان دهنده پيشرفت عمليات ( بايتهاي load شده ) است . پارامتر ProgressMax تعداد کل بايتهايي که بايد load شوند را نشان مي دهد بنابر اين :
(Progress/ProgressMax)*100=درصد پيشرفت عمليات load
يک مثال ساده :
از منوي project مورد components را انتخاب کنيد و از ليست کنترلها ، Microsoft Internet Controls را به toolbar خود اضافه کنيد . يک کنترل WebBrowser روي فرم قرار دهيد و سايز آنرا به اندازه ابعاد فرم خود قرار دهيد . يک textbox و يک دکمه روي فرم قرار دهيد . کد زير را براي event مربوط به کليک دکمه بنويسيد :
+
نوشته شده در سه شنبه 3 اردیبهشت1387ساعت 15:34  توسط حامد سیستم
|
برنامه نويسی شبکه و اينترنت در VB بخش اول
مروری بر TCP/IP
نکته : مطالب زير تنها در حد يک يادآوري مي باشد . اگر اطلاعات کمي در مورد TCP/IP داريد به کتابهاي موجود مراجعه کنيد .
پروتکل Protocol : قراردادي است براي برقراري ارتباط در شبکه
مدل TCP/IP : مجموعه اي از پروتکلهاي ارتباطي مرتبط بهم است که مکانيزمها و سرويسهاي مورد نياز جهت برقراري ارتباط در اينترنت را مهيا مي کنند . اين مدل شامل ۴ لايه است :
۱ - لايه کاربرد Application Layer : شامل برنامه هاي کاربردي و پروتکلهايي مثل Http ، Ftp ، Smtp ، Pop و Telnet مي باشد .
۲ - لايه انتقال Transport Layer : اين لايه شامل دو پروتکل TCP و UDP است . پروتکل TCP وظيفه کنترل رسيدن بسته هاي داده به مقصد ( TCP/IP داده ها را به بسته هاي کوچکي تقسيم مي کند که هر بسته حاوي آدرس فرستنده ، گيرنده و شماره بسته مي باشد ) ، تصحيح خطا و مرتب سازي بسته ها را برعهده دارد . UDP پروتکلي شبيه TCP است با اين تفاوت که هيچ ضمانتي براي رسيدن بسته هاي اطلاعاتي در آن وجود ندارد و معمولاً در انتقال صوت و ويدئو روي اينتزنت استفاده مي شود .
۳ - لايه اينترنت Internet Layer : شامل پروتکل IP است که مسئول مسيريابي بسته هاي اطلاعاتي مي باشد .
۴ - لايه دسترسي به شبکه Link Layer : شامل بخشي از هسته سيستم عامل و نيز درايورهاي واسط شبکه براي کار با سخت افزار شبکه مي باشد .
سوکت Socket و پورت Port : سوکت يک ورودي انتزاعي در لايه انتقال مي باشد که براي ايجاد ارتباطات مختلف TCP/IP بکار مي رود . اغلب برنامه هاي کاربردي که از TCP و UDP استفاده مي کنند ، عمليات انتقال اطلاعات خود را با ساخت يک سوکت و سپس انجام يکسري عمليات روي آن انجام مي دهند . اين عمليات عبارتند از :
۱ - عمليات کنترلي : شامل اختصاص يک شماره پورت به سوکت ، initiate کردن يا accpet کردن يک ارتباط ، از بين بردن سوکت
۲ - عمليات انتقال داده : شامل نوشتن داده روي سوکت و خواندن داده از سوکت
۳ - عمليات بررسي وضعيت : مثل پيدا کردن آدرس IP مربوط به سوکت ، پيدا کردن شماره پورت سوکت و غيره
HTTP : پروتکل انتقال داده براي وب است .
FTP : پروتکل انتقال فايل روي اينترنت است .
SMTP و POP : پروتکلهاي ارسال و دريافت email مي باشند.
بچه ها اگه آموزشها در سطح شما نیست و خیلی بالاست بگین تا ابتدایی تر توضیح بدم !!!!
+
نوشته شده در دوشنبه 2 اردیبهشت1387ساعت 18:52  توسط حامد سیستم
|
ايجاد ساختارهاي داده اي در ويژوال بيسيک - بخش پايانی
انواع روشهای پيمايش عناصر درخت :
۱ - روش InOrder : در اين روش ابتدا عناصر نيمه سمت چپ درخت ، سپس ريشه و در آخر عناصر نيمه سمت راست درخت نمايش داده می شوند .
۲ - روش PreOrder : در اين روش ابتدا ريشه درخت ، سپس عناصر نيمه سمت چپ و در پايان عناصر نيمه سمت راست درخت نمايش داده می شوند .
۳ - روش PostOrder : در اين روش ابتدا عناصر نيمه سمت چپ درخت ، سپس عناصر نيمه سمت راست درخت و در پايان ريشه درخت نمايش داده می شوند .
مثال : درخت زير را در نظر بگيريد :

»» ادامـه آمـوزش ««
+
نوشته شده در یکشنبه 1 اردیبهشت1387ساعت 14:22  توسط حامد سیستم
|