الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طريقة الاتصال بالانترنت

مغلق
بدأه AAALLL في 12 ديسمبر 2001 · 18 رد · 1,703 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أهلا بجميع الاخوان في هذا المنتدى الرائع ... بصراحة أنا عضو جديد و مثل ما تعودتم كل عضو جديد وراه سؤال جديد و سؤالي هو :

عندى فورم يحتوي على أربعة خانات TextBox

المطلوب من المستخدم أن يدخل في الخانة الأولى اسم المستخدم أو ال Username و في الثاية كلمة المرور أو ال Password و في الثالثة رقم الاتصال أو Telephone Number و في الرابعة البروكسي أو Proxy

و المطلوب من الاخوان و الأخوات المشاركين و المشاركات في هذا المنتدى أن يتكرموا و يتعطفوا و يرأفوا و يشفقوا على من لا يعلم بتقديم المساعدة في طريقة عمل مثل هذا البرنامج لفائدتي الشخصية و لجميع رواد هذا المنتدى و الشكر الجزيل لمن يساهم في ذلك مقدما

:) :) :)

#2

مالكم ... لماذا لا أحد يرد ؟!!! :'(

#3

FUO (For UP Only) :)

#4

راجع هذا الرابط

اضغط هنا

#5

شكرا جزيلا يا أخ Abdullah Mostafa و لكن...,

هذا الكود يؤدي إلى طلب الاتصال الافتراضي لديك مباشرة ... و أنا أقصد أن يتم الاتصال دون وجود أي اتصال في شبكة الطلب الهاتفي

أشكرك مرة أخرى لتجاوبك...

#6

يا شباب ... لماذا لا أحد يرد؟؟

