А можно сделать Звонилку на VB?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Maitris
Постоялец
Постоялец
 
Сообщения: 656
Зарегистрирован: 02.03.2005 (Ср) 21:00
Откуда: Из другой цивилизации.

А можно сделать Звонилку на VB?

Сообщение Maitris » 23.03.2005 (Ср) 21:59

Вообще, как набрать номер воспользовавшись модемом?
И вот еще, можно ли взять настройки соединения (конкретно нужен тип набора номера - имп. или тоновый) с дефолтового соединения?
----

IvanSh
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 20.03.2005 (Вс) 15:20
Откуда: Minsk

Сообщение IvanSh » 23.03.2005 (Ср) 22:36

Ответ по САБЖу - Да!
и достойный тому пример MDialer
Наши люди лёгкими путями не идут!

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 23.03.2005 (Ср) 22:52

API-Guide Рулит!!!

Код: Выделить всё
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

Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 23.03.2005 (Ср) 22:53

IvanSh писал(а):достойный тому пример MDialer


Сам его юзаю!!!
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

Inferno
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 26.01.2005 (Ср) 1:06

Сообщение Inferno » 23.03.2005 (Ср) 22:54

Попробуй через гипер терминал.
ATDT Phone_Number- набор в тоновом режиме
ATDP Phone_Number - набор в импульсном
ATZ- разорвать связь.



Phone_Number-номер дозвона.
Ну и т.д

Maitris
Постоялец
Постоялец
 
Сообщения: 656
Зарегистрирован: 02.03.2005 (Ср) 21:00
Откуда: Из другой цивилизации.

Сообщение Maitris » 23.03.2005 (Ср) 22:57

Jenizix Thanks, попробую заюзать этот код... А полного нет? В смысле файла проэкта...
----

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 23.03.2005 (Ср) 23:17

Сегодня поющу если найду выложу, а если не найду, то сам напишу и выложу!!!

P.S. См. мою подпись =)))))
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 23.03.2005 (Ср) 23:58

Вот кое что нашел... Далеко ни MDialer... =(

Скачай API-Guide :

API-Guide содержит более 900 функций в примерах на VB.
Примеры содержат комментарии и готовы к употреблению.
Вложения
RasDial.zip
Вот...
(6.3 Кб) Скачиваний: 39
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

Maitris
Постоялец
Постоялец
 
Сообщения: 656
Зарегистрирован: 02.03.2005 (Ср) 21:00
Откуда: Из другой цивилизации.

Сообщение Maitris » 24.03.2005 (Чт) 20:37

Jenizix Скачал, рульная вещь, а главное денег и регистрации не просит, баннеры не показывает.. Фриварка одним словом..
----


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 63

    TopList