آخرين ارسالات انجمنها

+ پاسخ به موضوع
صفحه 6 از 6 نخستنخست ... 4 5 6
نمایش نتایج: از شماره 81 تا 85 , از مجموع 85

موضوع: آموزش گام به گام ویژوال بیسیک6.0

  1. #81
    کاربرسایت PARS PARS آواتار ها
    تاریخ عضویت
    May 2008
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0


    موضوع : کنترل ماوس با 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 قرار دهيد

  2. #82
    کاربرسایت PARS PARS آواتار ها
    تاریخ عضویت
    May 2008
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0


    TAPI در ويژوال بيسيک - درس 1و 2و 3و 4و 5و 6و 7
    TAPI در ويژوال بيسيک - درس 1و 2و 3و 4و 5و 6و 7
    TAPI چيست ؟

    TAPI يا Telephony API يک کتابخانه استاندارد برای کار با مودم و نوشتن برنامه های تلفنی می باشد . برای نمونه می توان از برنامه های Phone Dialer ( شماره گير تلفن ) ، برنامه شبکه سازی تلفنی ( Dialup Networking ) ، برنامه تشخيص پالس مودم برای ضبط اطلاعات وارد شده از طرف کاربران و کاربردهای ديگر در اين زمينه نام برد . اين کتابخانه به شما کمک کمک می کند تا بدون درگير شدن با برنامه نويسی سخت افزار مودم و درايور آن بطور مستقيم بتوانيد برنامه های کاربردیي در اين زمينه بنويسيد .
    مروری بر Microsoft Telephony :

    Telephony امکان مجتمع سازی کامپيوترها با دستگاههای ارتباطی و شبکه ها را فراهم نموده است . معمولاً دستگاه ارتباطی يک مودم و خط ارتباطی نيز شبکه PSTN ( شبکه عمومی تلفن سوئيچينگ ) می باشد . برخی از کاربردهای Telephony عبارتند از :

    ۱ - کنفرانسهای مالتی مديا بصورت Multicast
    ۲ - VoIP
    ۳ - مرکز پاسخ گويي اتوماتيک
    ۴ - تماس تلفنی از طريق کامپيوتر روی شبکه PSTN

    دياگرام زير معماری Microsoft Telephony را نشان می دهد :
    برنامه های TAPI :

    برای نوشتن برنامه های کاربردی با استفاده از TAPI بايستی ابتدا در مورد سطح سرويسی که می خواهيم ارائه دهيم تصميم گيری کنيم . برای مثال برای نوشتن يک برنامه شماره گير تلفن نياز به استفاده کامل از TAPI نيست و می توان از قابليتهای خود ويندوز در اين زمينه استفاده کرد ( Assisted Telephony ) . در بخشهای بعدی در مورد سطوح مختلف سرويس در TAPI بيشتر صحبت خواهم کرد .
    دومين مطلبی که بايد مورد توجه قرار داد اينست که می خواهيم از TAPI 2.x استفاده کنيم يا از TAPI 3.x . تفاوت ايندو آنست که TAPI ورژن ۲ يک API برمبنای C است در حاليکه ورژن ۳ آن بر مبنای تکنولوژی COM می باشد . در بخشهای بعدی مطالب بيشتری در مورد تفاوتهای اين دو نسخه بيان خواهم کرد .
    بخشهای اصلی يک برنامه کامل TAPI عبارتند از :

    ۱ - TAPI Initialization : شامل load کردن TAPI dll ، اتصال به TAPI Server ، مذاکره در مورد ورژن TAPI و برپاسازی سيستم اطلاع رسانی event می باشد .

    ۲ - Session Control : مقداردهی اوليه ، دريافت و کنترل تماسها

    ۳ - Device Control : دريافت و تنظيم اطلاعات دستگاه

    ۴ - Media Control : تشخيص و يا توليد تونها و ارقام ، کنترل stream

    ۵ - TAPI Shutdown : آزاد سازی منابع
    مقداردهی اوليه TAPI :

    عملکرد درست اجزای TAPI نياز به برپاسازی محيط ارتباطی روی کامپيوتر مورد نظر دارد . مراحل اين امر عبارتند از :

    ۱ - نصب TAPI : زمانيکه سخت افزار و يا نرم افزار برای اولين بار به کامپيوتر اضافه می شود انجام می گيرد . جزئيات کار به سيستم عامل و نرم افزار بستگی دارد .

    ۲ - مقداردهی ابتدائی : ساخت اشيا و مسيرهای ارتباطی

    ۳ - مذاکره در مورد ورژن TAPI : برای اطمينان از اينکه اجزای TAPI قادر به تبادل داده ها باشند .

    ۴ - استخراج اطلاعات منابع : بدست آوردن اطلاعاتی در مورد دستگاهی که می توان از آن در برنامه TAPI مورد نظرمان استفاده نمود .

    ۵ - Event notification : برپاسازی سيستم اطلاع رسانی event
    مقداردهی اوليه TAPI در ويژوال بيسيک :

    از منوی Project گزينه References را انتخاب کرده و از ليست مربوطه مورد Microsoft TAPI 3.0 Type Library را انتخاب کنيد .
    حال وارد بخش کد نويسی فرمتان شويد و متغير objTAPI را بصورت زير تعريف کنيد :

    Dim objTapi As TAPI


    سپس در بخش مربوط به Form Load شی objTAPI را بصورت زير ايجاد می کنيم :

    Set objTapi = New TAPI


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

    Call objTapi.Initialize


    انتخاب يک آدرس :
    کد زير نشان می دهد که چگونه می توان با استفاده از شی TAPI در ويژوال بيسيک منابع تلفنی در دسترس را برای يک آدرس که بتواند يک مجموعه مشخص از نيازها را مديريت کند ، بررسی کرد .
    توجه داشته باشيد که قبل از انجام اين کار بايستی عمل مقداردهی اوليه TAPI را که در بخش قبل ررسی شد ، انجام دهيد .

    نکته : در کد زير عمل error checking انجام نگرفته است و برای استفاده از کد زير در برنامه های واقعی بايستی بخش بررسی خطا را به آن اضافه کنيد .
    ۱ - تعريف يک شی آدرس و يک شی مجموعه آدرس :

    Dim gobjAddress As ITAddress
    Dim objCollAddresses As ITCollection


    ۲ - تنظيم شی objCollAddress بعنوان يک مجموعه آدرس از شی objTapi :

    Set objCollAddresses = objTapi.Addresses


    ۳ - پيدا کردن آدرسی که بتواند از واسط مورد نظر ما پشتيبانی کند :

    bFound = False
    For indexAddr = 1 To objCollAddresses.Count
    Set objCrtAddress = objCollAddresses.Item(indexAddr)x
    Set objMediaSupport = objCrtAddress
    Set objAddressCapabilities = objCrtAddress

    If objMediaSupport.QueryMediaType( nSelectedType ) x
    bFound = True
    End If

    Set objAddressCapabilities = Nothing
    Set objMediaSupport = Nothing
    Set objCrtAddress = Nothing

    If bFound = True Then Exit For
    Next indexAddr



    در صورتيکه آدرس مورد نظزر پيدا شود برنامه از حلقه خارج شده و gobjAddress يک آدرس قابل استفاده خواهد بود :

    Set gobjAddress = objcollAddresses.Item(indexAddr)x


    انجام Event Handling در TAPI :

    کد زير شامل يک event handler ساده برای TAPI ، رجيستر کردن واسط event ، تنظيم ----- event و رجيستر کردن تمام فراخوانيهای دادن اخطار است . هدف اصلی از اين کد اينست که مطمئن شويم بخشی از TAPI که event ها را دريافت می کند پردازشی را قبل از انتقال به بخشهای ديگر انجام دهد .

    تعاريفها :

    Dim WithEvents gobjTapiWithEvents As TAPI
    Attribute gobjTapiWithEvents.VB_VarHelpID = -1
    Dim glRegistrationToken As Long



    Const TAPI3_CALL_EVENTS =TE_CALLMEDIA Or
    TE_CALLNOTIFICATION Or TE_CALLSTATE



    تنظيم eventfilter بصورتيکه تمام event های تعريف شده برای TAPI را بپذيرد :

    objTapi.EventFilter = TAPI3_CALL_EVENTS


    رجيستر کردن event ها :

    Set gobjTapiWithEvents = objTapi
    Dim fOwner As Boolean, fMonitor As Boolean
    Dim lMediaTypes As Long, lCallbackInstance As Long

    fOwner = True
    fOwner = True
    fMonitor = False
    lMediaTypes = TAPIMEDIATYPE_AUDIO
    lCallbackInstance = 1

    glRegistrationToken = gobjTapi.RegisterCallNotifications(gobjAddress,fMo nitor,
    fOwner,lMediaTypes,lCallbackInstance)x


    انتخاب يک ترمينال :

    + قبل از اينکه يک ترمينال را برای برقراری ارتباط انتخاب کنيد بايستی TAPI Initialization و عمل انتخاب آدرس را انجام داده باشيد .

    ابتدا يک متغير از نوع ITBasicCallControl ( واسط کنترل تماس ) تعريف می کنيم :

    Dim objCallControl As ITBasicCallControl
    Set objCallControl = gobjReceivedCallInfo


    سپس يک متغير از نوع ITTerminalSupport ( کوئری از شی آدرس ) تعريف می کنيم :

    Dim objTerminalSupport As ITTerminalSupport
    Set objTerminalSupport = gobjAddress


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

    Dim objTerminal As ITTerminal
    Set objTerminal = objTerminalSupport.GetDefaultStaticTerminal(lMedia Type, dir)x


    در اينجا ديگر نيازی به شی objTerminalSupport نيست بنابراين آنرا آزاد می کنيم :

    Set objTerminalSupport = Nothing


    سپس نياز به تعريف شی objStreamControl برای کنترل ترمينال است :

    Dim objStreamControl As ITStreamControl
    Set objStreamControl = objCallControl


    در صورتيکه اين شی ايجاد شود ، به ازای استريم های موجود در ITCollection امکان ايجاد ترمينال در يک حلقه for بررسی می شود و ترمينال مناسب انتخاب می گردد :

    If Not (objStreamControl Is Nothing) Then
    Dim objITCollStreams As ITCollection

    Set objITCollStreams = objStreamControl.Streams

    Dim nIndex As Long, objCrtStream As ITStream

    For nIndex = 1 To objITCollStreams.Count
    Set objCrtStream = objITCollStreams.Item(nIndex)x
    If objCrtStream.MediaType = lMediaType Then
    If objCrtStream.Direction = dir Then
    Call objCrtStream.SelectTerminal(objTerminal)x
    End If
    End If
    Set objCrtStream = Nothing
    Next nIndex

    Set objITCollStreams = Nothing
    Set objStreamControl = Nothing
    End If



    ايجاد يک تماس ( Make a Call ) :
    + قبل از اين بخش بايستی مراحل TAPI Initialization و عمل انتخاب آدرس انجام شده باشد .
    اين بخش برای ايجاد يک شی تماس ، بررسی و مشخص کردن استريمی که با اين تماس در ارتباط است ، انتخاب و ايجاد ترمينالهای مناسب و کامل کردن ارتباط استفاده می شود .
    قبل TAPI Initialization و عمل انتخاب آدرس و انتخاب ترمينال انجام شده باشد .
    در ابتدا با استفاده از متد CreateCall يک شی تماس ساخته می شود :

    Set gobjCall = gobjOrigAddress.CreateCall(strDestAddress, nSelectedType,lMediaTypes)x


    سپس در اينجا بايستی کدی که در بخش اول اين درس برای انتخاب ترمينال نوشته شد آورده شود :

    }
    Select Terminal Code
    {


    سپس بايستی دستور Connect اجرا شود :

    gobjCall.Connect (False)x


    False بدين معناست که ارتباط بصورت آسنکرون برقرار می شود .
    دريافت يک تماس :

    کد زير برای يافتن و يا ايجاد يک ترمينال مناسب برای دريافت يک تماس بکار می رود . بايستی توجه داشته باشيد که قبل از اجرای کد زير بايستی مراحل مقداردهی اوليه ، انتخاب يک آدرس و رجيسر کردن event ها را انجام دهيد . همچنين در کد زير بايستی مرحله انتخاب ترمينال را نيز انجام دهيد . توجه داشته باشيد که در کد زير متغير pEvent يک اشاره گر برای واسط ITCallNotificationEvent است که توسط TAPI به event Handler داده می شود :

    If TapiEvent = TE_CALLNOTIFICATION Then
    Dim objCallNotificationEvent As ITCallNotificationEvent
    Set objCallNotificationEvent = pEvent
    Dim gobjReceivedCallInfo As ITCallInfo
    Set gobjReceivedCallInfo = objCallNotificationEvent.Call
    Dim objCallControl As ITBasicCallControl
    Set objCallControl = gobjReceivedCallInfo
    objCallControl.Answer
    End If




    + بخاطر طولانی شدن اين سری مطالب و نيز تخصصی بودن آن که باعث می شود مخاطبين کمتری داشته باشد بحث TAPI را به همين جا خاتمه می دهم . اما برای دوستان علاقمند که بخواهند مطالب بيشتری در اين زمينه آموخته و نيز مثالهای عملی از نوشتن برنامه های TAPI را در اختيار داشته باشند لينکهای زير را معرفی می کنم :
    آموزش TAPI در سايت MSDN
    سوالات مختلف در مورد TAPI
    سوالات مختلف در مورد TAPI
    Active Call Center
    يک کنترل ActiveX برای استفاده از TAPI
    نمونه ای از يک برنامه کامل TAPI در ويژوال بيسيک
    TAPI در ويژوال بيسيک
    کتابی در مورد برنامه نويسی TAPI در ويژوال بيسيک

  3. #83
    کاربرسایت PARS PARS آواتار ها
    تاریخ عضویت
    May 2008
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0


    موضوع : کنترل ماوس با 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 قرار دهيد

  4. #84
    کاربرسایت PARS PARS آواتار ها
    تاریخ عضویت
    May 2008
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0


    Name
    Description

    InternetCanonicalizeUrl
    Canonicalizes a URL, which includes converting unsafe characters and spaces into escape sequences.

    InternetCombineUrl
    Combines a base and relative URL into a single URL. The resultant URL will be canonicalized.

    InternetCrackUrl
    Cracks a URL into its component parts.

    InternetCreateUrl
    Creates a URL from its component parts.

    InternetOpenUrl
    Begins reading a complete FTP, Gopher, or HTTP URL.



    توابع FTP :

    Name
    Description

    FtpCreateDirectory
    Creates a new directory on the FTP server

    FtpDeleteFile
    Deletes a file stored on the FTP server

    FtpFindFirstFile
    Searches the specified directory of the given FTP session

    FtpGetCurrentDirectory
    Retrieves the current directory for the given FTP session

    FtpGetFile
    Retrieves a file from the FTP server and stores it under the specified file name, creating a new local file in the process

    FtpPutFile
    Stores a file on the FTP server

    FtpRemoveDirectory
    Removes the specified directory on the FTP server

    FtpRenameFile
    Renames a file stored on the FTP server

    FtpSetCurrentDirectory
    Changes to a different working directory on the FTP server



    توابع HTTP :

    Name
    Description

    HttpAddRequestHeaders
    Adds one or more HTTP request headers to the HTTP request handle

    HttpEndRequest
    Ends an HTTP request

    HttpOpenRequest
    Opens an HTTP request handle

    HttpQueryInfo
    Queries for information about an HTTP request

    HttpSendRequest
    Sends the specified request to the HTTP server

    HttpSendRequestEx
    Sends the specified request to the HTTP server



    بررسی جزئيات توابع Dial-Up موجود در WinInet :

    1 – تابع InternetAutodial : بطور اتوماتيک باعث شماره گيری اتصال پيش فرض اينترنت توسط مودم می شود . اگر اتصال با موفقيت انجام شود تابع مقدار true و در غير اينصورت false بر می گرداند .
    پارامترهای ورودی تابع :
    dwFlags : فلگ کنترل کننده عمليات اتصال می باشد و يکی از مقادير زير را می تواند داشته باشد :
    - INTERNET_AUTODIAL_FORCE_ONLINE
    - INTERNET_AUTODIAL_FORCE_UNATTENDED
    dwReserved : پارامتری رزرو شده است و بايستی صفر باشد .

    چگونگی declare کردن تابع :

    Public Declare Function InternetAutodial Lib "wininet.dll" (ByVal dwFlags As Long, ByVal dwReserved As Long) As Long

    2 – تابع InternetAutodialHangup : باعث قطع کردن يک اتصال dial-up اتوماتيک می شود . اگر قطع اتصال با موفقيت انجام شود تابع مقدار true و در غير اينصورت false برمی گرداند . تابع دارای يک پارامتر ورودی به اسم dwReserved است که رزرو شده بود و بايستی صفر باشد .

    چگونگی declare کردن تابع :

    Public Declare Function InternetAutodialHangup Lib "wininet.dll" (ByVal dwReserved As Long) As Long

    3 – تابع InternetDial : يک اتصال به اينترنت را با استفاده از يک ارتباط مودم مقداردهی اوليه می کند . پارامترهای ورودی آن عبارتند از :
    hwndParent : هندل مربوط به پنجره parent
    lpszConnectoid : نام ارتباط dial-up مورد استفاده
    dwFlags : فلگ کنترل اتصال که يکی از مقادير زير را می تواند داشته باشد :
    - INTERNET_AUTODIAL_FORCE_ONLINE
    - INTERNET_AUTODIAL_FORCE_UNATTENDED
    - INTERNET_DIAL_UNATTENDED : اتصال به اينترنت از طريق مودم بدون نمايش واسط کاربر
    lpdwConnection : آدرس داده ای که شامل عدد متناظر با اتصال است .
    dwReserved : پارامتری رزرو شده است و بايستی صفر باشد .

    چگونگی declare کردن تابع :

    Public Declare Function InternetDial Lib "wininet.dll" (ByVal hwndParent As Long, ByVal lpszConnectoid As String, ByVal dwFlags As Long, lpdwConnection As Long, ByVal dwReserved As Long) As Long

    4 – تابع InternetGetConnectedState : اين تابع وضعيت اتصال جاری به اينترنت را بر می گرداند . اگر اتصال برقرار باشد تابع مقدار true و در غير اينصورت false برمی گرداند .
    پارامترهای ورودی تابع عبارتند از :
    lpdwFlags : توصيف وضعيت اتصال . اين پارامتر يکی از مقادير زير را می تواند داشته باشد :
    - INTERNET_CONNECTION_MODEM
    - INTERNET_CONNECTION_LAN
    - INTERNET_CONNECTION_PROXY
    - INTERNET_CONNECTION_MODEM_BUSY
    dwReserved : پارامتری رزرو شده است و بايستی صفر باشد .

    چگونگی declare کردن تابع :

    Public Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal dwReserved As Long) As Long

    5 – تابع InternetGoOnline : پيغامی به کاربر برای دادن مجوز برای مقداردهی اوليه اتصال به يک URL را می دهد . اگر اينکار موفقيت آميز باشد مقدار true و در غير اينصورت false برمی گرداند . پارامترهای ورودی تابع عبارتند از :
    lpszURL : URL وب سايت مورد نظر برای اتصال
    hwndParent : هندل پنجره parent
    dwReserved : پارامتری رزرو شده است و بايستی صفر باشد .

    چگونگی declare کردن تابع :

    Public Declare Function InternetGoOnline Lib "wininet.dll" (ByVal lpszURL As String, ByVal hwndParent As Long, ByVal dwReserved As Long) As Long

    6 – تابع InyernetHangUp : به مودم می گويد که اتصال به اينترنت را قطع کند . پارامترهای اين تابع عبارتند از :
    dwConnection : شماره مربوط به اتصالی که می خواهيم آنرا قطع کنيم .
    dwReserved : پارامتری رزرو شده است و بايستی صفر باشد .

    چگونگی declare کردن تابع :

    Public Declare Function InternetHangUp Lib "wininet.dll" (ByVal dwConnection As Long, ByVal dwReserved As Long) As Long

    7 – تابع InternetSetDialState : تنظيم نمودن وضعيت شماره گيری مودم . اگر تنظيم با موفقيت انجام شود تابع true و در غيراينصورت false برمی گرداند . پارامترهای ورودی تابع عبارتند از :


    lpszConnectoid : نام اتصال dial-up
    dwState : وضعيت مربوط به اتصال dial-up . در حال حاضر اين پارامتر تنها مقدار INTERNET_DIALSTATE_DISCONNECTED را می تواند داشته باشد .

    dwReserved : پارامتری رزرو شده است و بايستی صفر باشد .

    چگونگی declare کردن تابع :

    Public Declare Function InternetSetDialState Lib "wininet.dll" (ByVal lpszConnectoid As String, ByVal dwState As Long, ByVal dwReserved As Long) As Long

    بررسی فلگهای مورد استفاده در توابع dial-up :

    1 – فلگهای تابع InternetDial :

    Public Const INTERNET_DIAL_UNATTENDED = &H8000& '0x8000
    Public Const INTERENT_GOONLINE_REFRESH = &H1 '0x00000001
    Public Const INTERENT_GOONLINE_MASK = &H1 '0x00000001

    2 – فلگهای تابع InternetAutoDial :

    Public Const INTERNET_AUTODIAL_FORCE_ONLINE = 1
    Public Const INTERNET_AUTODIAL_FORCE_UNATTENDED = 2
    Public Const INTERNET_AUTODIAL_FAILIFSECURITYCHECK = 4


    3 – فلگهای تابع InternetGetConnectedState :

    Public Const INTERNET_CONNECTION_MODEM = 1
    Public Const INTERNET_CONNECTION_LAN = 2
    Public Const INTERNET_CONNECTION_PROXY = 4
    Public Const INTERNET_CONNECTION_MODEM_BUSY = 8

    4 - فلگهای مربوط به dial handler اختصاصی :

    Public Const INTERNET_CUSTOMDIAL_CONNECT = 0
    Public Const INTERNET_CUSTOMDIAL_UNATTENDED = 1
    Public Const INTERNET_CUSTOMDIAL_DISCONNECT = 2

    5 – فلگهای عملياتی پشتيبانی شده برای dial handler اختصاصی :
    Public Const INTERNET_CUSTOMDIAL_SAFE_FOR_UNATTENDED = 1
    Public Const INTERNET_CUSTOMDIAL_WILL_SUPPLY_STATE = 2
    Public Const INTERNET_CUSTOMDIAL_CAN_HANGUP = 4

    6 - وضعيتهای مربوط به InternetSetDialState :

    Public Const INTERNET_DIALSTATE_DISCONNECTED = 1




    در اين بخش که آخرين بخش از مباحث WinInet API است برنامه ای نمونه برای کار با توابع مودمی اين کتابخانه ارائه خواهيم داد :

    برای نوشتن برنامه ای که بتوان از طريق آن با استفاده از مودم به اينترنت متصل شد بصورت زير عمل می کنيم :
    در ابتدا بايستی تابع InternetDial را Declare کنيم :

    Private Declare Function InternetDial Lib "wininet.dll" Alias "InternetDialA" (ByVal hwndParent As Long, ByVal lpszConnectoid As String, ByVal dwFlags As Long, lpdwConnection As Long, ByVal dwReserved As Long) As Long

  5. #85
    کاربرسایت PARS PARS آواتار ها
    تاریخ عضویت
    May 2008
    نوشته ها
    666
    سپاس ها
    0
    سپاس شده 0 در 0 پست

    Re: آموزش گام به گام ویژوال بیسیک6.0


    سپس وضعيت شماره گيری را در متغيری به اسم lOption قرار می دهيم . اين متغير می تواند مقادير زير را داشته باشد :
    - DF_FORCE_ONLINE
    - DF_FORCE_UNATTENDED
    - DF_DIAL_FORCE_PROMPT
    - DF_DIAL_UNATTENDED
    حال نام اتصالی را که می خواهيم از آن استفاده شود در متغيری به اسم ConnectionName قرار می دهيم .
    همچنين دو متغير به اسم ConnectionID و RetVal را از نوع long تعريف می کنيم .

    حال تابع InternetDial را بصورت زير صدا می کنيم :

    RetVal = InternetDial(Me.hwnd, ConnectionName, lOption, ConnectionID, 0)

    اگر RetVal مخالف صفر باشد عمل Dial بدرستی انجام شده است .

    برای قطع اتصال فوق بايستی از تابع InternetHangUp استفاده کنيم . برای اينکار ابتدا تابع فوق را Declare می کنيم :

    Private Declare Function InternetHangUp Lib "wininet.dll" (ByVal dwConnection As Long, ByVal dwReserved As Long) As Long

    سپس اين تابع را بصورت زير فراخوانی می کنيم :

    RetVal = InternetHangUp(ConnectionID, 0)

    برای اينکه مودم را مجبور کنيم تا بطور اتوماتيک از اتصال پيش فرض سيستم برای شماره گيری استفاده کند از تابع InternetAutodial استفاده می کنيم .
    برای اينکار ابتدا تابع را Declare می کنيم :

    Private Declare Function InternetAutodial Lib "wininet.dll" (ByVal dwFlags As Long, ByVal hwndParent As Long) As Long

    سپس تابع را بصورت زير فراخوانی می کنيم :

    RetVal = InternetAutodial(ADF_FORCE_UNATTENDED, Me.hwnd)

    اگر RetVal مخالف صفر باشد عمل AutoDial بدرستی انجام شده است .

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

    Private Declare Function InternetAutodialHangup Lib "wininet.dll" (ByVal dwReserved As Long) As Long

    فراخوانی اين تابع بصورت زير است :

    Call InternetAutodialHangup(0)

    برای اينکه بفهيم آيا اتصال به اينترنت وجود دارد يا نه از تابع InternetGetConnectedStateEx استفاده می کنيم . برای اينکار ابتدا تابع را Declare می کنيم :

    Private Declare Function InternetGetConnectedStateEx Lib "wininet.dll" Alias "InternetGetConnectedStateExA" (lpdwFlags As Long, lpszConnectionName As Long, dwNameLen As Long, ByVal dwReserved As Long) As Long

    سپس تابع را بصورت زير فراخوانی می کنيم :

    strConnectionName = Space(256)
    lNameLen = 256
    lPtr = StrPtr(strConnectionName)
    lNameLenPtr = VarPtr(lNameLen)
    RetVal = InternetGetConnectedStateEx(lConnectionFlags, ByVal lPtr, ByVal lNameLen, 0)

    که strConnectionName از نوع String و بقيه متغيرها از نوع Long هستند .

    اگر RetVal مخالف صفر باشد اتصال برقرار است .

    ثابتهايی که در کدهای فوق استفاده شده عبارتند از :

    Private Const INTERNET_AUTODIAL_FORCE_ONLINE = 1&
    Private Const INTERNET_AUTODIAL_FORCE_UNATTENDED = 2&
    Private Const INTERNET_AUTODIAL_FAILIFSECURITYCHECK = 4&

    Private Const INTERNET_DIAL_FORCE_PROMPT = &H2000
    Private Const INTERNET_DIAL_SHOW_OFFLINE = &H4000
    Private Const INTERNET_DIAL_UNATTENDED = &H8000

+ پاسخ به موضوع
صفحه 6 از 6 نخستنخست ... 4 5 6

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

     

کاربران خواننده این موضوع : 0

فعالیت :(نمایش - خوانندگان)

There are no names to display.

مجوز های ارسال و ویرایش

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