ردوا أرجوكم أكتبوا أي شيء :'( :'( :'(

#7

آآآآآآآآآآآخ يا أعضاء المنتدى فاضيين للعراك و بس لكن لما الواحد يحط موضوع مستاهل ....:'( :'( :'(

#8

ضع عدد 2 تكست بوكس و اداة ليست بوكس وزر أمر

2 Text Box

1 List Box

1 Command Bottom

والصق الكود الاتي :

Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" (pDst As Any, ByVal pSrc _
As String, ByVal ByteLen As Long)
Private Declare Sub ZeroMemory Lib "kernel32.dll" _
Alias "RtlZeroMemory" (Destination As Any, ByVal Length As Long)

Const RAS95_MaxEntryName = 256
Const RAS_MaxPhoneNumber = 128
Const RAS_MaxCallbackNumber = RAS_MaxPhoneNumber

Const UNLEN = 256
Const PWLEN = 256
Const DNLEN = 12
Private Type RASDIALPARAMS
   dwSize As Long ' 1052
   szEntryName(RAS95_MaxEntryName) As Byte
   szPhoneNumber(RAS_MaxPhoneNumber) As Byte
   szCallbackNumber(RAS_MaxCallbackNumber) As Byte
   szUserName(UNLEN) As Byte
   szPassword(PWLEN) As Byte
   szDomain(DNLEN) As Byte
End Type

Private Type RASENTRYNAME95
    'set dwsize to 264
    dwSize As Long
    szEntryName(RAS95_MaxEntryName) As Byte
End Type

Private Declare Function RasDial Lib "rasapi32.dll" Alias _
"RasDialA" (ByVal lprasdialextensions As Long, ByVal lpcstr _
As String, ByRef lprasdialparamsa As RASDIALPARAMS, ByVal dword _
As Long, lpvoid As Any, ByRef lphrasconn As Long) As Long
Private Declare Function RasEnumEntries Lib "rasapi32.dll" Alias _
"RasEnumEntriesA" (ByVal reserved As String, ByVal lpszPhonebook As _
String, lprasentryname As Any, lpcb As Long, lpcEntries As Long) As Long
Private Declare Function RasGetEntryDialParams Lib "rasapi32.dll" Alias _
"RasGetEntryDialParamsA" (ByVal lpcstr As String, ByRef lprasdialparamsa As _
RASDIALPARAMS, ByRef lpbool As Long) As Long

Private Function Dial(ByVal Connection As String, ByVal UserName As_
 String, ByVal Password As String) As Boolean
    Dim rp As RASDIALPARAMS, h As Long, resp As Long
    rp.dwSize = Len(rp) + 6
    ChangeBytes Connection, rp.szEntryName
    ChangeBytes "", rp.szPhoneNumber 'Phone number stored for the connection
    ChangeBytes "*", rp.szCallbackNumber 'Callback number stored for the connection
    ChangeBytes UserName, rp.szUserName
    ChangeBytes Password, rp.szPassword
    ChangeBytes "*", rp.szDomain 'Domain stored for the connection
    'Dial
    resp = RasDial(ByVal 0, ByVal 0, rp, 0, ByVal 0, h)   'AddressOf RasDialFunc
    Dial = (resp = 0)
End Function

Private Function ChangeToStringUni(Bytes() As Byte) As String
    'Changes an byte array to a Visual Basic unicode string
    Dim temp As String
    temp = StrConv(Bytes, vbUnicode)
    ChangeToStringUni = Left(temp, InStr(temp, Chr(0)) - 1)
End Function

Private Function ChangeBytes(ByVal str As String, Bytes() As Byte) As Boolean
    'Changes a Visual Basic unicode string to an byte array
    'Returns True if it truncates str
    Dim lenBs As Long 'length of the byte array
    Dim lenStr As Long 'length of the string
    lenBs = UBound(Bytes) - LBound(Bytes)
    lenStr = LenB(StrConv(str, vbFromUnicode))
    If lenBs > lenStr Then
        CopyMemory Bytes(0), str, lenStr
        ZeroMemory Bytes(lenStr), lenBs - lenStr
    ElseIf lenBs = lenStr Then
        CopyMemory Bytes(0), str, lenStr
    Else
        CopyMemory Bytes(0), str, lenBs 'Queda truncado
        ChangeBytes = True
    End If
End Function

Private Sub Command1_Click()
    Dial List1.Text, Text1, Text2
End Sub


Private Sub List1_Click()
    Dim rdp As RASDIALPARAMS, t As Long
    rdp.dwSize = Len(rdp) + 6
    ChangeBytes List1.Text, rdp.szEntryName
    'Get User name and password for the connection
    t = RasGetEntryDialParams(List1.Text, rdp, 0)
    If t = 0 Then
        Text1 = ChangeToStringUni(rdp.szUserName)
        Text2 = ChangeToStringUni(rdp.szPassword)
    End If
End Sub

Private Sub Form_Load()
    'example created by Daniel Kaufmann (daniel@i.com.uy)
    'load the connections
    Text2.PasswordChar = "*"
    Command1.Caption = "Dial"
    Dim s As Long, l As Long, ln As Long, a$
    ReDim r(255) As RASENTRYNAME95

    r(0).dwSize = 264
    s = 256 * r(0).dwSize
    l = RasEnumEntries(vbNullString, vbNullString, r(0), s, ln)
    For l = 0 To ln - 1
        a$ = StrConv(r(l).szEntryName(), vbUnicode)
        List1.AddItem Left$(a$, InStr(a$, Chr$(0)) - 1)
    Next
    If List1.ListCount > 0 Then
        List1.ListIndex = 0
        List1_Click
    End If
End Sub

هذا الكود يقوم بالاتصال من ايقونات الاتصال لديك اي يعتمد عليها ولكنه يتصل من برنامجك مباشرة .

وباقي لنا نقطه واحد وهي كيف نضيف اتصال جديد من برنامجك مباشرة وسوف ابحثها لك وإن شاء الله القاها .

اما البروكسي . فأنت لا تحتاجه الا للتصفح اي ان الاتصال لا يسلتزم بروكسي ولكن هل ترمي الى تغييره مباشرة من برنامجك ؟

اخوك

#9

شكرا لك يا أخ منصور على الرد

بالنسبة للكود فهو ممتاز جدا و لكنني أريد عمل برنامج أنقله معي إلى أي مكان في قرص مرن و عندما أشغله أدخل فيه بياناتي فيقوم بالاتصال دون وجود أي اتصال في شبكة الطلب الهاتفي و دون أن يقوم بوضع اتصال فيها لأنني أعمل على أجهزة محمية من تعديل محتويات شبكة الطلب الهاتفي لا تظن اني ناوي ألعب ولا شي بس مسألة فتح مجال لي صعبة و تطول و تعرف اجراآتنا الروتينية المملة و عندي اذن بإمكانية الاتصال بطريقة أخرى ... المهم ممكن تشرح لي طريقة استخدام الأداة Microsoft Internet Transfer Control و أما بالنسبة للبروكسي ففي الحقيقة أنا أريد البرنامج يغيره من عنده.

شكرا لك يا أخ منصور ألف شكر :)

