وبلاگ تخصصي برنامه نويسي با VB

پاسخ به سوالات-۱۳

1 -  چگونه می توان برنامه ای نوشت که وقتی روی یکی از سیستمهای یک شبکه محلی LAN اجرا شد عملیات زیر را انجام دهد : - Domain فعال شبکه و کامپیوترهای آنرا پیدا کند ؟ - یک برنامه را در تمام کامپیوترهای شبکه کپی کند – فایلهای کپی شده را اجرا کند و اینکار بدون استفاده از winsock انجام شود ؟
پاسخ : بخش دوم و سوم مربوط بیشتر به بحث Hacking و exploit کردن سیستم ها بطوریکه بتوان فایلی را روی آنها اجرا کرد مربوط می شود . این زمینه بهتر است به سایت www.tur2.com مراجعه کنید . اما در مورد قسمت اول سوال برای بدست آوردن domain شبکه و کامپیوترهای موجود در آن از توابع یک کتابخانه به اسم mpr.dll استفاده می شود . توابع مورد استفاده از این کتابخانه عبارتند از WNetOpenEnum ، WNetEnumResource و WNetCloseEnum . برای اطلاعات بیشتر و دریافت یک نمونه برنامه به این آدرس مراجعه کنید .

2 – چگونه می توان با کارت ویدیوی یا همان Capture توسط وی بی ارتباط برقرار کرد ؟ چگونه می توان با webCam توسط وی بی ارتباط برقرار کرد ؟
پاسخ : یکی از راهها استفاده از کنترلی به اسم ezVidCap می باشد . این کنترل را می توانید از این آدرس دریافت کنید .

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

در اینجا و اینجا نیز برنامه هایی نمونه برای کار با Video Capture وجود دارد .

در این آدرس نیز روش دیگری برای ارتباط با کارت ویدیویی بیان شده است .

3 – چگونه می توان درایو ( یا درایوهای ) سی دی را توسط وی بی تشخیص داد ؟
پاسخ : برای اینکار از دو تابع از کتابخانه kernel32 به نامهای GetLogicalDriveStrings و GetDriveType استفاده می شود . این دو تابع را بصورت زیر declare کنید :

Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

سپس ابتدا متغیر allDrives را که رشته ای 64 کاراکتری از space است بصورت زیر تعریف کنید :

allDrives$ = Space$(64)

حال با استفاده از تابع GetLogicalDriveStrings لیست کلیه درایوهای سیستم  را استخراج می کنیم :

ret& = GetLogicalDriveStrings(Len(allDrives$), allDrives$)
allDrives$ = Left$(allDrives$, ret&)

حال با استفاده از یک حلقه و چک کردن درایوها با استفاده از تابع GetDriveType می توانیم تشخیص دهیم این درایو مربوط به سی دی است یا نه . برای اینکار اگر مقدار بازگشتی تابع به ازای یک درایو برابر عدد 5 باشد آن درایو سی دی است .

Do
   pos% = InStr(allDrives$, Chr$(0))
     If pos% Then
     JustOneDrive$ = Left$(allDrives$, pos% - 1)

     allDrives$ = Mid$(allDrives$, pos% + 1, Len(allDrives$))

     DriveType& = GetDriveType(JustOneDrive$)
             If DriveType& = 5 Then
                MsgBox UCase$(JustOneDrive$) & " is a CD Drive"
             End If
     End If
Loop Until allDrives$ = ""

4 – بجای استفاده از winsock32.ocx از چه روش دیگری می توان در برنامه نویسی شبکه استفاده کرد ؟
پاسخ : شما می توانيد از کتابخانه Winsock.dll استفاده کنید و در اینصورت نیاز به فایل کمکی خاصی نیز ندارید . قبلاً در بخش پرسش و پاسخها ، لینکهایی در مورد این کتابخانه معرفی کرده ام و در صورتیکه فرصت کردم در مورد این کتابخانه توضیحاتی خواهم داد .

5 – چگونه می توان مانند تروجان های معمول ، username و password یک اکانت را بدست آورید  ؟
پاسخ : من تست نکردم اما به احتمال زیاد با استفاده از توابع کتابخانه RasApi قادر به اینکار خواهید بود . برای آشنایی با توابع این کتابخانه به این آدرس مراجعه کنید .

