Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Połączenie modemowe
ksieluk
from Alex city




Typ: neutral
Postów: 30
Zarejestrowany: Mar 2004
Połączenie modemowe

Jak sprawdzić z poziomu vb z jakim numerem połączony jest mój modem i jak zablokować niechciane numery (coś w postaci blokowania dialerów)


_____________________________________________
Jeżeli to jest pytanie - to pomóż mi. Jeśli odpowiedź to  powodzenia :-)

05-07-2004 21:43
Pokaż profil ksieluk  Wyślij email do ksieluk   
m-a-x



Typ: neutral
Postów: 366
Zarejestrowany: Jan 2003

Na wstępie zaznaczam że niczego teraz nie testowalem m.in. dlatego że nie mam na to teraz czasu i nawet modemu zainstalowanego

Sprawdzanie z jakim numerem jesteśmy połączeni:

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 RASCONN
    dwSize As Long
    hRasConn As Long
    szEntryName(0 To 256) As Byte
    szDeviceType(0 To 16) As Byte
    szDeviceName(0 To 128) As Byte
    pad As Byte
End Type

Private Declare Function RasEnumConnections Lib "rasapi32" Alias "RasEnumConnectionsA" (ByVal lprasconn As Long, ByVal lpcb As Long, ByVal lpcConnections 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 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 GetRasNumber() as string
    Dim rdp As RASDIALPARAMS, t As Long
    Dim conn As RASCONN
    Dim y As Long, z As Long

    If RasEnumConnections(VarPtr(conn), VarPtr(y), VarPtr(z)) = 0 Then


        t = RasGetEntryDialParams(ChangeToStringUni(conn.szEntryName), rdp, 0)
        If t = 0 Then
            GetRasNumber = ChangeToStringUni(rdp.szPhoneNumber)
        End If
    End If
End Sub


Blokowanie polegało by na tym że gdy okaże się że jesteś połączony z netem i numer podany przez w/w funkcje nie zgadza sie z podanym przez Ciebie rozłaczasz połączenie za pomocą

Private Declare Function RasHangUp Lib "rasapi32.dll" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long

Niestety nie wiem jak usunąć jakiś wpis z listy połączeń - moze ktoś inny Ci pomoże

Przypominam że nie wiem czy ta funkcja napewno zadziała


_____________________________________________

Problemem zazwyczaj nie jest brak osób znających odpowiedź a zadanie właściwego pytania!

06-07-2004 09:15
Pokaż profil m-a-x  Wyślij email do m-a-x   
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Sorry, że przyczepiam się do nieswojego posta, ale z i ja kiedyś zadałem podobne pytanie, lecz wtedy nikt wiedział (lub nie chciał powiedzieć-był konkurs TP SA) jak to zrobić .

1.) Nie zadeklarowałeś stałych:
Const RAS95_MaxEntryName = 256
Const RAS_MaxPhoneNumber = 128
Const RAS_MaxCallbackNumber = RAS_MaxPhoneNumber
Const UNLEN = 256
Const PWLEN = 256
Const DNLEN = 12

2.) Funkcja GetRasNumber powinna się kończyć wyrażeniem: "End function"

3.) Całość nie działa-zwraca string o zerowej długości.

4.) Czy zdradzisz mi skąd to wytrzasnąłeś?


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


06-07-2004 10:45
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
m-a-x



Typ: neutral
Postów: 366
Zarejestrowany: Jan 2003

etam czepiasz sie szczegółow heheheheheh

Przyznam że wtedy - pewnie jak większość sam miałem chorą ambicje napisania antydialera ale sie jakoś z czasem nie wyrobilem.

Jak już mowilem ja to wszystko tworzyłem na gorąco tzn nie wklepywalem tego wcześniej do VB i dlatego takie błędy: o stałych faktycznie zapomnialem no a zakonczenia funkcji zapomnialem przerobić bo na początku miała to być procedura.

Oczywiście że nie wklepywałem tego wszystkiego sam! Nie wiem ile już razy tu mówiłem - zachęcałem ludzi do kożystania z ApiGuide, vbFAQ i opcji szukania na forum. Gdyby większość popatrzyła w te źródła nie byłoby połowy pytań . A konkretniej otworzyłem sobie ApiGuide i złożyłem ze 3 przykłady w całość. Zaznaczyłem odrazu ze nie wiem czy to zadziała bo ani tego nie testowałem ani nie analizowałem zabardzo całości kodu Ale jak by ktoś popracował chwilke nad tym to na bank by zadzialalo.

Funkcja napewno zwroci pusty string jak nie jesteś połączony - napewno byłes? (pytam z ciekawości - nie twierdze że funkcja działa bo dalej jej nie testowałem )


_____________________________________________

Problemem zazwyczaj nie jest brak osób znających odpowiedź a zadanie właściwego pytania!

06-07-2004 15:13
Pokaż profil m-a-x  Wyślij email do m-a-x   
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Tak, na pewno byłem połączony... Może JA kiedyś spróbuję się pobawić tym kodem .


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


06-07-2004 15:43
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
PIEKAR




Typ: neutral
Postów: 10
Zarejestrowany: Sep 2004
Pozwolę sobie podłączyć siędo tematu....

Mianowicie, chciałbym z poziomu VB uzyskać funkcjonalność dialera (dialer.exe) windowsowego. Jaki ocx lub dll'ke podłączyć ?

p.s: Czy ktoś słyszał o telefonach stacjonarnych podłączanych w jakiś sposób do komputera (np po USB) ??

DZIĘKI!


_____________________________________________
VB, VBS, ASP, ASP.NET, .....

21-10-2004 08:29
Pokaż profil PIEKAR  Wyślij email do PIEKAR   
Wszystkich odpowiedzi: 5 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1