محبوبترینها
نمایش جنگ دینامیت شو در تهران [از بیوگرافی میلاد صالح پور تا خرید بلیط]
9 روش جرم گیری ماشین لباسشویی سامسونگ برای از بین بردن بوی بد
ساندویچ پانل: بهترین گزینه برای ساخت و ساز سریع
خرید بیمه، استعلام و مقایسه انواع بیمه درمان ✅?
پروازهای مشهد به دبی چه زمانی ارزان میشوند؟
تجربه غذاهای فرانسوی در قلب پاریس بهترین رستورانها و کافهها
دلایل زنگ زدن فلزات و روش های جلوگیری از آن
خرید بلیط چارتر هواپیمایی ماهان _ ماهان گشت
سیگنال در ترید چیست؟ بررسی انواع سیگنال در ترید
بهترین هدیه تولد برای متولدین زمستان: هدیههای کاربردی برای روزهای سرد
در خرید پارچه برزنتی به چه نکاتی باید توجه کنیم؟
صفحه اول
آرشیو مطالب
ورود/عضویت
هواشناسی
قیمت طلا سکه و ارز
قیمت خودرو
مطالب در سایت شما
تبادل لینک
ارتباط با ما
مطالب سایت سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون
مطالب سایت سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون
آمار وبسایت
تعداد کل بازدیدها :
1827951673
يك قفل سخت افزاري بسازيم
واضح آرشیو وب فارسی:سایت ریسک: View Full Version : يك قفل سخت افزاري بسازيم habit23rd February 2008, 09:52 AMيك قفل سخت افزاري بسازيم . : پورت موازي Parallel يكي از مفيدترين و پركاربردترين پورتهاي كامپيوتر است كه كاربران و طراحان براي متصل كردن مداراتي كه طراحي كرده اند از آن استفاده ميكنند . در اين مقاله سعي بر ان ميكنم كه نحوه استفاده از اين پورت را فرا بگيريد . جالب است بدانيد كه حتي ميتوانيد با اين پورت يك ربات را نيز كنترل كنيد . اما در اينجا مبناي كار را در طراحي يك قفل سخت افزاري ميگذاريم . حتما شده است كه قفلهاي سخت افزاري نرم افزارهاي مختلف را در هنگام خريد نرم افزار نيز خريده باشيد . شايد برايتان جالب باشد بدانيد اين قفل چگونه طراحي شده است و اساس كار ان چيست ؟ اگر اين مقاله را بخوانيد بزودي متوجه خواهيد شد كه درون تراشه اي كه به شما بعنوان قفل سخت افزاري داده شده است چيزي چندان پيچيده نخواهد بود ... در ابتدا چند تذكر ميدهم اينكه : پورت موازي PC ها بسيار حساس هستند كافيست با كمي اشتباه در كار كردن با اين پورت كل اين پورت را از بين ببريد . اكثرا هم تعمير اين پورت پرهزينه است و شايد بصرفه تر باشد تا يك مادربرد جديد بخريد . بنابراين پيشنهاد ميكنم اگر از صحت عملكرد خود و يا مداري كه قرار است به اين پورت متصل شود اطمينان نداريد يك كارت I/O بخريد و با ان پورت كار كنيد . كه اگر هم قرار شد ان را خراب كنيد . فقط همان كارت را تعويض كنيد . اين كارت شما ميتواند روي اسلات PCI/ISA باشد . تشريح پورت موازي Parallel يك پورت موازي 25 پين ماده دارد كه عموما براي اتصال پرينتر به كامپيوتر مورد استفاده قرار ميگيرد . اما خيلي از سخت افزار ها ميتوانند از اين پورت اتصال برقرار كنند . تمام اين 25 پين هميشه مورد استفاده نيستند . شايد گاهي تنها يك پين را بخواهيد استفاده كنيد . parsx ابتدا به معرفي پين هاي اين پورت ميپردازيم : در شكل فوق شمايي از يك پورت موازي را ميبينيد كه اصولا اين پينها از راست به چپ و از بالا به پايين شماره گذاري ميشوند . يعني بالايي ترين و سمت راست ترين پين ، پين شماره 1 و سمت چپ ترين و بالاترين پين شماره 13 و پايين ترين و سمت چپ ترين پين شماره 25 است . اين 25 پين به چهار گروه تقسيم بندي ميشوند : کاربران ثبت نام کرده قادر به مشاهده لینک می باشند دوازده پين از 25 پين فوق نقش خروجي را دارند و اطلاعات را از كامپيوتر به خارج ميفرستند . كه هشت پين از اين دوازده پين از پين شماره 2 تا 9 هستند كه روي هم يك بايت را تشكيل ميدهند و به اين هشت پين پينهاي Data گويند. پين هاي 18 تا 25 كه در شكل سبز رنگ هستند پينهاي GND زمين هستند . از لحاظ منطقي مقدار ارزشي صفر و از لحاظ مفهومي انگار كه به زمين متصل هستند .كه در اين مبحث كاري به آنها نداريم . پينهاي 10 و 11 و 12 و 13 و 15 كه به رنگ قرمز رنگ هستند به عنوان ورودي كاربرد دارند . كه مقادير پيشفرض آنها يك است و پين شماره 11 مقدار پيشفرض صفر دارد. بنابراين بايت ورودي كه متشكل از پينهاي 10 تا 15 هست ( در شكل با S7 تا S3 نمايش داده شده اند) مقدار پيشفرض 127 دارد كه معادل دودويي آن 01111111 مي باشد . پينهاي شماره 1 و 14 و 16 و 17 نيز بيتهاي خروجي هستند كه به اين چهار پين پينهاي STATUS گويند ، كه در اين مبحث كاري با اين پين ها نداريم .parsx بنابراين نتيجه مي گيريم اگر قرار باشد اين پورت به پرينتر متصل باشد از طريق پين هاي شماره 2 تا 9 اطلاعات را به پرينتر مي فرستد . و اگر قرار باشد اطلاعاتي را به كامپيوتر از طريق اين پورت وارد كنيم م تنها از طريق پينهاي شماره 10 تا 13 و 15 مي توانيم اين كار را انجام دهيم . حال كه با پورت Parallel آشنا شديد نوبت به مقدار دهي پين هاي اين پورت ميرسد . همانطور كه گفتيم براي قفلمان تنها از دو قسمت ورودي و خروجي اين پورت استفاده مي كنيم . عملكرد يك قفل سخت افزاري به اين صورت ميتواند باشد كه هرلحظه يا در زمان معيني برنامه شما ورودي پورت Parallel را چك كند اگر برابر مقداريست كه شما در برنامه خود تعيين كرده ايد انگاه قفل به پورت متصل است . اما اگر قفل شما به پورت متصل نيست يعني قفل از پورت جدا شده است يا اتفاقي افتاده است كه قفل درست كار نميكند . پس بايد بتوانيم مقدار را از پورت بخوانيم . (پينهاي ورودي) اما چطور مي توان اطلاعات را به اين پورت وارد كرد . براي انجام اين كار ميتوانيد از قسمت خروجي پورت استفاده كنيد . در ساده ترين حالت يعني مقداري را به خروجي بفرستيد و آنگاه همان مقدار را در ورودي بخوانيد . اگر اين اتفاق ساده در طول اجراي برنامه بيفتد قفل درست كار مي كند . بنابراين بايد پينهاي خروجي را به پين هاي ورودي متصل كنيد . يك رشته سيم تلفن را برداريد و پين شماره 2 را به پين شماره 15 متصل كنيد . بنابراين از اين پس هروقت ما پين شماره 2 را صفر كنيم پين شماره 15 هم بصورت خودكار 0 مي شود و اگر اين سيم را قطع كنيم اين پين همان مقدار پيشفرض خود يعني يك باقي مي ماند . كه در اين مثال اين مقدار را صفر مي كنيم در نتيجه خروجي ما به صورت 01110111 در مي آيد كه معادل 119 مي باشد . در اين مثال ساده ترين حالت ممكن را بيان كرديم مي توانيد از 5 رشته سيم هم براي ارتباط پين هاي خروجي به ورودي هم استفاده كنيد . مثلا پينهاي شماره 2و4و5و6و7 را به پينهاي شماره 11و12و13و15و10 متصل كنيد يا ميتوانيد پينهاي شماره 9و8و2و3و4 را به پين هاي شماره 12و13و11و10و15 متصل كنيد . و صدها حالت مختلف ديگر . اين بستگي به سليقه خود شما دارد . چرا كه مهم اين است كه در ورودي چه مقداري مي خوانيد . همانطور كه مي بينيد مي توانيد از يك رشته سيم يا حداكثر از 5 رشته سيم ( چون حداكثر 5 پين ورودي داريم ) براي ارتباط پين ها استفاده كنيد . پس از ارتباط پين ها مي توانيد باز هم به دلخواه خودتان هركدام را كه مي خواهيد روشن يا خاموش كنيد ( يعني مقدار 1 يا 0 بدهيد ) . براي خاموش يا روشن كردن اين پين ها بايد فرآيندي را طي كنيد به اين صورت كه هر مقدار دلخواه بين 0 تا 255 ( چون تنها هشت بيت خروجي داريم پس مي توانيم تنها يك بايت اطلاعات بفرستيم ) را به خروجي بفرستيد و آنگاه ببينيد در ورودي چه مقداري حاصل مي شود كه اين مقدار ورودي دقيقا بستگي به اين دارد كه چه تعداد از پينهاي خروجي را به پين هاي ورودي متصل كرده ايد ؟ آيا مثل ما از يك رشته سيم استفاده كرده ايد يا 3 رشته يا از هر 5 رشته استفاده كرده ايد ؟ آيا پين شماره 2 را به پين شماره 10 متصل كرده ايد يا به پين شماره 11 ؟ همانطور كه مي بينيد مقدار ورودي شما بستگي به اين دارد كه پين ها را چگونه به هم متصل كرده ايد و هم اينكه چه مقداري را در خروجي فرستاده ايد . براي اينكه متوجه شويم چه مقداري در ورودي خوانده شده است بايد برنامه اي بنويسيد كه اين مقدار ورودي را به شما نمايش دهد . يااگر كمي مهارت در trace كردن برنامه داشته باشيد مي توانيد بدون نوشتن اين برنامه اضافي براي خواندن پورت مقدار خوانده شده از پورت ورودي را بخوانيد . ارتباط Visual Basic با پورت موازي : Microsoft Visual Basic6 را از آن جهت انتخاب كرديم كه يادگيري آن نسبت به باقي نرم افزارهاي برنامه نويسي ساده ترو همچنين در بين كاربران عمومي تر مي باشد . ضمنا بحث هاي پيچيده سخت افزاري را نيز ندارد . اما Visual Basic از انجايي كه سطح بالاست . قدرت ارتباط با سخت افزار كامپيوتر را مانند زبانهاي برنامه نويسي C و مخصوصا اسمبلي را ندارد . هرچند QBasic اين قابليت را دارد !!! اما اين نقطه ضعف اين نرم افزار نيست بلكه اين برنامه با استفاده از Dynamic Linked Library يا DLL ها ميتواند اين نقصان را برطرف كند . بنابراين براي ارتباط با پورت موازي يا هر قطعه سخت افزاري شما ميتوانيد با زبان برنامه نويسي ديگري برنامه اي بصورت DLL بنويسيد و انرا وارد VB كنيد . بنابراين براي نوشتن اين قفل به يك فايل Dll نياز داريم تا بتوانيم با قفل ارتباط برقرار كنيم . اين فايل را مي توانيد به راحتي با جستجوي iodll در اينترنت به صورت رايگان دانلود كنيد . پس از دانلود فايل io.dll آن را در شاخه سيستم خود كپي كنيد : </SPAN>%systemroot%system32 براي استفاده از فايل در پروژه بايد انرا در بخش module استفاده كنيد تا براي كل پروژه قابل تعريف شده باشد . ( براي اضافه كردن ماژول به پروژه روي نام پروژه در پنجره project كليك راست كنيد و گزينه add module را انتخاب كنيد . ) بنابراين در ماژول يك كد زير را وارد كنيد : Public Declare Sub PortOut Lib "io.dll" (ByVal Port As Integer, ByVal value As Byte) Public Declare Function PortIn Lib "io.dll" (ByVal Port As Integer) As Byte دكلريشن اولي براي ساب پراسيجر portout ميباشد . كه دو ارگومان دارد اولي ادرس پورت است بصورت int كه ادرس انرا بايد از systeminfo يا از device manager پيدا كنيد . اما بيشتر در اكثر كامپيوتر ها ادرسهاي 378H براي بخش خروجي پورت پرينتر LPT1 و ادرس 379H براي ورودي مي باشد . كه براي استفاده انها در portout برنامه ما بايد انها رابه دسيمال تبديل كنيد يعني بترتيب 888 ، 889 در اين قسمت مقدار 888 را ميفرستيد . پس آدرس پورت موازي ما طبق استاندارد گفته شده براي قسمت خروجي 888 مي باشد . اما آرگومان دوم PortOut مقداريست كه به خروجي مي فرستيد . اين مقدار همانطور كه قبلا هم گفتيم مي تواند بين 0 تا 255 باشد . ما بدلخواه عدد 0 را مي فرستيم . در تابع PortIn ادرس پورت ورودي را وارد ميكنيد 889 . اين تابع مقدار خوانده شده از پين هاي ورودي را بر مي گرداند . همانطور كه گفتيم ما در قفلمان پين شماره 2 را به پين شماره 15 توسط تنها يك رشته متصل مي كنيم. آنگاه عدد دلخواهمان كه 0 بود را به خروجي مي فرستيم . حال بايد ببينيم در ورودي چه مقداري خوانده مي شود . از يك برنامه كمكي براي خواندن مقدار ورودي استفاده مي كنيم بنابراين برنامه ديگري موقتا مي نويسيم و در آن با تعريف ماژول گفته شده مقدار ورودي را چاپ مي كنيم . تا بدانيم در برنامه اصلي كه قرار است قفل براي آن باشد چه مقداري خوانده شود . يك دكمه در فرم برنامه موقتتان قرار دهيد و در كد دكمه كد زير را وارد كنيد : Call PortOut(888,0) lckTemp = PortIn(889) label1.text = lckTemp در label1 كه در فرم برنامه تان قرار داده ايد مقدار خوانده شده چاپ مي شود . كه در مثال ما عدد 119 خوانده مي شود . حال كه مقدار ورودي را مي دانيم شروع به نوشتن برنامه اصلي مي كنيم . نحوه عملكرد برنامه در ارتباط با قفل : قرار بر اين است كه برنامه به شرطي اجرا شود كه اين قفل ساده ما (يك رشته سيم گفته شده ) به پورت متصل باشد بنابراين مداما در طول اجراي برنامه بايد مقدار ورودي پورت موازي را با عددي كه در برنامه فوق بدست آورديم چك كنيم . عدد بدست آمده در برنامه گفته شده مقدار 119 بود . در ويژوال بيسيك كنترلي به نام تايمر ميتواند بصورت مداوم عمليات مورد نظر شما را تكرار كند . عمليات مورد نظر ما خواندن مقدار پورت موازي و چك كردن مقدار آن با مقدار مورد نظرمان كه 119 مي باشد است . در صورتيكه اين مقدار خوانده نشود برنامه بايد از كار بيفتد يا حداقل با پيغامي به كاربر بگويد كه قفل را سر جايش قرار دهيد . حال مي خواهيم توسط يك تايمر هميشه اين مقدار ورودي را چك كنيم . بمحض اينكه اين مقدار تغيير كند يا از بين برود ( قفل از جايش در بيايد ) برنامه بحالت معلق در بيايد و درخواست قفل كند . كد تايمر شما مي تواند به اين صورت باشد : Private Sub lcktmr_Timer() Dim lckTemp As Integer Call PortOut(888, 0) lckTemp = PortIn(889) If lckTemp <> 119 Then Call MsgBox("Insert Hardware-Lock in Parallel Port" _ , vbOKCancel, "Warning...") End End If تشريح كد : Call PortOut(888, 0) lckTemp = PortIn(889) در اين خط عدد 0 را به خروجي ارسال كرده ايم كه پينهاي 2 تا 9 را مقدار دهي ميكند . If lckTemp <> 119 Then در اينجاست كه بودن يا نبودن قفل مشخص ميشود . چون مقدار 0 را ارسال كرده ايم انتظار داريم مقدار 119 خوانده شود وگرنه قفل يا خراب است يا نيست . بنابراين مقدار خوانده شده در lckTemp چك ميشود كه مخالف 119 است . Call MsgBox("Insert Hardware-Lock in Parallel Port" _ , vbOKCancel, "Warning...") End پس بعد از دادن اخطار از برنامه خارج مي شود . همانطور كه مشاهده كرديد به همين راحتي مي توانيد يك قفل سخت افزاري طراحي كنيد . اما خوب قفل هاي سخت افزاري موجود در بازار هم درست است كه از اين منطق استفاده مي كنند . اما بهرحال با استفاده از چيپ هايي كه در پشت قفل قرار مي دهند روند كار را پيچيده تر مي كنند . :cool::cool::cool::p muhammadtanha29th July 2010, 12:43 PMمطلبت خیلی با حاله ازت واقعا ممنونم ولی اگه روش شکستن این قفل رو هم بگی دیگه عالی میشه فقط اگه ممکنه سریع این موضوع رو پیگیری کنید سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 603]
صفحات پیشنهادی
يك قفل سخت افزاري بسازيم
View Full Version : يك قفل سخت افزاري بسازيم habit23rd February 2008, 09:52 AMيك قفل سخت افزاري بسازيم . : پورت موازي Parallel يكي از مفيدترين و ...
View Full Version : يك قفل سخت افزاري بسازيم habit23rd February 2008, 09:52 AMيك قفل سخت افزاري بسازيم . : پورت موازي Parallel يكي از مفيدترين و ...
يك قفل نرم افزاري -
View Full Version : يك قفل سخت افزاري بسازيم habit23rd February 2008, 09:52 AMيك قفل سخت افزاري بسازيم . : پورت موازي Parallel يكي از مفيدترين و .
View Full Version : يك قفل سخت افزاري بسازيم habit23rd February 2008, 09:52 AMيك قفل سخت افزاري بسازيم . : پورت موازي Parallel يكي از مفيدترين و .
ارتباط سايت با قفل سخت افزاری؟؟ -
View Full Version : يك قفل سخت افزاري بسازيم habit23rd February 2008, 09:52 ... قدرت ارتباط با سخت افزار كامپيوتر را مانند زبانهاي برنامه نويسي C و مخصوصا .
View Full Version : يك قفل سخت افزاري بسازيم habit23rd February 2008, 09:52 ... قدرت ارتباط با سخت افزار كامپيوتر را مانند زبانهاي برنامه نويسي C و مخصوصا .
مشخص كردن كدهاي سخت افزاري (مهم) -
13 فوریه 2008 – يك قفل سخت افزاري بسازيم. View Full Version : يك قفل سخت افزاري بسازيم habit23rd February 2008, 09:52 AMيك قفل سخت افزاري بسازيم .
13 فوریه 2008 – يك قفل سخت افزاري بسازيم. View Full Version : يك قفل سخت افزاري بسازيم habit23rd February 2008, 09:52 AMيك قفل سخت افزاري بسازيم .
چطور سي دي رو قفل ميكنن كه بعد از كپي كردن ميگه سي دي اصل ...
اما اگر بخواهيد يك قفل براي CD درست كنيد ( اولين پست تاپيك ) ، بهتر هست از همون ASPI .... وقتي يك قفل سخت افزاري مي خريد يكسري ابزار در اختيار شما قرار مي گيرد كه مي توانيد روي ... ما كه مي خواهيم فقط از روي اون قفل يك قفل براي خودمون بسازيم.
اما اگر بخواهيد يك قفل براي CD درست كنيد ( اولين پست تاپيك ) ، بهتر هست از همون ASPI .... وقتي يك قفل سخت افزاري مي خريد يكسري ابزار در اختيار شما قرار مي گيرد كه مي توانيد روي ... ما كه مي خواهيم فقط از روي اون قفل يك قفل براي خودمون بسازيم.
يك پروژه برنامه نويسي (نياز به برنامه نويس) -
به همراه يك قفل نرم افزاري (فعال شدن برنامه از طريق كد گيري از اينترنت ) دوستاني ... خوب یه مقدار کار رو سخت کرده چون من بیشتر با دلفی و ویژال بیسیک کار کردم .
به همراه يك قفل نرم افزاري (فعال شدن برنامه از طريق كد گيري از اينترنت ) دوستاني ... خوب یه مقدار کار رو سخت کرده چون من بیشتر با دلفی و ویژال بیسیک کار کردم .
تاريخچه بزرگترين شركت سخت افزارى جهان
تاريخچه بزرگترين شركت سخت افزارى جهان واتسون همواره به تعهد انجام خدمت به مشترى تاكيد داشت و مى گفت: «ديگران هم مى توانند سخت افزار بسازند اما وجود ريشه ايده ارائه خدمت در نهاد ما مهم است. هيچ يك از ما نيست كه براى كمك به مشترى و رفع مشكل يك دستگاه پول پرداز يا چيز ... توسط محققان كشور قفل انواع نرم افزار و ويندوز ساخته شد ...
تاريخچه بزرگترين شركت سخت افزارى جهان واتسون همواره به تعهد انجام خدمت به مشترى تاكيد داشت و مى گفت: «ديگران هم مى توانند سخت افزار بسازند اما وجود ريشه ايده ارائه خدمت در نهاد ما مهم است. هيچ يك از ما نيست كه براى كمك به مشترى و رفع مشكل يك دستگاه پول پرداز يا چيز ... توسط محققان كشور قفل انواع نرم افزار و ويندوز ساخته شد ...
قفل های سی دی چگونه کا می کنند | دانلود کتاب
قفل های سی دی چگونه کا می کنند نام کتاب : قفل های سی دی چگونه کا می کنند نویسنده : ناشناس حجم کتاب : ۱۰۱ ... M.s.H06-08-2006, 04:19 PMسلام من يك برنامه مي خوام كه Phoon lock گوشیم به حالت ... استفاده ... های صوتی و Codec ها هم راحت سخت افزار را شناخته و نصب شده و کار میکنند. ... بدون نرم افزار درایو مجازی بسازیم | دانلود کتاب ...
قفل های سی دی چگونه کا می کنند نام کتاب : قفل های سی دی چگونه کا می کنند نویسنده : ناشناس حجم کتاب : ۱۰۱ ... M.s.H06-08-2006, 04:19 PMسلام من يك برنامه مي خوام كه Phoon lock گوشیم به حالت ... استفاده ... های صوتی و Codec ها هم راحت سخت افزار را شناخته و نصب شده و کار میکنند. ... بدون نرم افزار درایو مجازی بسازیم | دانلود کتاب ...
گيگابايت همه جا را سبز كرد
اين فناوري يك قفل سختافزاري، نرمافزاري است جهت بالا بردن امنيت و تعريف سطوح ... DES و فناوري بهينهساز پوياي مصرف انرژي گيگابايت بهانهاي خوب براي يك روز و يك ... اژانس انرژي از كشورها خواست تا براي تامين انرژي نيروگاههاي هسته اي بسازند ...
اين فناوري يك قفل سختافزاري، نرمافزاري است جهت بالا بردن امنيت و تعريف سطوح ... DES و فناوري بهينهساز پوياي مصرف انرژي گيگابايت بهانهاي خوب براي يك روز و يك ... اژانس انرژي از كشورها خواست تا براي تامين انرژي نيروگاههاي هسته اي بسازند ...
تاریخچه پیتزا
اما اين غذاي پرطرفدار راه درازي را پيموده است تا به يک غذاي جهاني تبديل شود. سربازان داريوش بزرگ (486-521 ... يك قفل سخت افزاري بسازيم · فارسی نویسی در visual ...
اما اين غذاي پرطرفدار راه درازي را پيموده است تا به يک غذاي جهاني تبديل شود. سربازان داريوش بزرگ (486-521 ... يك قفل سخت افزاري بسازيم · فارسی نویسی در visual ...
-
گوناگون
پربازدیدترینها