#10

على فكره اذا الاجهزة اللي تشتغل عليها ويندوز 2000 او انتي

ترى المسالة اصعب مما تتوقع واذا 98 بسيطه ان شاء الله .

لان السيكورتي في الـ 2000 قوي نوعا ما .

اخوك

#11

السلام عليكم ورحمة الله وبركاته

شكرا للاخ منصور على رده

بالنسبة للكود فهو موجود عندي وقد قمت برنامج يقوم بإنشاء اتصال جديد لكن اصبر علي حتى اقوم بإكمال البرنامج لإعداد البروكسي والبورت من الريجستري وشكرا

#12

شكرا لك يا أخ Programmer2001 و أتمنى أن يجهز الكود سريعا لكي نحصل عليه و لكنني أريد البرنامج يقوم بالاتصال دون الحاجة إلى وضع اتصال في شبكة الطلب الهاتفي و لكن عندي بعض الأسئلة على برنامجك

هل نستطيع جعل البرنامج يحذف الاتصال تلقائيا بعد قطع الاتصال؟

و عندما نغير البروكسي فهل تكون التغييرات سارية المفعول في حينها؟

أما بالنسبة لك يا أخ منصور فانا أشكرك لتجاوبك و أيضا لدي بعض الأسئلة

فهل يمكنني أن أجعل البرنامج يقوم باظهار الرسالة "جاري الاتصال" حينما يقوم بالاتصال و الرسالة "متصل" بعد أن يتصل و الرسالة "غير متصل" عندما نقوم بقطع الاتصال؟

و هل يمكنني إضافة زر قطع الاتصال إلى البرنامج؟

شكرا لكل من تجاوب معنا و من سيتجاوب معنا

#13

UP

#14

اخوي ...

كيف حالك والله من قل الصبر ... هههه

تفضل عدلت لك الكود وفيه الان اظهار حالته الاتصال بس بقى نقطة انا ابحث عنها إن شاء الله القاها وهي قطع الاتصال Hang Up اضف ليبل على الفورم Label

Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" (pDst As Any, ByVal pSrc _
As String, ByVal ByteLen As Long)
Private Declare Sub ZeroMemory Lib "kernel32.dll" _
Alias "RtlZeroMemory" (Destination As Any, ByVal Length As Long)

Const RAS95_MaxEntryName = 256
Const RAS_MaxPhoneNumber = 128
Const RAS_MaxCallbackNumber = RAS_MaxPhoneNumber

Const UNLEN = 256
Const PWLEN = 256
Const DNLEN = 12
Private Type RASDIALPARAMS
   dwSize As Long ' 1052
   szEntryName(RAS95_MaxEntryName) As Byte
   szPhoneNumber(RAS_MaxPhoneNumber) As Byte
   szCallbackNumber(RAS_MaxCallbackNumber) As Byte
   szUserName(UNLEN) As Byte
   szPassword(PWLEN) As Byte
   szDomain(DNLEN) As Byte
End Type

Private Type RASENTRYNAME95
    'set dwsize to 264
    dwSize As Long
    szEntryName(RAS95_MaxEntryName) As Byte
End Type

Private Declare Function RasDial Lib "rasapi32.dll" Alias _
"RasDialA" (ByVal lprasdialextensions As Long, ByVal lpcstr _
As String, ByRef lprasdialparamsa As RASDIALPARAMS, ByVal dword _
As Long, lpvoid As Any, ByRef lphrasconn As Long) As Long
Private Declare Function RasEnumEntries Lib "rasapi32.dll" Alias _
"RasEnumEntriesA" (ByVal reserved As String, ByVal lpszPhonebook As _
String, lprasentryname As Any, lpcb As Long, lpcEntries As Long) As Long
Private Declare Function RasGetEntryDialParams Lib "rasapi32.dll" Alias _
"RasGetEntryDialParamsA" (ByVal lpcstr As String, ByRef lprasdialparamsa As _
RASDIALPARAMS, ByRef lpbool As Long) As Long

Private Function Dial(ByVal Connection As String, ByVal UserName As String, ByVal _
Password As String) As Boolean
    Dim rp As RASDIALPARAMS, h As Long, resp As Long
    rp.dwSize = Len(rp) + 6
    ChangeBytes Connection, rp.szEntryName
    ChangeBytes "", rp.szPhoneNumber 'Phone number stored for the connection
    ChangeBytes "*", rp.szCallbackNumber 'Callback number stored for the connection
    ChangeBytes UserName, rp.szUserName
    ChangeBytes Password, rp.szPassword
    ChangeBytes "*", rp.szDomain 'Domain stored for the connection
    'Dial
    resp = RasDial(ByVal 0, ByVal 0, rp, 0, ByVal 0, h)   'AddressOf RasDialFunc
    Dial = (resp = 0)
    Me.Label1.Refresh
    Me.Label1.Caption = "Now You are connect"
End Function

Private Function ChangeToStringUni(Bytes() As Byte) As String
    'Changes an byte array to a Visual Basic unicode string
    Dim temp As String
    temp = StrConv(Bytes, vbUnicode)
    ChangeToStringUni = Left(temp, InStr(temp, Chr(0)) - 1)
Me.Label1.Refresh
Me.Label1.Caption = "Now you are Desconnect"
End Function

Private Function ChangeBytes(ByVal str As String, Bytes() As Byte) As Boolean
    'Changes a Visual Basic unicode string to an byte array
    'Returns True if it truncates str
    Dim lenBs As Long 'length of the byte array
    Dim lenStr As Long 'length of the string
    lenBs = UBound(Bytes) - LBound(Bytes)
    lenStr = LenB(StrConv(str, vbFromUnicode))
    If lenBs > lenStr Then
        CopyMemory Bytes(0), str, lenStr
        ZeroMemory Bytes(lenStr), lenBs - lenStr

    ElseIf lenBs = lenStr Then
        CopyMemory Bytes(0), str, lenStr
    Else
        CopyMemory Bytes(0), str, lenBs 'Queda truncado
        ChangeBytes = True

    End If
Me.Label1.Refresh
Form1.Label1.Caption = "Trying To Connect .."
End Function

Private Sub Command1_Click()
    Dial List1.Text, Text1, Text2
End Sub


Private Sub Command2_Click()
End
End Sub

Private Sub List1_Click()
    Dim rdp As RASDIALPARAMS, t As Long
    rdp.dwSize = Len(rdp) + 6
    ChangeBytes List1.Text, rdp.szEntryName
    'Get User name and password for the connection
    t = RasGetEntryDialParams(List1.Text, rdp, 0)
    If t = 0 Then
        Text1 = ChangeToStringUni(rdp.szUserName)
        Text2 = ChangeToStringUni(rdp.szPassword)
    End If
End Sub

Private Sub Form_Load()

    Text2.PasswordChar = "*"
    Command1.Caption = "Dial"
    Dim s As Long, l As Long, ln As Long, a$
    ReDim r(255) As RASENTRYNAME95

    r(0).dwSize = 264
    s = 256 * r(0).dwSize
    l = RasEnumEntries(vbNullString, vbNullString, r(0), s, ln)
    For l = 0 To ln - 1
        a$ = StrConv(r(l).szEntryName(), vbUnicode)
        List1.AddItem Left$(a$, InStr(a$, Chr$(0)) - 1)
    Next
    If List1.ListCount > 0 Then
        List1.ListIndex = 0
        List1_Click
    End If
End Sub

وسامحنا ترى قصرنا بحقك

#15

:cool:

#16

يا شباااااااااااااااااااااااب ... يا شاباااااااااااااااااااات ... أين الفطاحلة؟؟؟؟ ... أين المشرفين؟؟؟؟

هل لا حياة لمن أنادي؟؟؟؟

#17

السلام عليكم

هل يمكن وضع مدة الاتصال يعني كم دقيقة وساعة انت متصل في الانترنت

ولكم الشكر بعد الله

#18
UP
#19

UP

هذا الموضوع مغلق.

مواضيع مشابهة