6 – منظور از درایور دیتا بیس چیست ؟ آیا همان برنامه ای است که دیتابیس را با آن می نویسیم ( مثلاً اکسس ) ؟ چگونه می توان از یک فایل Text بجای بانک اطلاعاتی استفاده کرد ؟
پاسخ : درایور یک دیتابییس شامل یکسری توابع واسط برای اتصال و کار با آن دیتابیس است برای مثال با استفاده از داریور JET OLE DB می توان به دیتابیسهای اکسس متصل شد . زمانیکه شما یک برنامه در وی بی می سازید که به یک دیتابیس متصل می شود برای اینکه بتوانید آنرا در کامپیوتر دیگری نیز اجرا کنید بایستی فایلهای درایور مربوطه نیز بهمراه آن کپی شوند . با استفاده از ابزار Package and Deployment Wizard می توانید فایلهای مورد نیاز برنامه را پیدا کنید و همچنين یک فایل Setup برای برنامه تان بسازید . در مورد فایلهای text نیز بله می توان اطلاعات جدول خود را در آن قرار دهید اما باید فرمت قرارگیری را خودتان تعریف کنید .

7 – فایلهای اجرایی من حتی اگر بدون یک اکتیو ایکس هم باشد در کامپیوتری که فاقد ویژال بیسيک است اجرا نمی شود . چرا ؟
پاسخ : ساده ترین برنامه های وی بی نیز برای اجرا شدن احتیاج به کتابخانه VB Runtime and OLE Automation دارند . همانطور که در سوال قبل نیز توضیح داده ام می توانید با استفاده از  برنامه های ساخت Setup مشکل خود را حل کنید .

8 - من در حال نوشتن برنامه اي هستم كه در آن امكان شماره گيري نيز مي باشد. مي خواستم بپرسم چگونه مي توان اشغال بودن خط را تشخيص داد تا بتواند به طور اتوماتيك قطع و دوباره شماره گيري بنمايد.؟
پاسخ : برای نوشتن برنامه تان از Ras Api استفاده کنید . این کتابخانه توابعی که مشکل شما را حل کند در خود دارد .

9 – چگونه می توان برنامه ای نوشت که بتوان با آن سورس یک صفحه وب را با دادن آدرس آن صفحه مشاهده کرد ؟
پاسخ : برای اینکار component ای در وی بی به اسم Internet Transfer که قبلاً در مورد آن مطالبی نوشته ام وجود دارد . به آرشیو موضوعی سایت و بخش برنامه نویسی شبکه مراجعه کنید .

10 -  در مورد برنامه Multimedia Builder سایت یا کتاب معرفی کنید .
پاسخ : من با این برنامه زیاد کار نکرده ام اما با جستجو در Google می توانید سایتهای بسیار زیادی پیدا کنید . یک کتاب فارسی نیز در مورد این نرم افزار وجود دارد .

11 – در برنامه های نمونه Msdn به ITLegacyCallMediaControl برخوردم . در مورد آن توضیح دهید .
پاسخ : این واسط یک از واسطهای TAPI می باشد که از برنامه هایی که بایستی بطور مستقیم با یک دستگاه ارتباط داشته باشند پشتیبانی می کند . برای اطلاعات بیشتر به اینجا مراجعه کنید .


12 – چگونه می توان فایل مربوط به یک برنامه را به ویندوز شناساند بطوریکه وقتی روی آن فایل کلیک می شود ویندوز برنامه مربوط به آنرا اجرا کند ؟
پاسخ : اینکار با استفاده از نوشتن کلیدهای خاصی در رجیستری امکان پذیر است . قبلاً در بخش آموزش کار با رجیستری به این مطلب اشاره کرده و کلیدهای مربوط به آنرا معرفی کردم . به آرشیو موضوعی و بخش کار با رجیستری مراجعه کنید .

 

+ حامد شیدائیان ; ۱:٠٥ ‎ب.ظ ; دوشنبه ٤ خرداد ،۱۳۸۳
comment نظرات ()