مشاهده دست آورد نظرسنجی: سورس ها در چه رابطه ای باشه؟

رای دهنده
130. شما نمی توانید در این رای گیری رای بدهید
  • کاربردی

    56 43.08%
  • حسابداری

    55 42.31%
  • کیلاگر

    8 6.15%
  • هک بوت

    11 8.46%
صفحه 1 از 2 12 آخرآخر
نمایش نتایج 1 تا 40 از 43

نام تاپیک: دانلود سورس برنامه نویسان

  1. #1
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539

    Thumbs up دانلود فقط سورس

    سلام من تصمیم گرفتم هر روز یک سورس به اینم سایت اضافه کنم

    دوستان شما هم اگه سورس دارید بذارید در این قسمت

    اولیش هست سورس چک کننده یاهو مسنجر



    دوستان در صورت موافق بودن شما من از همین لحظه 130 سورس را تضمین می کنم
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله saeedzx : پنج شنبه 25 تیر 1388 در 20:33 عصر

  2. #2
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539

    با سلام امروز یک سورس زیبای مدیاپلیر با اسکین بسیار زیبا آوردم امیدوارم خوشتون بیاد

    سلام دوستان گلم امروز یک جستجو گر خیلی بهال با امکان ردیابی پسوند هارو داره مثل :*.txt خیلی جالبه دانلود کنید

    با سلام دوباره اومدم با یک سورس جالب دانلودر بهش میگن خیلی جالبه سرعتش بالاست

    اینم سورس جدیدscroltext که متن از پایین به بالا حرکت می کنه ؟؟؟


    سلام به دوستان گلم این یک سورس Source Dragon Remote که دارای 2 قسمت سرور و کلاینت تشکیل شده که شما هم میتونید با ریموت دستاب با اون ها اتصال بر قرار کنید
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Mbt925 : شنبه 28 شهریور 1388 در 13:13 عصر

  3. #3
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539
    سورس برای اتصال به شبکه و فرستادن متن و یا همون PM

    سورس پلیر AVI

    سورس یک رنجیر دانلود کنید

    یک کرنومتر خوب با ثانیه شمار و.....

    ساختن اکونت در ویندوز

    سورسی برای کپی گرفت هر فایلی در ویندوز
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Mbt925 : شنبه 27 تیر 1388 در 00:38 صبح

  4. #4
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539
    یک سورس زیبا برای نگه داشتن زمان

    یک کامند دیللوگ زیبا و حرفه ای برای دوستان گلم

    یک سورس ارسال کننده فکس که خیلی قشنگه

    یک سورس آنتی ویروس ( بی نظیر )

    یک اسکین بود با نام vbskpro2.ocx من 10 تا اسکین دیگههم بهش اضافه کردن بنگرید

    PM سندر زیبا و حرفه ای
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Mbt925 : شنبه 27 تیر 1388 در 00:45 صبح

  5. #5
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539

    نقل قول: دانلود سورس برنامه نویسان


    با سلام به دوستان گلم
    امروز یک سورس زیبا که قبلاً نوشته بود برای شما به ارمغان آورده ام
    سورس دیگری از نرم افزار ویدئوکلوپ که کارایی خوبی در آموزش زبان Vb دارد چون نکته ها و روش هایی زیادی در این سورس موجود است


    دانلود کنید

  6. #6
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539
    سورس Display Image در یاهو مسنجر

    سورس زیبای افکت فرم Close effect

    اینم یک سورس miclockersource

    این OCX شطرنج که خیلی ها دونبالشن
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Mbt925 : شنبه 27 تیر 1388 در 00:52 صبح

  7. #7
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539
    سورس که هرچیزی که دوست داری می تنید روی sturt up قرار دهید

    یک ResEditor حر فه ای حالشو ببرید

    اینم یک سورس یاهو مسنجر


    اینم یک سورس دفترچه تلفن زیبا

    خوب لطفا بازم ما را حمایت کنید تا ادامه دهیم
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Mbt925 : شنبه 27 تیر 1388 در 00:57 صبح

  8. #8
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539

    نقل قول: دانلود سورس برنامه نویسان

    اینم Ocx های نرم افزار کلوپ که توشون نبود OCX اگه خوشتون اومد تشکر یادتون نره یا علی
    فایل های ضمیمه فایل های ضمیمه

  9. #9

    Cool نقل قول: دانلود سورس برنامه نویسان

    نقل قول نوشته شده توسط bahman_akbarzadeh مشاهده تاپیک
    تو سايت يه ربات براي نظر دادن تو بلاگفا ديدم، ولي فايل اجرايي نداشت.
    براي همين اينجا گفتم.
    اگه اونو اينجا بزارين ممنون ميشم.

    ببین اینو من درست کردم همرا با سورس و با فایل اجرایی .
    فایل های ضمیمه فایل های ضمیمه

  10. #10
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539

    نقل قول: دانلود سورس برنامه نویسان

    سلام دوست عزیز bahman_akbarzadeh

    اینم فایل ارسال نظر در بلگفا و همچنین جستجو گر وب

    دانلود

  11. #11
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539

    نقل قول: دانلود سورس برنامه نویسان





    برنامه ای که می خوام معرفی کنم یه برنامه کامل هستش که شامل ابزار بسیار زیادی واسه بدست آوردن اطلاعات سیستم خودتون یا کافی نت ها به کار میره.

    برنامه فوق از دو بخش Tools و Spy-Ware تشکیل شده که با محیط بسیار ساده ای که در اختیار کاربر قرار میده کار کردن با برنامه رو بسیار آسان می کنه.

    Proccess Manager



    در این قسمت می تونید به اطلاعات کاملی در مورد پروسس ها و برنامه های در حال اجرا دسترسی پیدا کنید و به وسیله امکاناتی که در اختیار دارید می تونید هر کدوم از پروسس ها رو کنترل کنید.



    Service Manager



    در این بخش نیز می تونید به کنترل سرویس های در حال اجرا و یا سرویس های در متوقف شده رو کنترل کنید و اطلاعات لازم رو در اختیار داشته باشید

    Internet History



    اونایی که زیاد از اینترنت استفاده می کنن معمولا دوست دارن یه آمار کلی از سایت هایی که باز کردن داشته باشن. دراین قسمت از برنامه تمامی سایت هایی که باز شده به همراه تاریخ و سایر امکانات دیگه براشون لیست میشه و می تونن یه آمار کلی از سایت هایی که باز کردن رو داشته باشن

    Installed Programs



    کلیه برنامه های نصب شده در ویندوز توی این قسمت قرار میگیره و به راحتی می تونید اونا رو از روی سیستم پاک کنید

    System Settings



    کسانی که لازمه سیتمشون محدود باشه (مثل کافی نت ها) حتما این قسمت از برنامه به دردشون می خوره

    Port Manager



    یه سری اطلاعات در مورد پورت ها رو می تونید در این قسمت به دست بیارید

    Registry Editor



    همه شما معمولا با رجیستری ادیتور کار کردین که با استفاده از این برنامه دسترسی شما به رجیستری ساده تر میشه

    قرار گرفته که به صورت مختصر در مورد هر کدوم از قسمت های اون توضیح میدم. System Properties کلیه اطلاعات سیستم شما در قسمت

    Multimedia Informations



    سخت افزار های مربوط به مالتی مدیا و درایور های اون و کلی اطلاعات دیگه از اون در این قسمت معرفی میشه

    Disks and Memory Informations



    اطلاعات کامل در مورد هارد دیسک و حافظه و سایر دیسک ها و درایو ها در اینجا نمایش داده میشه

    Network Properties



    برای بدست آوردن اطلاعات در مورد شبکه مثل آی پی و غیره از این بخش استفاده میشه

    Video Properties



    همونطور که میدونید کارت گرافیک شامل مشخصات بسیار زیادی هستش که در این قسمت همه اونا نمایش داده میشه

    DirectX Informations



    وسایر اطلاعات مربوط به اون رو میشه مشاهده کرد Direct X در این قسمت مشخصات مربوط به

    CPU & APM Information



    اطلاعات مربوط به پردازنده سیستم و همچنین اطلاعات مربوط به منبع تغذیه سیستم در این قسمت از برنامه قابل مشاهده است

    Hardware Properties



    مشخصات کلیه قطعات سیستم به صورت کامل در این قسمت نشون داده میشه



    و اما بخشی از برنامه که خیلی ها دوسش دارن

    هکران محترم در از این قسمت از برنامه می تونن اطلاعات محرمانه و شخصی سیستم رو زیر نظر داشته باشن به این شکل که با فعال کردن بخش های مربوط به این قسمت خیلی از کلمات عبور و سایر اطلاعات ضروری دیگه در اختیارشون قرار می گیره



    Yahoo Messenger



    من خودم شخصا با این قسمت از برنامه کلی حال کردم

    در این قسمت از برنامه لیست تمامی آیدی هایی که بعد از اجرای این برنامه لوگین شدن رو به همراه رمز عبور و ساعت و تاریخ دقیق لوگین رو در اختیار شما قرار می ده

    از دیگر خصوصیات از بخش نمایش Save بودن پسورد و Invisible بودن آیدی هنگام لوگین هستش.

    بخش فوق از کلیه ورژن های یاهو مسنجر از جمله Yahoo 8.1 پشتیبانی می کنه



    Windows Messenger



    خیلی کم پیش میاد کسی از Windows Messenger استفاده کنه ولی واسه بالا بردن قدرت برنامه و کامل کردن برنامه این بخش رو هم به برنامه اضافه کردم که می تونید کلیه آیدی های Windows Messenger رو به همراه کلمه عبور اونها و تاریخ وساعت دقیق اون رو مشاهده کنید.

    Dialup Manager



    این قسمت دیگه فکر نمی کنم نیازی به توضیح داشته بشه .

    در این قسمت تمام پسورد های Dialup به همراه سایر مشخصات اون نمایش داده میشه.

    Trillian Messenger



    Trillian Messenger هم یکی از مسنجر های خوبه که تمامی مسنجرهای دیگه (مثل یاهو مسنجر و ICQ و غیره ) رو در خودش جای داده!!!

    اما بوسیله برنامه Visual Manager می تونید همه اون مسنجر ها رو به همراه اطلاعاتشون زیر نظر داشته باشید

    Keylogger Manager



    این آخرین بخش برنامه هستش که در موردش توضیح میدم.

    توی این قسمت تمام کلید های فشرده شده توسط کاربر به همراه پنجره هایی که در اونها نمایش داده میشه به این صورت که با فعال کردن این قسمت و تنظیم اون در تایم دلخواه تمامی کلید ها رو ذخیره کنید!!!!



    --------------------------------------------------------------------------------


    Security Settings



    Add On Startup : در صورت فعال کردن این بخش شما نیازی با اجرای مجدد برنامه بعد از ریستارت یا روشن شدن برنامه نخواهید داشت.

    Hide After Run : بعد از فعال کردن این قسمت برنامه در صورت ریستارت و اجرای اتوماتیک به صورت مخفی به اجرا در میاد تا کسی متوجه کش رفتن پسوردهای اون نشه

    Enable Password Protection : اگه می خواین فقط خودتون از این برنامه استفاده کنین می تونید با انتخاب یک کلمه عبور اون رو فقط مختص به خودتون بکنید تا شخص دیگه ای غیر از شما نتونه از برنامه استفاده کنه

    Disable Password : با زدن این کلید و وارد کردن پسورد قبلی میتونید پسورد رو (در صورت وجود) از روی برنامه حذف کنید.

    Security Mode : Security Mode یکی از منوهای برنامست که با استفاده از اون می تونید به صورت دستی برنامه رو در حال اجرا مخفی نگه دارید و با زدن کلید Ctrl+R اون رو دوباره به حالت اول برگردونید.



    دانلود کنید اما سورس ندارم

  12. #12

    نقل قول: دانلود سورس برنامه نویسان

    توی یه پست ScrollText رو آپلود کرده بودن
    من اونو پیشرفته ترشو درست کردم و اینجا میذارم
    که خاصیت جابجایی نوشته به 3 سمت و امکان تغییر رنگ پس زمینه و سرعت جابجایی رو میشه توی این تنظیم کرد
    فایل های ضمیمه فایل های ضمیمه

  13. #13
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539
    اینم سورس زیبایی که عدد رو به حرف تبدیل می کنه هم فارسی هم انگلیسی

    اینم یک سورسی که یکی از دوستان ولی نمی دونم کی جالب بود گذاشتم
    سورسی که تمام امکانات یک کد تلفن داره

    اینم 2 تا سورس حسابداری و انبار داری زیبا که کار دوستان گلمه

    اینم یک سورس ماشین حساب پیشرفته

    این سورس اکونت سایز ویندوز xp کاملاً فارسی

    مژده اینم سورس VBDecompiler که خیلی ها دونبالشن

    اینم یک سورس Chocolate_Mail که کارش خیلی جالبه
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Mbt925 : یک شنبه 04 مرداد 1388 در 16:54 عصر

  14. #14

    نقل قول: دانلود سورس برنامه نویسان

    یه سری از نرم افزارامو میذارم
    -----------------------
    MPs Digital Clock
    یه ساعت دیجیتال قشنگ
    -----------------------
    M_Merlin Control
    مثالی برای کنترل کاراکتر های ویندوز
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله M_P_1374 : جمعه 02 مرداد 1388 در 12:20 عصر

  15. #15

    نقل قول: دانلود سورس برنامه نویسان

    بازم هست
    -----------------------
    MPs Random Chracters
    برای تولید کارکتر در بازه های مختلف
    -----------------------
    MPs Mouse Capturing
    یکی از قابلیت ها نوع Variant
    -----------------------
    MPs Screen Savers
    7-8 تا اسکرین سیور که از توابع ریاضی پیروی میکنن
    -----------------------
    در ضمن کاری داشتین میتونین روی من حساب کنین سعی میکنم تا اونجایی که عقلم جواب میده کمک کنم
    فایل های ضمیمه فایل های ضمیمه

  16. #16

    نقل قول: دانلود سورس برنامه نویسان

    کار با بارکد خوان 1
    فایل های ضمیمه فایل های ضمیمه

  17. #17

    نقل قول: دانلود سورس برنامه نویسان

    کار با بارکد خوان 2
    فایل های ضمیمه فایل های ضمیمه

  18. #18

    نقل قول: دانلود سورس برنامه نویسان

    تعدادی ProgressBar جالب و جدید
    فایل های ضمیمه فایل های ضمیمه

  19. #19

    نقل قول: دانلود سورس برنامه نویسان

    چند نوع Shape زیبا و مفید
    فایل های ضمیمه فایل های ضمیمه

  20. #20

    نقل قول: دانلود سورس برنامه نویسان

    چند نوع MsgBox زیبا
    فایل های ضمیمه فایل های ضمیمه

  21. #21

    نقل قول: دانلود سورس برنامه نویسان

    چند نمونه Button
    نمیدونم تکراریه یا خیر؟!
    فایل های ضمیمه فایل های ضمیمه

  22. #22

    نقل قول: دانلود سورس برنامه نویسان

    و بالاخره این هم چند نمونه سورس OCX
    فایل های ضمیمه فایل های ضمیمه

  23. #23
    کاربر دائمی آواتار MBG73
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    Canada-Frederecton
    سن
    30
    پست
    138

    Thumbs up نقل قول: دانلود سورس برنامه نویسان

    نمایش مقدار حافظه فیزیکی و مجازی با ویژوال بیسیک


    این برنامه با استفاده از API مقدار حافظه فیزیکی و مجازی و ... را برایتان نمایش می ده .



    (DOWNLOAD (22.1 KB

  24. #24
    کاربر دائمی آواتار MBG73
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    Canada-Frederecton
    سن
    30
    پست
    138

    Thumbs up نقل قول: دانلود سورس برنامه نویسان

    جلوگیری از اجرای مجدد یک برنامه

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


    Private Sub Form_Load()
    If App.PrevInstance = True Then
    Dim Result As Integer
    Result = MsgBox("برنامه در حال اجراست", vbInformation, "Warnnig")
    Unload Me
    End If
    End Sub


  25. #25
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539
    با سلام این یک سورس توپ که یکی از دوستان در خواست کرده بود
    سورس چت کردن تو فضای شبکه حتی اینترنت ( سرعت بالا ) با همراه اسکین بسیار زیبا


    سلام دوست گرامی Abolfazl Hidden
    من این سورس رو داشتم ببین به دردت می خوره

    سورس زیبای FindUserPassword برای پیدا کردن کلمه عبور ویندوز برای هر نوع کاربر در سیستم
    امکانات این سورس جستحو کردن با اعداد و حروف و علامت های (@,#,% ,....) که هم می توان هر حالت را به طور جداگانه جستجو کنیم و یا هر 3 مورد را همزمات

    دانلود
    رمز عبور: www.jadougar.ir

    بزرگترین بانک خطای مودم
    ADSL و ِ.......
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Mbt925 : شنبه 28 شهریور 1388 در 13:08 عصر

  26. #26
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539

    نقل قول: آموزش برنامه نویسان

    کنترل Internet Transfer - قسمت اول

    مقدمه : کنترل Internet Transfer نسبت به کنترل WebBrowser که در روزهاي قبلي معرفي شد در سطح پايينتري قرار دارد . اين کنترل با استفاده از دو پروتکل HTTP و FTP مي تواند داده ها را منتقل کند . اين کنترل زمانيکه از پروتکل HTTP استفاده مي کند با همان روش کنترل WebBrowser به سرويس دهنده صفحات وب متصل مي شود اما بجاي آنکه صفحه وب را نمايش دهد متن Html صفحه را بازيابي مي کند . همچنين زمانيکه اين کنترل از پروتکل FTP استفاده مي کند قادرست فايلها را بين کامپيوترهاي روي شبکه منتقل سازد .
    اتصالات HTTP : همانطور که مي دانيد ، پروتکل HTTP استاندارد وب مي باشد . صفحات وب با زبان Html نوشته مي شوند و انتقال آنها از server به client توسط پروتکل HTTP صورت مي گيرد .
    متد OpenURL : ساده ترين راه استفاده از کنترل IT متد OpenURL است . شکل کلي اين متد بصورت زير است :
    Inet.OpenURL(url,DataType)x
    که url آدرس صفحه وب و DataType نوع داده بازيابي شونده است و دو مقدار icString ( داده متني ) يا icByteArray ( داده باينري ) را مي گيرد . مقدار بازگشتي اين متد ، داده هاي منتقل شده است .
    اين متد بصورت سنکرون کار مي کند يعني در تمام مدت کار آن برنامه نمي تواند کار ديگري انجام دهد . اگر از icByteArray استفاده کنيد بايد مقدار بازگشتي آنرا در يک ارايه بايت قرار دهيد .
    مثال 1 : از بخش Component در منوي Project مورد Microsoft Internet Transfer Control 6.0 را به toolbar خود اضافه کنيد . سپس يک کنترل IT روي فرم قرار دهيد و همچنين يک Rich Textbox و يک دکمه روي فرم قرار دهيد و کد زير را براي event مربوط به کليک دکمه بنويسيد :
    TextBox.text=Inet.OpenURL(“www.microsoft.com”,icString)x
    مثال 2 : کد زير داده هاي باينري را از اينترنت خوانده و آنها را در يک فايل ذخيره مي کند :
    Dim b() as byte
    B()=Inet.OpenURL(ftp://ftp.microsoft.com/test.zip,icByteArray)x
    Open App.path & “\test.zip” For Access Write As #1
    Put #1,b()x
    Close #1

    رويداد StateChanged : کنترل IT فقط يک event دارد که StateChanged مي باشد . اين event زماني روي مي دهد که State کنترل تغيير کند . State هر اتفاقي است که برنامه بايد از آن مطلع شود . تعريف کلي اين event بصورت زير است :
    Inet_StateChanged(ByVal NewState As Integer)x
    که NewState مقداري است که حالت جديد را بيان مي کند . مقادير ممکن اين پارامتر عبارتند از :
    icNone : حالت تغيير نکرده است .
    icResolvingHost : در حال جستجوي آدرس IP کامپيوتر موردنظر .
    icHostResolved : آدرس IP کامپيوتر موردنظر يافت شد .
    icConnecting : در حال اتصال به کامپيوتر مقصد
    icConnected : اتصال به کامپيوتر مقصد برقرار شد .
    icRequesting : در حال ارسال درخواست به کامپيوتر مقصد
    icRequestSent : درخواست به کامپيوتر مقصد ارسال شد .
    icReceivingResponse : در حال دريافت پاسخ از کامپوتر مقصد .
    icResponseReceived : پاسخ کامپيوتر مقصد دريافت شد .
    icDisconnecting : در حال قطع اتصال با کامپيوتر مقصد .
    icDisconnected : اتصال مقصد با موفقيت قطع شد .
    icError : در ارتباط با کامپيوتر مقصد خطايي رخ داده است .
    icResponseCompleted : تکميل پاسخ – تمام داده ها دريافت شد .
    تشخيص خطا در عمليات انتقال داده اهميت بالايي دارد و StateChanged در صورت بروز هر خطايي مقدار icError را برمي گرداند و اطلاعات خطا را در دو خاصيت ResponseCode و ResponseInfo برمي گرداند .
    انتقال داده بصورت آسنکرون : کنترل IT متدهاي انعطاف پذير ديگري هم دارد که آسنکرون هستند و اجازه مي دهند تا همزمان با عمليات انتقال داده ، برنامه به وظايف ديگري هم بپردازد . اين متدها با استفاده از Event Driven Model کار مي کنند . بدين معني که وقتي برنامه درخواست انتقال داده اي را مي دهد کنترل IT درخواست را در زمينه برنامه انجام مي دهد و برنامه ازاد است تا به کارهاي ديگرش بپردازد . زمانيکه داده ها بازيابي شود ، داده ها را از بافر داخلي کنترل IT مي خواند .
    متد GetChunk : در عمليات انتقال آسنکرون ، بايستي داده را توسط اين متد از بافر داخلي کنترل IT بگيريم :
    Inet.GetChunk(datasize[,datatype])x
    که پارامتر datasize از نوع long بوده و تعيين مي کند چند بايت از بافر خوانده شود و پارامتر اختياري datatype نوع داده را مشخص مي کند و مي تواند مقادير icString و icByteArray را بگيرد .
    زمانيکه StateChanged وارد حالتهاي icResponseReceived و يا icResponseCompleted شد بايد از GetChunk استفاده کنيد . بدين صورت که از يک حلقه استفاده مي کنيم تا کل بافر را بخوانيم :
    Private Sub Inet_StateChanged(Byval State as Integer)x
    Dim temp1,temp2
    Select Case State
    Case icResponseCompleted
    temp1=””x
    temp2=””x
    Do
    temp1=Inet.GetChunk(512,icString)x
    temp2=temp2 & temp1
    Loop Until temp1=””x
    End Select
    End Sub
    براي بالابردن کارايي ، بهتر است از قطعات کوچک ( بين 512 تا 1024 بايتي ) استفاده کنيد .
    متد Execute : و اما انعطاف پذيرترين متد کنترل IT ، متد Execute است . فرمت کلي اين متد بصورت زير است :
    Inet.Execute(url,Command,Data,RequestHeaders)x
    که url آدرس مقصد ، Command فرماني است که به کامپيوتر مقصد داده مي شود و Data و RequestHeaders اطلاعات اضافي لازم براي اجراي فرمان داده شده است . فرمانهاي Command همان فرمانهاي HTTP هستند که عبارتند از :
    - GET : دريافت داده ها از کامپيوتر مقصد
    - HEAD : دريافت اطلاعات header از کامپيوتر مقصد
    - POST : ارسال اطلاعات لازم براي تکميل درخواست
    - PUT : ارسال فايل براي کامپيوتر ميزبان ( upload )
    فرمان GET پرکاربردترين فرمان متد Execute است و داده هاي خوانده شده را در بافر داخلي بافر کنترل IT قرار مي دهد تا بتوان با متد GetChunk آنها را بازيابي نمود .
    مثال :
    ساير خواص کنترلIT :
    - AccessType : نوع دسترسي کنترل IT به اينترنت را مشخص مي کند و سه مقدار مي تواند بگيرد :
    icUseDefault : استفاده از تنظيمات رجيستري براي دسترسي به اينترنت
    icDirect : اتصال مستقيم کنترل IT به اينترنت
    icNamedProxy : اتصال به اينترنت توسط پروکسي
    - Document : نام صفحه پيش فرض که در متد Execute از آن استفاده مي شود . اگر به متد Execute پارامتر url را ندهيد از اين صفحه پيش فرض استفاده مي کند .
    - Password : کلمه رمز عبور کامپيوتر ميزبان FTP
    - Procotol : نوع پروتکل مورد استفاده در متد Execute را مشخص مي کند و 5 مقدار مي تواند بگيرد :
    icUnknown : نامعلوم
    icDefault : پروتکل پيش فرض
    icFTP : پروتکل FTP
    icHTTP : پروتکل HTTP
    icHTTP : پروتکل حفاظت شده HTTP
    - Proxy : نام ميزبان پروکسي
    - RequestTimeOut : مدت زماني که کنترل IT صبر مي کند تا اطلاعات را دريافت کند . اگر اين خاصيت صفر باشد کنترل تا هر زمان که لازم باشد براي دريافت پاسخ صبر مي کند . در حالت سنکرون ( متد OpenURL ) بعد از سپري شدن اين مدت زمان ، يک خطا توليد مي شود و در حالت آسنکرون ( متد Execute ) رويداد StateChanged مقدار خطا را بر مي گرداند
    - ResponseCode : بعد از بروز حالت icError اين خاصيت کد خطا را مي دهد .
    - ResponseInfo : توضيحي درباره خطا
    - StillExecuting : اگر True باشد يعني کنترل مشغول انجام کار است .
    - URL : آدرس مقصد در متدهاي OpenURL و يا Execute
    - UserName : نام کاربر براي ورود به کامپيوتر ميزبان FTP

    کنترل Internet Transfer - قسمت دوم


    اتصالات 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



  27. #27
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539

    نقل قول: دانلود سورس برنامه نویسان

    آموزش DirectX Input - بخش 1,2,3
    گرفتن اطلاعات ورودی از کيبرد - ۱

    مقدمه


    Direct Input 8 همانطور که از نامش مشخص است به شما اجازه می دهد که بتوانيد برنامه هايي بنويسيد که توسط هر نوع دستگاه ورودی کنترل شود .
    Direct Input 8 دارای چندين مزيت نسبت به استفاده از کنترلهای ورودی خود ويژوال بيسيک دارد – کنترلهايي مثل Form_KeyUp, Form_KeyDown, Form_MouseMove - و همچنين قابليت کنترل بيشتری نسبت به توابع استاندارد Win32 از قبيل GetCursorPos, GetKeyState دارد .
    Direct Input 8 سريعتر ، کاراتر و قدرتمند تر بوده و برای ساخت بازيها طراحی شده بنابراين باعث کندی برنامه ها نخواهد شد .

    چگونگی کار با Direct Input 8 برای گرفتن ورودی از کيبرد

    دو روش برای استفاده از کيبرد در DirectX8 وجود دارد : روش polling و روش event-based که هر دو دارای مزايا و معايبی هستند .
    بطور کلی در اغلب طراحيها از روش event-based استفاده می شود زيرا کار با آن راحت تر اسن . در اين روش هر پيغام فرستاده شده ازطرف دستگاه ورودی log می شود و برنامه نيازی به هيچگونه پردازشی بمنظور منتظر ماندن برای يک پيغام از طرف ورودی ندارد ، بنابر اين کاراتر است . در روش polling کنترل کمی دقيقتر و راحتر است .
    اگر در مورد برنامه نويسی بر مبنای polling و بر مبنای event اطلاعات کافی نداريد می توانيد از منابع موجود در سايتهايي چون
    Gamasutra و GameDev استفاده کنيد .

    روش Polling

    مراحل اين روش عبارتند از :

    1 – تعريفات Declerations : يک فرم ايجاد کرده و يک TextBox به نام txtOutput با خصوصيات Multiline ، Locked و Vertical Scroll Bar در آن قرار دهيد . کدهای زير را در بخش کدنويسی اين فرم بنويسيد :
    Private Const UsePollingMethod As Boolean = True
    Private Const UseEventMethod As Boolean = False
    ‘نکته مهم اينست که تنها يکی از دو ثابت فوق بايستی True باشد .
    Private bRunning As Boolean
    ‘اين متغير برای polling استفاده می شود
    Private DX As DirectX8
    Private DI As DirectInput8
    ‘تعريف شی اصلی DirectX و شی DirectInput
    Private DIDevice As DirectInputDevice8
    Private DIState As DIKEYBOARDSTATE
    ‘اين دو شی برای دسترسی به دستگاه ورودی ( کيبرد ) استفاده می شوند
    Private KeyState(0 To 255) As Boolean
    ‘آرايه ای برای تشخيص فشرده شدن کليد
    Private Const BufferSize As Long = 10
    ‘ سايز بافر نگهدارنده event ها . در روش event-based اين مقدار برابر يک و در روش polling برابر 10 تا 20 است ( بسته به سرعت حلقه بازی )
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)x
    ‘ تابع Sleep برای متوقف کردن حلقه polling در صورت بالا بودن نرخ ورودی


    2- مقدار دهی اوليه Initialisation : اين بخش سه مرحله دارد :
    در مرحله اول اشيا و Device ها ساخته می شوند .
    در مرحله دوم تنظيمات مربوط به Device انجام می شود .
    در مرحله سوم به Device می گوئيم که می خواهيم شروع به استفاده از آن کنيم .

    در Form_Load کدهای زير را بنويسيد :
    Me.Show
    Dim I As Long
    Dim DevProp As DIPROPLONG
    Dim DevInfo As DirectInputDeviceInstance8
    Dim pBuffer(0 To BufferSize) As DIDEVICEOBJECTDATA
    If UsePollingMethod And UseEventMethod Then
    MsgBox "You must select only one of the constants before running"x
    Unload Me
    End
    End If

    If UsePollingMethod Then txtOutput.Text = "Using Polling Method" & vbCrLf
    If UseEventMethod Then txtOutput.Text = "Using Event Based Method" & vbCrLf

    ‘مقداردهی اوليه روش انتخاب شده
    Set DX = New DirectX8
    Set DI = DX.DirectInputCreate
    Set DIDevice = DI.CreateDevice("GUID_SysKeyboard")x

    DIDevice.SetCommonDataFormat DIFORMAT_KEYBOARD
    DIDevice.SetCooperativeLevel frmMain.hWnd, DISCL_BACKGROUND Or ISCL_NONEXCLUSIVE

    ‘برپاسازی بافر
    DevProp.lHow = DIPH_DEVICE
    DevProp.lData = BufferSize
    DIDevice.SetProperty DIPROP_BUFFERSIZE, DevProp

    ‘ به دايرکت ايکس می گوئيم که می خواهيم از دستگاه ورودی استفاده کنيم
    DIDevice.Acquire

    ‘استخراج اطلاعاتی در مورد دستگاه ورودی
    Set DevInfo = DIDevice.GetDeviceInfo()x
    txtOutput.Text = txtOutput.Text & "Product Name: " & DevInfo.GetProductName & vbCrLf
    txtOutput.Text = txtOutput.Text & "Device Type: " & DevInfo.GetDevType & vbCrLf
    txtOutput.Text = txtOutput.Text & "GUID: " & DevInfo.GetGuidInstance & vbCrLf


    ‘در صورتی که بخواهيم به برنامه خاتمه بدهيم کدهای زير را می نويسيم
    DIDevice.Unacquire
    Set DIDevice = Nothing
    Set DI = Nothing
    Set DX = Nothing
    Unload Me
    End


    3 – گرفتن ورودی از کيبرد : در اين بخش فرض کنيد بخواهيم يک بازی را در يک حلقه Do-Loop شبيه سازی کنيم . در اين حلقه هر بار فشرده شدن کليدهای کيبرد را چک می کنيم :
    If Not Err.Number Then bRunning = True

    Do While bRunning

    ‘دريافت اطلاعات شامل خواندن وضعيت کيبرد ، خواندن اطلاعات بافر و سپس خطا
    DIDevice.GetDeviceStateKeyboard DIState
    DIDevice.GetDeviceData pBuffer, DIGDD_DEFAULT
    If Err.Number = DI_BUFFEROVERFLOW Then
    Msgbox(“BUFFER OVERFLOW (Compensating)...")x
    GoTo ENDOFLOOP:
    End If
    ‘بررسی فشرده شدن کليدها
    For I = 0 To 255
    If DIState.Key(I) = 128 And (Not KeyState(I) = True) Then
    txtOutput.Text = txtOutput.Text & "{ DOWN } " & KeyNames(CInt(I))& vbCrLf
    txtOutput.SelStart = Len(txtOutput.Text)x
    KeyState(I) = True
    End If
    Next I

    ‘بررسی رها شدن کليد
    For I = 0 To BufferSize
    If KeyState(pBuffer(I).lOfs) = True And pBuffer(I).lData = 0 Then
    KeyState(pBuffer(I).lOfs) = False
    txtOutput.Text = txtOutput.Text & "{ UP } " & KeyNames(CInt(pBuffer(I).lOfs)) & vbCrLf
    txtOutput.SelStart = Len(txtOutput.Text)x
    End If
    Next I

    Sleep (50)x
    DoEvents
    ENDOFLOOP:
    Loop

    در کد فوق يک تابع KeyName وجود دارد که نام کليد فشارداده شده را بر می گرداند . بخشی از اين تابع را در زير می بينيد :

    Function KeyNames(iNum As Integer) As String

    Dim aKeys(0 To 255) As String

    aKeys(1) = "DIK_ESCAPE"
    aKeys(2) = "DIK_1 On main keyboard"x
    aKeys(3) = "DIK_2 On main keyboard"x
    aKeys(4) = "DIK_3 On main keyboard"x
    aKeys(5) = "DIK_4 On main keyboard"x
    aKeys(6) = "DIK_5 On main keyboard"x
    aKeys(7) = "DIK_6 On main keyboard"x
    aKeys(8) = "DIK_7 On main keyboard"x
    aKeys(9) = "DIK_8 On main keyboard"x
    aKeys(10) = "DIK_9 On main keyboard"x
    aKeys(11) = "DIK_0 On main keyboard"x
    aKeys(12) = "DIK_MINUS On main keyboard"x
    aKeys(13) = "DIK_EQUALS On main keyboard"x
    aKeys(14) = "DIK_BACK BACKSPACE"x
    aKeys(15) = "DIK_TAB"x
    aKeys(16) = "DIK_Q"x
    aKeys(17) = "DIK_W"x
    aKeys(18) = "DIK_E"x
    aKeys(19) = "DIK_R"x
    aKeys(20) = "DIK_T"x
    .
    .
    .
    KeyNames = aKeys(iNum)x

    End Function

    =======================

    موضوع : کنترل کيبرد با روش Event-Based

    مقداردهی اوليه و مفاهيم اصلی در روش Event-Based مشابه روش Polling است و تنها بايستی ساختار بخش جمع آوری داده و حلقه پردازشی را تغيير دهيم . مراحل کار با روش Event-Based بصورت زير می باشد :

    ۱ - تعاريف و مقداردهی اوليه : در بخش تعاريف دو تعريف جديد بصورت زير داريم :

    Dim hEvent As Long
    Implements DirectXEvent8

    hEvent يک پارامتر هندل برای يک می باشد .
    نکته : زمانی که کليدی فشرده يا رها می شود ، DirectX اين امر با فراخوانی تابعی به اسم DirectXEvent8_DXCallback به برنامه شما اطلاع می دهد . ( اين نوع توابع را Call Back Function گويند ) . اين تابع به برنامه شما می گويد که يک رويداد اتفق افتاده است و بايستی بافرها را چک کند .

    تنها تغييری که در بخش مقداردهی اوليه نياز است ، برپاسازی يک event می باشد :

    If UseEventMethod Then
    hEvent = DX.CreateEvent(frmMain)x
    DIDevice.SetEventNotification hEvent
    End If

    در انتهای برنامه نيز کد زير را برای از بين بردن event اضافه کنيد :

    If hEvent <> 0 Then DX.DestroyEvent hEvent


    ۲ - استفاده از event : برای اين بخش کدهايي را در داخل تابع DirectXEvent8_DXCallback می نويسيم :

    Private Sub DirectXEvent8_DXCallback(ByVal eventid As Long)x
    'متغيرهای موردنياز
    Dim I As Long
    Dim pBuffer(0 To BufferSize) As DIDEVICEOBJECTDATA
    If eventid = hEvent Then
    If DIDevice Is Nothing Then Exit Sub
    'درصورت رخ دادن event داده را از کيبرد می گيريم
    DIDevice.GetDeviceStateKeyboard DIState
    DIDevice.GetDeviceData pBuffer, DIGDD_DEFAULT
    'چک کردن تمام کليدها برای اينکه متوجه شويم چه اتفاقی افتاده است
    For I = 0 To 255
    'عدد ۱۲۸ نشان دهنده key_down event است .
    If DIState.Key(I) = 128 Then
    If pBuffer(0).lData = 128 Then
    txtOutput.Text = txtOutput.Text & "{ DOWN } " & KeyNames(CInt(I)) & vbCrLf
    End If
    End If
    'کد فوق برای بررسی فشرده شدن يک کليد بود . کد زير رها شدن کليد را بررسی می کند
    If (pBuffer(0).lData = 0 And pBuffer(0).lOfs = I) Then
    txtOutput.Text = txtOutput.Text & "{ UP }" & KeyNames(CInt(I)) & vbCrLf
    End If

    txtOutput.SelStart = Len(txtOutput.Text)x
    Next I
    End If
    End Sub

    =====================

    موضوع : کنترل ماوس با DirectX Input

    مقدمه :

    برای استفاده از ماوس در برنامه های مالتی مديا و بازيها همانند کی برد می توانيم از امکانات دايرکت ايکس استفاده کنيم . روش کنترل ماوس توسط DirectX Input بسيار ساده بوده و مشابه کنترل کيبرد می باشد بنابراين درصورتی که دو درس گذشته را نخوانده اين پيشنهاد می کنم ابتدا آنها را مطالعه کنيد .

    برپاسازی Device :

    علاوه بر متغيرهايي که در بخش کنترل کيبرد تعريف شد بايستی متغيرهای جديد زير را نيز در ابتدای برنامه تان تعريف کنيد :

    Private Const mSpeed As Single = 2
    Private Const BufferSize As Long = 10
    Private mPosition As Point

    mSpeed مقدار سرعت حرکت کرسر ماوس را مشخص می کند .
    BufferSize سايز بافر DI می باشد .
    mPosition موقعيت جاری کرسر ماوس را نشان می دهد .

    در مرحله بعدی بايستی مقداردهي های اوليه لازم را انجام دهيد :

    Set DIDevice = DI.CreateDevice("guid_SysMouse")x
    Call DIDevice.SetCommonDataFormat(DIFORMAT_MOUSE)x
    Call DIDevice.SetCooperativeLevel(frmMain.hWnd, DISCL_FOREGROUND Or DISCL_EXCLUSIVE)x

    تفاوت عمده کدهای فوق با کدهای مقداردهی اوليه در بخش کی برد آنست که cooperativelevel تغيير کرده است . در اينجا گفته شده که ما می خواهيم از ماوس بصورت انحصاری در برنامه استفاده کنيم . اين حالت برای برنامه های window-base مناسب نيست و بهترست از آن در بازيهايي که بصورت full screan هستند استفاده کنيد .

    خواندن ورودی از ماوس :

    در اين بخش می توانيد هم از روش polling و هم event-based استفاده کنيد . نکته مهمی که در اينجا وجود دارد آنست که Direct Input فقط حرکت داده شدن ماوس و کليک شدن يک دکمه را به شما اطلاع می دهد و برای تشخيص حالتهای double click و single click خودتان بايستی کد بنويسيد برای مثال اگر فاصله زمانی بين دو کليک کمتر از ۴۰ ميلی ثانيه باشد آنگاه اين يک double click بوده است .
    کد زير حرکت داده شدن ماوس و کليک يکی از سه دکمه آنرا اطلاع می دهد :

    Dim DevData(1 To BufferSize) As DIDEVICEOBJECTDATA
    Dim nEvents As Long
    Dim I As Long
    nEvents = DIDevice.GetDeviceData(DevData, DIGDD_DEFAULT)x
    For I = 1 To nEvents
    Select Case DevData(I).lOfs
    Case DIMOFS_X
    mPosition.x = mPosition.x + (DevData(I).lData * mSpeed)x
    If mPosition.x < 0 Then mPosition.x = 0
    If mPosition.x > frmMain.ScaleWidth Then mPosition.x = frmMain.ScaleWidth
    imgCursor.Top = mPosition.y
    imgCursor.Left = mPosition.x
    lablel(1).Caption = "Mouse Coordinates: [" & mPosition.x & ", " & mPosition.y & "]"x
    Case DIMOFS_Y
    mPosition.y = mPosition.y + (DevData(I).lData * mSpeed)x
    If mPosition.y < 0 Then mPosition.y = 0
    If mPosition.y > frmMain.ScaleHeight Then mPosition.y = frmMain.ScaleHeight
    imgCursor.Top = mPosition.y
    imgCursor.Left = mPosition.x
    lablel(1).Caption = "Mouse Coordinates: [" & mPosition.x & ", " & mPosition.y & "]"x
    Case DIMOFS_BUTTON0
    label(2).Caption = "Button 0 State: " & IIf(DevData(I).lData = 0, "Up", "Down")x
    Case DIMOFS_BUTTON1
    label(3).Caption = "Button 1 State: " & IIf(DevData(I).lData = 0, "Up", "Down")x
    Case DIMOFS_BUTTON2
    label(4).Caption = "Button 2 State: " & IIf(DevData(I).lData = 0, "Up", "Down")x
    Case DIMOFS_BUTTON3
    label(5).Caption = "Button 3 State: " & IIf(DevData(I).lData = 0, "Up", "Down")x
    End Select
    Next I

    برای استفاده از کد فوق در روش Polling ، بايستی آنرا در يک حلقه Do while-Loop قرار دهيد .
    برای استفاده از کد فوق در روش Event-Based ، بايستی آنرا درون روتين DirectXEvent8_DXCallback قرار دهيد .




  28. #28
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539

    نقل قول: دانلود سورس برنامه نویسان

    Server-Side ActiveX Dll Programming - بخش 1,2,3,4,5,6
    مقدمه
    با قراردادن کدهای ASP درون component های server side ، برنامه نويس نه تنها می تواند از قابليت های ويژوال بيسيک در نوشتن کدهای خود استفاده کند بلکه سرعت load صفحات ASP وی نيز افزايش می يابد . همچنين اين روش راهکاری برای کپسوله سازی و حفاظت از کدهای ASP می باشد .
    در اين درس يک نمونه اکتيويکس server-side را توسط ويژوال بيسيک ايجاد نموده و از آن در صفحات ASP استفاده خواهيم کرد .

    اجزای Server-Side
    اکتيوکس های server-side بر خلاف اکتيوکس های clict-side بر روی سرور وب اجرا می شوند و بنابراين بايستی وب سرور مورد استفاده با اين تکنولوژی سازگار باشد . زمانيکه وب سرور دستوری را برای پردازش يکسری اطلاعات درون يک صفحه ASP دريافت می کند دستوراتی که درون تگهای <%%>قرار دارند بررسی می شوند . با استفاده از ويژوال بيسيک می توان يک اکتيوکس dll ساخت که جايگزين اين کدهای ASP شود . در اينصورت تنها کافيست يک شی از کلاسهای موجود در اين dll ساخته شود تا بتوان از قابليتهای آن استفاده نمود .

    ايجاد ActiveX Dll در ويژوال بيسيک
    برای ساخت يک اکتيواکس ويژوال بيسيک را اجرا کرده و توسط گزينه New Project پروژه ای از نوع ActiveX Dll ايجاد کنيد . پس از اينکه شما روی آيکون ActiveX dll کليک کنيد ويژوال بيسيک پروژه ای پيش فرض بهمراه ي: کلاس خالی برای شما ايجاد می کند . می توانيد هم نام پروژه و هم نام کلاس را تغيير دهيد همچنين می توانيد کلاسهای ديگری به پروژه اضافه کنيد .
    حال برای اينکه بتوان دستورات ASP را استفاده نموده بايستی از منوی Project وارد بخش References شده و مورد Microsoft Active Server Pages Object Library را انتخاب کنيد .

    استفاده از متدهای ASP در کلاس های ActiveX
    بمنظور استفاده از متدهای ASP در کلاسهای ActiveX بايستی ابتدا روتينی به اسم OnStartPage در داخل کلاس تعريف کنيد . ساختار اين روتين بصورت زير است :
    Public Sub OnStartPage(PassedScriptingContext As ScriptingContext)x

    End Sub

    زمانيکه کاربر يک صفحه ASP را که شامل شی ای از کلاس ما باشد فراخوانی کند IIS ، SciptingContext را به شی ما پاس می دهد . ScriptingContext حاوی تمام متدها و خصوصيات ASP می باشد که برای استفاده در دسترس هستند . حال بايستی در روتين OnStartPage تمام اشيای ASP که توسط ScriptingContext در دسترس هستند را به اشيايي از همان نوع assign کنيم تا در صورت لزوم بتوانيم از آنها استفاده نمائيم . بنابراين قبل از نوشتن روتين OnStartPage متغيرهای زير را تعريف می کنيم :
    Private MyScriptingContext As ScriptingContext
    Private MyApplication As Application
    Private MyRequest As Request
    Private MyResponse as Response
    Private MyServer As Server
    Private MySession As Session

    حال در روتين OnStartPage بايستی اشيا فوق را مقداردهی کنيد :
    Public Sub OnStartPage(PassedScriptingContext As ScriptingContext)x
    Set MyScriptingContext=PassedScriptingContext
    Set MyApplication=MyScriptingContext.Application
    Set MyRequest=MyScriptingContext.Request
    Set MyResponse=MyScriptingContext.Response
    Set MyServer=MyScriptingContext.Server
    Set MySession=MyScriptingContext.Session
    End Sub


    از تمام اشيا فوق مشابه نوشتن صفحات ASP می توانيم در متدهايي که برای کلاس می نويسيم استفاده کنيم . برای مثال کد ASP زير را در نظر بگيريد :

    <%
    MyTempVar=Request.Form(“username”)x
    Response.Write(“You Entered : “ & MyTempVar)x
    %>

    حال فرض کنيد می خواهيم همين دستورات را در يک متد از کلاس بنويسيم :
    Public Sub MyMethod()x
    Dim MyTempVar As String
    MyTempVar=MyRequest.Form(“username”)x
    MyResponse.Write(“You Entered : “ & MyTempVar)x
    End Sub

    نکته ديگری که بايد در نظر داشت نوشتن روتينی است که در زمان پايان کار با شی فراخوانی می شود . اين روتين OnEndPage نام دارد و در آن اشيايي که در روتين OnStartPage مقداردهی کرده ايم را آزاد می کنيم :
    Public Sub OnEndPage()x
    Set MyScriptingContext=Nothing
    Set MyApplication= Nothing
    Set MyRequest= Nothing
    Set MyResponse= Nothing
    Set MyServer= Nothing
    Set MySession= Nothing
    End Sub

    پس از نوشتن متدهای موردنظرتان پروژه را ذخيره کنيد . حال برای کامپايل پروژه از منوی File مورد File/Make Dll را انتخاب نمائيد تا پروژه کامپايل شده و فايل dll موردنظرتان ساخته شود . اين فايل را در دايرکتوريي که صفحات ASP شما در آنجا قرار دارد کپی کنيد .
    نکته ای که بايد مورد توجه قرار داد اينست که در صورتيکه می خواهيد از اين dll در سيستم ديگری استفاده کنيد ابتدا بايستی آنرا رجيستر کنيد . برای رجيستر کردن يک dll از برنامه regsvr32.exe موجود در دايرکتوری سيستم ويندوز استفاده می شود :
    Regsvr32.exe C:\InetPub\wwwroot\Example\Example.dll

    استفاده از ActiveX Dll در صفحات ASP
    برای استفاده از کلاس نوشته شده در فايل dll در صفحات ASP ابتدا بايستی يک شی از آن کلاس ايجاد کنيم :

    <%
    Set ObjRefrence = Server.CreateObject(“ProjectName.ClassName”)x
    %>

    پس از ساخت شی می توانيم از متدهای موجود در کلاس استفاده کنيم
    ----------------------------------
    +COM چيست ؟
    روشی که برای دسترسی به Object های ASP در درس گذشته بيان شد تا IIS 3.0 استفاده می شد . اين روش استفاده از متدهای OnStart و OnEnd بود . البته گرچه هنوز اين روش از سوی IIS ورژن ۵ پشتيبانی می شود اما دارای يک مشکل است :
    اگر بخواهيد از يک کلاس در کلاس ديگری استفاده کنيد نمی توانيد در کلاس مورد استفاده ، دو متد ذکر شده را قرار دهيد و بنابراين به اشيای ASP دسترسی نخواهيد داشت .
    راه حلی که برای اين مشکل ارائه شد تکنولوژی +COM می باشد .
    بطور خلاصه در اين تکنولوژی شیی به اسم ObjectContext وجود دارد که از طريق آن می توانيد به اشيای ASP دسترسی داشته باشيد .
    برای استفاده از تکنولوژی +COM ابتدا از منوی Project ، References را انتخاب کرده و مورد زير را انتخاب کنيد :
    COM+ Services Type Library
    سپس در کلاسهای خود متغيرهای زير را تعريف کنيد :

    Dim Request As ASPTypeLibrary.Request
    Dim Response As ASPTypeLibrary.Response
    Dim Server As ASPTypeLibrary.Server
    Dim Session As ASPTypeLibrary.Session
    Dim Application As ASPTypeLibrary.Application

    حال در متد Initialize هر کلاس بايستی شی ObjectContext را تعريف کرده و مقداردهی کنيد . سپس متغيرهای بالا را با استفاده از اين شی مقداردهی نمائيد :

    Private Sub Class_Initialize()x
    Dim objCtx As ObjectContext
    Set objCtx = GetObjectContext
    Set Request = objCtx.item("Request")x
    Set Response = objCtx.item("Response")x
    Set Server = objCtx.item("Server")x
    Set Session = objCtx.item("Session")x
    Set Application = objCtx.item("Application")x
    End Sub


    + موضوع درس بعد : دسترسی به Database در کلاسهای اکتيوايکس Server-Side

    پاسخ به سوالات شما :
    ۱ - چه جوری دکمه ها و ليست باکس ها در ويژوال بيسيک را شکل اکس پی کنيم؟اصلان می شه؟
    پاسخ : ؟؟؟؟
    ۲ - تويه vb چطوری ميشه فايله اجرايیdllهاشو نخاد و بدونه اونا اجرا بشه ؟
    پاسخ : برنامه های اجرايي ويژوال بيسيک برای اجرا شدن به يکسری فايلهای ديگه نياز دارند مثلاً Vb Runtime Dll . برای اينکه به اين فايلها نيازی نباشد بايستی يک برنامه نصب setup file برای پروژه تان بسازيد تا بتوان برنامه را روی هر کامپيوتری نصب و اجرا کرد . ساده تري راه استفاده از ابزار Package & Deployment موجود در ويژوال استديو است . ابزارهای حرفه ای تر عبارتند از : InstallShield ، InstallWise ، Setup Factory و ...
    ۳ - اگه ممکنه يه توضيحی درباره ی دي کد کردن دی ال ال mpr دهيد .
    پاسخ : ؟؟؟؟
    ۴ - چطوری ميشه تو يه تکس باکس در ويژوال بيسيک فرمان داد اينتر شود يعنی به خط بعدی رود؟ ( يعنی زمانی که مولتی لاين است‌)
    پاسخ : استفاده از کاراکتر vbCrLf
    ۵ - من مي خوام با زبانهايي PHP و ASP برنامه بنويسيم ولي تمامي اين زبانها Server_side هستند و من بايد روي سرور اين كار ها رو انجام بدم من مي خوامم بدونم كه چه طوري مي تونم كامپيوتر خودمو وب سرور كنم البته يه چيزهاي مي دونم كه بايد IIS رو نصب كنم ولي نه به طور كامل خواهش مي كنم كمكم كنيد
    پاسخ : بايستی ويندوز ۲۰۰۰ يا XP نصب کرده و از IIS آنها استفاده کنيد . البته در ويندوزز ۲۰۰۰ IIS بطور اتوماتيک نصب نمی شود و بايد آنرا خودتان اضافه کنيد . برای اطلاعات بيشتر در مورد کار با IIS به کتاب ها و مراجع اينترنتی مراجعه کنيد مراجعه کنيد .

    ---------------------------------

    خلاصه ای بر چگونگی کار با بانک های اطلاعاتی ( Database ) در وی بی :
    + برای آشنايي کامل با چگونگی کار با بانک های اطلاعاتی در ويژوال بيسيک و بطور کلی Database Programming به کتاب برنامه نويسی بانک های اطلاعاتی در ويژوال بيسيک انتشارات نص رجوع کنيد .

    قبل از اينکه چگونگی نوشتن يک کلاس Database برای استفاده در ASP را آموزش دهم ، مقدمه ای بر چگونگی کار با بانک های اطلاعاتی در وی بی را شروع می کنم .
    برای کار با بانک های اطلاعاتی در ويژوال بيسيک روشها و امکانات مختلفی وجود دارد که يکی از بهترين آنها استفاده از تکنولوژی ( ADO ( ActiveX Data Object می باشد . بدون هيچ توضيحی در مورد ساختار اين تکنولوژی و نيز ساير روشهای ديگر ، به سراغ روش استفاده از اين تکنولوژی می روم :
    - برای کار با ADODB ابتدا بايستی از Reference ها مورد Microsoft ActiveX Data Object را انتخاب کرد .
    - قدم بعد تعريف يک شی ADO Connection برای اتصال به بانک اطلاعاتی است :

    Dim cn As ADODB.Connection

    - سپس بايستی اين شی ADO Connection را ايجاد نمود :

    Set cn = New ADODB.Connection

    - همچنين بايستی يک شی ADO Recordset برای گرفتن مجموعه ای از رکوردهای بانک اطلاعاتی تعريف کرد :

    Dim rs As ADODB.Recordset

    - حال بايستی اتصال به بانک اطلاعاتی را باز نمود . در اين مرحله با توجه به نوع بانک اطلاعاتی و اتصالی که می خواهيم داشته باشيم عبارت اتصال ممکن است متفاوت باشد . فرض کنيم عبارت اتصال را در يک متغير نوع String به اسم ConnString قرار دهيم :
    • در صورتی که بانک اطلاعاتی مقصد SQL Server باشد و بخواهيم بطور مستقيم و بدون استفاده از واسط ODBC به آن متصل شويم :

    ConnString=”Provider=SQLOLEDB.1;Password=yourpas sowrd;Persist Security Info=True;User ID=yourusername; Initial Catalog=yourDatabaseName;Data Source=yourServerName”

    • در صورتی که بانک اطلاعاتی مقصد SQL Server باشد و بخواهيم با استفاده از واسط ODBC به آن متصل شويم :

    ConnString=”Provider=MSDASQL.1;Password=yourpass owrd;Persist Security Info=True;UserID=yourusername;DataSource=yourODBC_ DataSourceName;Mode=ReadWrite”

    • در صورتی که بانک اطلاعاتی مقصد Access باشد :

    ConnString=” Provider=Microsoft.Jet.OLEDB.4.0;Data
    Source=yourDatabaseFilePath;Persist Security Info=False”


    حال بايستی اين اتصال را باز نمود :

    cn.Open(ConnString)x


    - قدم بعدی ايجاد شی ADO Recordset می باشد :

    Set rs = New ADODB.Recordset


    - سپس بايستی با توجه به کاری که می خواهيم با جداول آن بانک اطلاعاتی انجام دهيم يک sql query را توسط شی Recordset به آن بفرستيم :

    rs.Open yourSQLquery,cn,OpenKeyset, adLockOptimistic

    بعبارت ديگر نوع باز کردن Recordset متفاوت است و توسط query مورد نظر مشخص می شود برای مثال برای انتخاب فيلدهای يک Table :
    SELECT DISTINCT yourfields from yourtable WHERE yourcondition
    نکته : نوع قفل کردن مجموعه رکورد می تواند adLockReadOnly نيز باشد .

    - حال با استفاده از اين Recordset می توان يکسری کار را روی رکوردهای موجود در جداول انجام داد برای مثال :
    ۱ – حرکت به ابتدای مجموعه رکورد :

    rs.MoveFirst

    ۲ – حرکت در طول مجموعه رکورد :

    Do
    tmp = rs.fields(0)x
    .
    .
    .
    rs.MoveNext
    Loop Until (rs.EOF)x

    3 – بستن مجموعه رکورد و بستن اتصال به بانک اطلاعاتی :

    rs.Close
    cn.Close

    4 – حذف رکورد جاری از مجموعه رکورد :

    rs.delete

    5 - ايجاد رکورد جديد در مجموعه رکورد :

    Dim fields(RecordsetFieldsCount) As Variant
    Dim values(RecordsetFieldsCount) As Variant
    fields(0) = Field 1 Name
    fields(1) = Field 2 Name
    .
    .
    .
    fields(n) = Field n Name

    values(0) = Field 1 Value
    values(1) = Field 2 Value
    .
    .
    .
    values(n)= Field n Value

    rs.AddNew fields, values
    rs.update


    -------------------------
    آشنايي با چند query برای کار با جداول بانک های اطلاعاتی

    1- SELECT : برای انتخاب رکوردها از يک جدول استفاده می شود . فرمت کلی اين دستور بصورت زير است :

    SELECT fieldnames FROM tablename WHERE condition ORDER BY fieldnames

    مثال : فرض کنيد يک جدول به اسم mytable داريم که دارای دو فيلد به نامهای id از نوع integer و name از نوع string باشد :
    – انتخاب تمامی رکوردهای جدول :
    query="Select * from mytable"x
    - انتخاب فيلد name تمام رکوردهای جدول :
    query="Select name from mytable"x
    - انتخاب رکوردهايي از جدول که فيلد id آنها برابر 2 باشد :
    query="Select * from mytable where id=2"x
    - انتخاب رکوردهايي از جدول که فيلد name آنها برابر a باشد :
    query="Select * from mytable where name=’a’"x
    توجه داشته باشيد که چون فيلد name از نوع string است در دستور فوق از ‘ برای مقدار فيلد name استفاده شده است .
    - انتخاب رکوردهايي از جدول که فيلد id آنها برابر 2 و فيلد name آنها برابر a باشد و بر حسب id مرتب شده باشند .
    query="Select * from mytable where id=2 and name=’a’ order by id"x
    نکته : در صورتيکه بخواهيم از يک متغير برای مقداردهی به يک فيلد در query استفاده کنيد با توجه به اينکه آن متغير از نوع integer و يا string است بايد بصورت زير عمل کنيم :
    Dim mId as integer
    Dim mName as string
    mId=1
    mName="a"x
    query="Select * from mytable where id=" & str(mId) & " and name=’" & mName & "’"x

    2 – INSERT : اين دستور برای قرار دادن يک رکورد در جدول استفاده می شود . فرمت کلی اين دستور بصورت زير است :

    INSERT INTO tablename (field1name,field2name,…) VALUES (field1value,field2value,…)x

    مثال :
    query="Insert into mytable (id,name) values (1,’a’)"x

    3 – UPDATE : اين دستور برای تغيير مقادير يک رکورد از جدول استفاده می شود . فرمت کلی اين دستور بصورت زير است :

    UPDATE tablename SET field1name=field1value, field2name=field2value,…

    مثال :

    query="Update mytable set id=2 , name=’b’"x

    4 – DELETE : اين دستور برای حذف يک يا چند رکورد از جدول استفاده می شود . فرمت کلی اين دستور بصورت زير است :

    DELETE FROM tablename WHERE condition

    مثال :

    query="Delete from mytable where id=1"x

    حال که با تکنولوژی ADODB و نيز query های مختلف برای کار با جداول بانک های اطلاعاتی آشنا شديد می توانيم کلاسی برای کار با بانک های اطلاعاتی بنويسيم و از آن در صفحات asp استفاده کنيم اما همانطور که در قسمت قبل ديديد برای اتصال به يک بانک اطلاعاتی نياز به يکسری اطلاعات مثل نام سرور ، نام بانک اطلاعاتی و ... داريم . چند روش برای دادن اين اطلاعات وجود دارد :
    1 – در کلاسی که می نويسيم اين مقادير را مشخص کنيم . اشکال اين روش اينست که از کلاس نوشته شده تنها برای يک کاربرد خاص می توانيم استفاده کنيم و در صورتيکه سرور بانک اطلاعاتی و يا نام بانک اطلاعاتی ويا username و password اتصال تغيير کند بايستی در کلاس نوشته شده نيز تغييرات را اعمال کرده و مجدداً آنرا کامپايل کنيم .
    2 – راه حل دوم اينست که پارامترها را از طريق asp به متد اتصال موجود در کلاس بفرستيم برای مثال :
    Set db=server.createobject(“dbclass.database)x
    Db.connect(servername,databasename,username,passwo rd)x
    که coonect متد اتصال به بانک اطلاعاتی در کلاس database می باشد .


    3 – روش سوم آنست که اين پارامترها را در يک فايل XML قراردهيم و در متد connect آنها را از فايل بخوانيم . مزيت اين روش اينست که پارامترها هم به آسانی قابل تغيير بوده و هم براحتی آنها می توان آنها را استخراج نمود .

    برای اين منظور بايستی ابتدا يک کلاس برای خواندن اطلاعات از فايل xml بنويسيم که موضوع درس بعد می باشد .

    نکته : در صورتيکه با فرمت فايلهای xml آشنا نيستيد پيشنهاد می کنم يک مطالعه مقدماتی در اين زمينه انجام دهيد .

    ----------------------

    نوشتن کلاس Database - بخش اول :

    پس از مباحثی که در مورد شی ADODB و چگونگی استفاده از آن در وی بی و نيز استفاده از فايلهای XML داشتيم اکنون می توانيم يک کلاس کامل و قدرتمند برای کار با بانکهای اطلاعاتی در ASP بنويسيم .

    مراحل کار بصورت زير می باشد :

    ۱ - ابتدا يک پروژه از نوع ActiveX Dll ايجاد کنيد و نام آنرا DBase بگذاريد .

    ۲ - از بخش References مواردی را که در مباحث قبلی گفته شد به پروژه اضافه کنيد .

    ۳ - متغير Cn را برای کلاس بصورت زير تعريف کنيد :


    Private Cn As ADODB.Connection


    ۴ - ابتدا يک متد به اسم InitialConnection برای کلاس می نويسيم . در اين متد ابتدا پارامترهای اتصال به بانک اطلاعاتی را مشابه آنچه در درس قبل گفته شد از يک فايل XML به اسم config.xml می خوانيم و با استفاده از آنها اتصال به بانک اطلاعاتی را باز می کنيم :

    Public Sub InitialConnection()x
    Dim userName, Password, database_name, server_name
    Dim xmlf As NewXMLReader
    Call xmlf.Initiate("config.xml")x
    userName = xmlf.getvalue("DataBaseID") x
    Password = xmlf.getvalue("DataBasePassword") x
    database_name = xmlf.getvalue("DataBaseName") x
    server_name = xmlf.getvalue("ServerAddress")x
    Set Cn = CreateObject("ADODB.Connection")x
    Cn.ConnectionString = "Provider=SQLOLEDB.1;Password=" & Password & ";Persist Security Info=True;User ID=" & userName & ";Initial Catalog=" & database_name & ";Data Source=" & server_name
    Cn.Mode = adModeReadWrite
    Cn.Open
    End Sub

    لازم به ذکر است که XMLReader کلاس کار با فايلهای XML است که در قسمت قبلی در مورد آن صحبت کرديم .

    5 - برای بستن اتصال متد زير را به کلاس اضافه کنيد :

    Public Sub EndConnection()x
    Cn.Close
    Set Cn = Nothing
    End Sub

    6 - برای اجرای query هايي که نتيجه آنها از نوع Boolean است ( مثل Insert و Delete ) متدی به اسم ExecuteUpdate را به کلاس اضافه کنيد :

    Public Function ExecuteUpdate(ByVal squery As String) As Boolean
    Dim myrs As New Recordset
    If Not (makesInjection(squery)) Then
    myrs.LockType = adLockOptimistic
    Set myrs = Cn.Execute(squery) x
    ExecuteUpdate = True
    Exit Function
    Else
    ExecuteUpdate = False
    Exit Function
    End If
    End Function

    6 - برای اجرای query هايي که نتيجه آنها از نوع RecordSet است ( مثل Select ) متدی به اسم ExecuteQuery را به کلاس اضافه کنيد :

    Public Function ExecuteQuery(ByVal squery As String) As Recordset
    If Not (makesInjection(squery)) Then
    Set ExecuteQuery = Cn.Execute(squery)x
    Exit Function
    Else
    Set ExecuteQuery = Nothing
    Exit Function
    End If
    End Function

    همانطور که می بينيد در دو متد ExecuteUpdate و ExecuteQuery از تابعی به اسم makesInjection استفاده شده است . اين تابع بررسی می کند که آيا در query ورودی SQL-Injection وجود دارد يا نه .

    - اين تابع موضوع قسمت بعدی اين سلسله مباحث می باشد .
    ------------------------------------------------

    نوشتن کلاس Database : بخش دوم
    sql-injection چيست ؟

    همانطور که می دانيد در اغلب برنامه های کاربردی تحت وب از بانکهای اطلاعاتی استفاده می شود . اين برنامه ها داده های ورودی کاربر را از طريق فرمهای html دريافت کرده و بر اساس آن يک query توليد کرده و آنرا به بانک اطلاعاتی ارسال می کنند . در واقع ارتباط بين برنامه تحت وب با بانک اطلاعاتی بر اساس توليد query از داده های کاربر برقرار می شود . اکثر اين برنامه ها از زبان SQL برای اين ارتباط استفاده می کنند . اما نکته ای که در اين بين وجود دارد اينست که توليد query بر اساس داده هايی که کاربر مستقيماً در فيلدهای ورودی صفحه وب وارد کرده می تواند خطرناک باشد . بعبارت ديگر اگر برنامه محتويات يک فيلد را که توسط کاربر وارد شده در جلوی يک دستور SQL بچسباند و آنرا جهت اجرا روی بانک اطلاعاتی بفرستد در اينصورت يک هکر ماهر که با زبان SQL آشنا باشد می تواند محتويات اين فيلدها را طوری با دستورات SQL پر کند و چون ای داده ها مستقيماً برای توليد query استفاده می شود ممکنست آن query تبديل به يک فرمان مخرب شده و پس از اجرا ، اهداف نفوذگر را برآورده نمايد .

    مثال : فرض کنيد دو فيلد به اسمهای username و password در يک فرم وب قرار دارد که برای ورود به يک سايت استفاده می شود . همچنين فرض کنيد از اطلاعات اين فيلدها بطور مستقيم يک query بصورت زير برای بانک اطلاعاتی ارسال شود :
    us=request.form("username")
    psw=request.form("password")
    query="SELECT * FROM Users WHERE username='"&us&"' AND password='"&psw&"'"

    حال در صورتيکه هکر يک username صحيح ( مثلاً xxx ) از سيستم را بداند و در فيلد username مقدار صحيح را وارد کرده و در فيلد password عبارت زير را وارد کند :
    1111111' or username='xxx'
    در اينصورت query بصورت زير در می آيد :
    SELECT * FROM Users WHERE username='xxx' AND password='111111' or username='xxx'
    در اينصورت هکر بدون دانستن يک password مجاز می تواند به سيستم وارد شود .
    اين امر بخاطر آنست که چون فيلدهای وارد شده توسط کاربر بطور مستقيم در query قرار داده شده اند هکر توانسته کاراکتر ' را که در زبان SQL يک کاراکتر کنترلی بوده و عملکرد خاصی دارد ( عمل خاتمه دادن به عبارت SQL ) را در در query بگنجاند و سپس با دادن دستورات SQL مناسب کنترل را بدست بگيرد .

    اين سناريو می تواند بسيار خطرناکتر باشد زيرا هکر می تواند از ساير دستورات SQL مثل INSERT و DELETE نيز استفاده کند .
    - در نگارش مطالب فوق از کتاب " نفوذگری در شبکه و روشهای مقابله با آن " نوشته مهندس احسان ملکيان استفاده شده است . برای آشنايی بيشتر با sql-injection و روشهای مقابله با آن به صفحات ۳۲۰ تا ۳۲۸ اين کتاب مراجعه کنيد .
    برای مقابله با اين حملات بايستی از داده های ارسال شده توسط کاربر مستقيماً query توليد نکنيم بلکه ابتدا عدم وجود کاراکترهای کنترلی مثل ' و " و ; و *و غيره را در آن بررسی کنيم . برنامه ابتدا بايد در query وجود چنين کاراکترهايی را در مکانهای غيرمجاز بررسی کند . در بخش بعدی برنامه ای را جهت بررسی query های SQL بمنظور مقابله با sql-injection ارائه خواهم داد .
    ------------------------------
    تابع بررسی وجود sql-injection که در قسمت قبل در آن صحبت کرديم بصورت زير است :
    Private Function makesInjection(ByVal query As String) As Boolean
    Dim specialCharacters() As String
    Dim inQoute As Boolean
    specialCharacters = "-- ;,"
    inQoute = False
    For i = 1 To Len(query)
    Char = Mid(query, i, 1)
    If Mid(query, i, 1) = "'" And inQoute = False Then
    inQoute = True
    GoTo EndFor
    End If
    If Mid(query, i, 1) = "'" And inQoute = True Then
    inQoute = False
    GoTo EndFor
    End If
    If inQoute = False Then
    For Index = 1 To UBound(specialCharacters)
    schar = specialCharacters(Index)
    cchar = Mid(query, i, Len(schar))
    If schar = cchar Then
    Exit For
    End If
    Next
    If Index < UBound(specialCharacters) Then
    makesInjection = True
    Exit Function
    End If
    End If

    EndFor:
    Next
    If inQoute = True Then
    makesInjection = True
    Else
    makesInjection = False
    End If
    End Function
    ورودی اين تابع query شما و خروجی آن false ياtrue است .
    عملکرد تابع بصورت زير است :
    اين تابع در طول رشته query شروع به حرکت می کند و هر کاراکتر از آنرا بررسی می نمايد . در صورتيکه کاراکتر جاری ‘ باشد و داخل ‘ ’ نباشيم متغير مربوط به آن true شده و حلقه يکی بجلو می رود . اما در صورتيکه کاراکتر جاری ‘ باشد و داخل ‘ ’ باشيم متغير مربوط به آن false شده و حلقه يکی بجلو می رود . سرانجام در صورتيکه داخل ‘ ’ نباشيم بررسی می شود که اين کاراکتر يکی از کاراکترهای غير مجاز ( کاراکترهای موجود در رشته specialCharacters ) نباشد که اگر باشد تابع true بر می گرداند .
    پس از اتمام حلقه متغير مربوط به ‘ بررسی می شود که اگر true باشد در صورت injection وجود داسته و تابع نيز true بر می گرداند .

    -----------------------
    نکته ای در مورد شی Recordset :

    متد ExecuteQuery که در کلاس Database نوشتيم يک رکوردست را بعنوان نتيجه انجام query ورودی روی بانک اطلاعاتی شما برمی گرداند .
    همانطور که می دانيد توسط خصوصيت RecordCount می توان تعداد رکوردهای نتيجه شده از يک query را که در رکوردست قرار دارند بدست آورد .
    اما مشکلی وجود دارد اينست که با روشی که ما در قسمتهای قبل برای اجرای query در اين متد استفاده کرده بوديم ( myrs = Cn.Execute query ) نمی توان از خاصيت Recordcount رکوردست استفاده نمود زيرا هميشه ۱- برمی گرداند . بعبارت ديگر در عبارت زير مقدار count هميشه ۱- خواهد بود :

    myrs.execute(query)
    count=myrs.RecordCount

    برای حل اين مشکل بايستی رکوردست را با CursorType مساوی adOpenStatic باز کرد . بعبارت ديگر بجای دستورات فوق از دستور زير استفاده کنيد :
    myrs.Open squery, Cn, adOpenStatic, adLockOptimistic
    count=myrs.RecordCount




  29. #29
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539

    نقل قول: دانلود سورس برنامه نویسان

    اینم سورس که میتونی نام کامپیوتر رو عوض کنید

    سورس Select_Folder

    سورس چرخش آیکون

    سورس چت در شبکه
    فایل های ضمیمه فایل های ضمیمه

  30. #30
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539
    سلام دوست گرامی Abolfazl Hidden

    اینم سورسی که سریال cpu بهتون می ده

    RegOCX برای ریجستریکردن ocx

    100% کار میکنه


    دانلود
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Mbt925 : یک شنبه 11 مرداد 1388 در 20:57 عصر

  31. #31
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539
    یک سورس حسابداری پیشرفته با بانک SQL 2000 که همراه با بانک فروش و خرید و همچنین حساب معین می باشد

    دانلود

    پسورد :www.jadougar.ir

    اینم سورس که هم اسکن می کنه و هم بارکد میزنه
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Mbt925 : سه شنبه 13 مرداد 1388 در 23:42 عصر

  32. #32
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539

    نقل قول: دانلود سورس برنامه نویسان

    ویژوال بیسیک 6 فارسی فارسی ساز ویژوال بیسیک 6 بسیار زیبا
    کاملاً فارسی تٿضیحات

    ابتدا این سه فایل رو در مسیر "C:\Program Files\Microsoft Visual Studio\VB98\" کپی کنید بعد برنامه رو اجرا کنید البته این فایل ها ترجیحا برای ویندوز xp نوشته شده است

    کارهایی که این فایل ها میکنند عبارتند از :
    - 1 فارسی کردن ویژال بیسیک 6
    - 2 قالب زشت ویژال بیسیک را به صورت Xp در می آورد
    - 3 صفحه آغازین را که خودم طراحی کردم با صفحه اغازین وی بی عوض میکند

    نکته مهم اول :
    اول از فایل VB6IDE.DLL و VB6.exe موجود در پوشه خود VB یک کپی در جای دیگر برای پشتیبان در صورتت بروز خطا نگه دارید و اگر برنامه کارنکرد برشون گردانید سر جاشون البته من خودم تست کردم 100% جواب می دهد.
    .
    نکته مهم دٿم :
    اگر میخواهید که VB بیشتر فارسی بشه میتونید فایل موجود در پوشه1.5 رو در محل نصب VB کپی کنید که من به شما همون فایل قبلی رو پیش نهاد میکنم و اگه این کار رو کردید و خواستید که به حالت قبل برگردید همین فایل VB6IDE.dll که در اینپوشه است رو به جای اون فایل کپی کنید تا به حالت قبل برگرده
    .
    نکته مهم سوم :
    بچه ها یه وقت فکر نکنید منظٿر من از نوشتن نسخه تمام فارسی VB این کاربود. نــــــــــه من به دو شکل VB رو فارسی کردم که این روش اول بود و روش دوم به این صورتبودکه من طی 3.5 سال VB رو در خودش شـــــــــــــــبیه سازی کردم.
    موفق باشید
    دانلود

    رمز عبور :www.jadougar.ir

  33. #33
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539
    بابت دیرکرد معزرت

    این سورس VB_Decompiler_Lite.rar که با اون میتونید به راحتی یک ocx را باز کنید و متد های استفاده شده را در یک فایل txt ببینید

    با سلام خیلی از برنامه نویسان محترم دونبال سورسی هستند که بتونن با اون ایمیل ارسال کنند
    این سورسی که امروز براتون گذاشتیم دارای تمام فایل های ارسال ایمیل میباشد از جمله فال Php ,smtpو... که فایل ایمیل شما رو ارسال میکنه

    >>> دانلود <<<

    امروزه خیلی از برنامه نویسان در تلاش هستند تا نرم افزار هایی را تولید کنند که هم در ویندوز XP و هم در ویندوز Vista سازگار باشد و چون برنامه نویسان از فایل های ocx زیاد استفاده میکنند باید آن فایل ها مطابق همان ویندوز باشد ما امروز نرم افزاری را برای شما به ارمغان آورده ایم که میتوانید با آن فایل های ocx را ریجستر کنید

    >>> دانلود <<<
    رمز عبور :www.jadougar.ir

    با سلام به دوستان گلم ببخشید که دیر شد این پست رو آپ کنم خب براتون یک سورس آوردم که واقعا هر کس دانلود نکنه سورس زیبایی رو از دست داده
    سورس تنظیم کننده ویندوز xp که شامل تمام قسمت های تنظیمات کنترل پنل و ... می باشد

    دانلود کنید
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Mbt925 : شنبه 28 شهریور 1388 در 13:05 عصر

  34. #34
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539

    نقل قول: دانلود سورس برنامه نویسان

    یک آموزش جالب Auto Run برنامه

    کدهای زیر رو در یک فایل به نام autorun.inf قرار بدید
    [autorun]
    OPEN=Project1.exe
    حالا این فایل رو در یه درایوتون بزارید
    بعد از دبل کلیک روی درایو میبینید که فایل Project1.exe اجرا میشه
    Project1.exe میشه فایلی که شما میخواین اجرا بشه

  35. #35
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539

    نقل قول: دانلود سورس برنامه نویسان

    سورس که برنامه رو روی start up می ذاره
    فایل های ضمیمه فایل های ضمیمه

  36. #36

    نقل قول: دانلود سورس برنامه نویسان

    دو سوال داشتم
    1-اگه يك BTN نام نداشته باشد چه بايد كرد مثل ما ميخواهيم كليد ثبت را كليك كنيم


    <tr>
    <td class="titletd" height="100">
    </td>
    <td class="formfieldtd" style="text-align: left" valign="bottom">
    <p>
    <button type="submit" class="btn" style="width: 200; height: 22" onclick="setAction(method,'save');">
    <img border="0" src="/evocher/html/image/blt_01.gif" width="13" height="11"
    align="absmiddle">
    ثبت
    . . .
    </button>
    </td>
    </tr>

    اين خط را با ويژوال چگونه كليك كنيم
    <button type="submit" class="btn" style="width: 200; height: 22" onclick="setAction(method,'save');">
    2-چگونه براي نرم افزار تعريف كنيم منتظر بماند تا ما فلان فيلد يا فلان btn را كليك كنيم


    اگه بتونين جواب ما را بديد خيلي ممنون ميشيم

  37. #37
    کاربر دائمی آواتار saeedzx
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    گــیل دیــتــا
    پست
    539

    نقل قول: دانلود سورس برنامه نویسان

    سلام دوستان

    بعد از مدت ها اینم پست جدید در این قسمت که با ویژوال آبکون بسازید




    من یک مشکل پیدا کردم تو این پست هست توجه کنید !!!!

    http://www.barnamenevis.org/sh...d.php?t=185363
    فایل های ضمیمه فایل های ضمیمه

  38. #38

    نقل قول: دانلود سورس برنامه نویسان

    سلام دوست عزیز یه سرورس میخوام که دوتا لیبل داشته باشه اولی نام کاربری بلاگفا دومی رمز عبور و یه بتن که اگه رمز و نام کاربری برای ورود به بخش کاربری وبلاگ درست باشن یه پیغامی بده
    ممنون میشم اگه درستش کنین

  39. #39
    کاربر دائمی آواتار fazelm
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    همین نزدیکی
    پست
    339

    نقل قول: دانلود سورس برنامه نویسان

    نقل قول نوشته شده توسط saeedzx مشاهده تاپیک




    برنامه ای که می خوام معرفی کنم یه برنامه کامل هستش که شامل ابزار بسیار زیادی واسه بدست آوردن اطلاعات سیستم خودتون یا کافی نت ها به کار میره.

    برنامه فوق از دو بخش Tools و Spy-Ware تشکیل شده که با محیط بسیار ساده ای که در اختیار کاربر قرار میده کار کردن با برنامه رو بسیار آسان می کنه.

    Proccess Manager



    در این قسمت می تونید به اطلاعات کاملی در مورد پروسس ها و برنامه های در حال اجرا دسترسی پیدا کنید و به وسیله امکاناتی که در اختیار دارید می تونید هر کدوم از پروسس ها رو کنترل کنید.



    Service Manager



    در این بخش نیز می تونید به کنترل سرویس های در حال اجرا و یا سرویس های در متوقف شده رو کنترل کنید و اطلاعات لازم رو در اختیار داشته باشید

    Internet History



    اونایی که زیاد از اینترنت استفاده می کنن معمولا دوست دارن یه آمار کلی از سایت هایی که باز کردن داشته باشن. دراین قسمت از برنامه تمامی سایت هایی که باز شده به همراه تاریخ و سایر امکانات دیگه براشون لیست میشه و می تونن یه آمار کلی از سایت هایی که باز کردن رو داشته باشن

    Installed Programs



    کلیه برنامه های نصب شده در ویندوز توی این قسمت قرار میگیره و به راحتی می تونید اونا رو از روی سیستم پاک کنید

    System Settings



    کسانی که لازمه سیتمشون محدود باشه (مثل کافی نت ها) حتما این قسمت از برنامه به دردشون می خوره

    Port Manager



    یه سری اطلاعات در مورد پورت ها رو می تونید در این قسمت به دست بیارید

    Registry Editor



    همه شما معمولا با رجیستری ادیتور کار کردین که با استفاده از این برنامه دسترسی شما به رجیستری ساده تر میشه

    قرار گرفته که به صورت مختصر در مورد هر کدوم از قسمت های اون توضیح میدم. System Properties کلیه اطلاعات سیستم شما در قسمت

    Multimedia Informations



    سخت افزار های مربوط به مالتی مدیا و درایور های اون و کلی اطلاعات دیگه از اون در این قسمت معرفی میشه

    Disks and Memory Informations



    اطلاعات کامل در مورد هارد دیسک و حافظه و سایر دیسک ها و درایو ها در اینجا نمایش داده میشه

    Network Properties



    برای بدست آوردن اطلاعات در مورد شبکه مثل آی پی و غیره از این بخش استفاده میشه

    Video Properties



    همونطور که میدونید کارت گرافیک شامل مشخصات بسیار زیادی هستش که در این قسمت همه اونا نمایش داده میشه

    DirectX Informations



    وسایر اطلاعات مربوط به اون رو میشه مشاهده کرد Direct X در این قسمت مشخصات مربوط به

    CPU & APM Information



    اطلاعات مربوط به پردازنده سیستم و همچنین اطلاعات مربوط به منبع تغذیه سیستم در این قسمت از برنامه قابل مشاهده است

    Hardware Properties



    مشخصات کلیه قطعات سیستم به صورت کامل در این قسمت نشون داده میشه



    و اما بخشی از برنامه که خیلی ها دوسش دارن

    هکران محترم در از این قسمت از برنامه می تونن اطلاعات محرمانه و شخصی سیستم رو زیر نظر داشته باشن به این شکل که با فعال کردن بخش های مربوط به این قسمت خیلی از کلمات عبور و سایر اطلاعات ضروری دیگه در اختیارشون قرار می گیره



    Yahoo Messenger



    من خودم شخصا با این قسمت از برنامه کلی حال کردم

    در این قسمت از برنامه لیست تمامی آیدی هایی که بعد از اجرای این برنامه لوگین شدن رو به همراه رمز عبور و ساعت و تاریخ دقیق لوگین رو در اختیار شما قرار می ده

    از دیگر خصوصیات از بخش نمایش Save بودن پسورد و Invisible بودن آیدی هنگام لوگین هستش.

    بخش فوق از کلیه ورژن های یاهو مسنجر از جمله Yahoo 8.1 پشتیبانی می کنه



    Windows Messenger



    خیلی کم پیش میاد کسی از Windows Messenger استفاده کنه ولی واسه بالا بردن قدرت برنامه و کامل کردن برنامه این بخش رو هم به برنامه اضافه کردم که می تونید کلیه آیدی های Windows Messenger رو به همراه کلمه عبور اونها و تاریخ وساعت دقیق اون رو مشاهده کنید.

    Dialup Manager



    این قسمت دیگه فکر نمی کنم نیازی به توضیح داشته بشه .

    در این قسمت تمام پسورد های Dialup به همراه سایر مشخصات اون نمایش داده میشه.

    Trillian Messenger



    Trillian Messenger هم یکی از مسنجر های خوبه که تمامی مسنجرهای دیگه (مثل یاهو مسنجر و ICQ و غیره ) رو در خودش جای داده!!!

    اما بوسیله برنامه Visual Manager می تونید همه اون مسنجر ها رو به همراه اطلاعاتشون زیر نظر داشته باشید

    Keylogger Manager



    این آخرین بخش برنامه هستش که در موردش توضیح میدم.

    توی این قسمت تمام کلید های فشرده شده توسط کاربر به همراه پنجره هایی که در اونها نمایش داده میشه به این صورت که با فعال کردن این قسمت و تنظیم اون در تایم دلخواه تمامی کلید ها رو ذخیره کنید!!!!



    --------------------------------------------------------------------------------


    Security Settings



    Add On Startup : در صورت فعال کردن این بخش شما نیازی با اجرای مجدد برنامه بعد از ریستارت یا روشن شدن برنامه نخواهید داشت.

    Hide After Run : بعد از فعال کردن این قسمت برنامه در صورت ریستارت و اجرای اتوماتیک به صورت مخفی به اجرا در میاد تا کسی متوجه کش رفتن پسوردهای اون نشه

    Enable Password Protection : اگه می خواین فقط خودتون از این برنامه استفاده کنین می تونید با انتخاب یک کلمه عبور اون رو فقط مختص به خودتون بکنید تا شخص دیگه ای غیر از شما نتونه از برنامه استفاده کنه

    Disable Password : با زدن این کلید و وارد کردن پسورد قبلی میتونید پسورد رو (در صورت وجود) از روی برنامه حذف کنید.

    Security Mode : Security Mode یکی از منوهای برنامست که با استفاده از اون می تونید به صورت دستی برنامه رو در حال اجرا مخفی نگه دارید و با زدن کلید Ctrl+R اون رو دوباره به حالت اول برگردونید.



    دانلود کنید اما سورس ندارم
    لینک خرابه

  40. #40
    کاربر دائمی آواتار fazelm
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    همین نزدیکی
    پست
    339

    Exclamation نقل قول: دانلود سورس برنامه نویسان

    نقل قول نوشته شده توسط saeedzx مشاهده تاپیک
    اینم سورس زیبایی که عدد رو به حرف تبدیل می کنه هم فارسی هم انگلیسی

    اینم یک سورسی که یکی از دوستان ولی نمی دونم کی جالب بود گذاشتم
    سورسی که تمام امکانات یک کد تلفن داره

    اینم 2 تا سورس حسابداری و انبار داری زیبا که کار دوستان گلمه

    اینم یک سورس ماشین حساب پیشرفته

    این سورس اکونت سایز ویندوز xp کاملاً فارسی

    مژده اینم سورس VBDecompiler که خیلی ها دونبالشن

    اینم یک سورس Chocolate_Mail که کارش خیلی جالبه
    این برنامه vbdecompiler همش ارور میده لطفا درست کنید . نیاز دارم . ممنون

صفحه 1 از 2 12 آخرآخر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •