Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2011, 18:02   #1
Mr_ViK
Форумчанин
 
Регистрация: 12.08.2011
Сообщений: 124
По умолчанию Вопрос по VB

Привет всем!
У меня такой вопрос: возможно ли реализовать в программе поиск всех возможных подключений к интернету и чтобы потом юзер смог выбрать нужное, если да то как это реализовать.
ПС: есть подобная программа:
Вложения
Тип файла: zip Dialupass.zip (51.2 Кб, 13 просмотров)
Mr_ViK вне форума Ответить с цитированием
Старый 30.08.2011, 22:08   #2
Mr_ViK
Форумчанин
 
Регистрация: 12.08.2011
Сообщений: 124
По умолчанию

Значит никто не знает?
Mr_ViK вне форума Ответить с цитированием
Старый 30.08.2011, 22:51   #3
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

Можно.
Только у меня нет исходника именно на VB, но есть на PureBasic.
Переписать будет не трудно.
Код:
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #ListIcon_0
  #Button_0
  #Button_1
EndEnumeration



#RAS_MaxEntryName = 256;
#RAS_MaxPhoneNumber = 128;
#RAS_MaxCallbackNumber = 128;
#RAS_MaxAreaCode = 10;
#RAS_MaxDeviceType = 16;
#RAS_MaxDeviceName = 128;
#RAS_MaxPadType = 32;
#RAS_MaxX25Address = 200;
#RAS_MaxFacilities = 200;
#RAS_MaxUserData = 200;
#UNLEN = 256;
#PWLEN = 256;
#DNLEN = 15;

Structure RASDIALPARAMS
  dwSize.l
  szEntryName.c[#RAS_MaxEntryName+1]
  szPhoneNumber.c[#RAS_MaxPhoneNumber+1]
  szCallbackNumber.c[#RAS_MaxCallbackNumber+1]
  szUserName.c[#UNLEN+1 ]
  szPassword.c[#PWLEN+1 ]
  szDomain.c[#DNLEN+1 ]
  dwSubEntry.l
  *dwCallbackId
  dwIfIndex.l
EndStructure

Structure  RASENTRYNAME95
  dwSize.l
  szEntryName.s{#MAX_PATH}
EndStructure

Structure RASCONNSTATUS
  dwSize.l
  RasConnState.l
  dwError.l
  szDeviceType.b[16]
  szDeviceName.b[32]
EndStructure

#RASBASE = 600
#ERROR_BUFFER_TOO_SMALL = #RASBASE+3;

Procedure GetConnectList(Gadget) ; Список подключений
  Protected  Dim ConnectList.RASENTRYNAME95(255)
  ConnectList(0)\dwSize = SizeOf(RASENTRYNAME95) 
  Size=256 * ConnectList(0)\dwSize
  v=RasEnumEntries_(#Null, #Null, @ConnectList(), @Size, @ln) 
  If v=#ERROR_BUFFER_TOO_SMALL
    RasEnumEntries_(#Null, #Null, @ConnectList(), @Size, @ln)
  EndIf
  For l = 0 To ln - 1
    AddGadgetItem(Gadget, -1, ConnectList(l)\szEntryName)
  Next 
  ProcedureReturn ln
EndProcedure

Procedure Connect(ConnectName.s) ; Установка связи с инетом. ConnectName - имя учетки инета
  FParams.RASDIALPARAMS
  pass.c
  FParams\dwSize = 1052;SizeOf(RASDIALPARAMS)
  PokeS(@FParams\szEntryName, ConnectName, Len(ConnectName))
  RasGetEntryDialParams_(#Null,@FParams,@pass)
  FConnHandle = 0
  RasDial_(0,0, @FParams, 0, 0, @FConnHandle)
  ProcedureReturn FConnHandle
EndProcedure

Procedure StatusConnect(ConnectionID, *Point.RASCONNSTATUS)
  ProcedureReturn RasGetConnectStatus_(ConnectionID, *Point)
EndProcedure


Procedure DisConnect(ConnectionID) ; Разрыв связи с инетом. ConnectionID - идентификатор подключения, полученый процедурой Connect
  Protected Result=0
  If ConnectionID
    If RasHangUp_(ConnectionID)=#ERROR_SUCCESS
      Result=1
    EndIf
  EndIf
  ProcedureReturn Result
EndProcedure

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 257, 202, 285, 200, "Connect inet",  #PB_Window_Invisible | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_TitleBar )
    ;If CreateGadgetList(WindowID(#Window_0))
      ListIconGadget(#ListIcon_0, 5, 4, 184, 194, "Список инет-учёток", 170,#PB_ListIcon_GridLines|#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_FullRowSelect)
      GetConnectList(#ListIcon_0)
      ButtonGadget(#Button_0, 195, 80, 85, 25, "Соеденится")
      ButtonGadget(#Button_1, 195, 110, 85, 25, "Разъеденится")
      HideWindow(#Window_0, 0)
    ;EndIf
  EndIf
EndProcedure

ConnectStatus.RASCONNSTATUS

Open_Window_0()


Repeat  
  Event=WaitWindowEvent()
  If Event=#PB_Event_Gadget
    Select EventGadget()
      Case #Button_0
        Pos=GetGadgetState(#ListIcon_0)
        If Pos>=0
          If Inet_ConnectionID<>0
            DisConnect(Inet_ConnectionID)
            Inet_ConnectionID=0
          EndIf
          ConnectName.s=GetGadgetItemText(#ListIcon_0,Pos,0)
          If ConnectName
            Inet_ConnectionID=Connect(ConnectName)
            If Inet_ConnectionID
              ConnectStatus\dwSize = SizeOf(RASCONNSTATUS)
              StatusConnect(ConnectionID, @ConnectStatus)
              If  ConnectStatus\RasConnState
                DisableGadget(#ListIcon_0,1) : DisableGadget(#Button_0,1)
              Else
                MessageRequester("", "Произошла ошибка при установке связи", #MB_OK|#MB_ICONWARNING)
              EndIf
            EndIf
          EndIf
        Else
          MessageRequester("", "Выберите учетку в списке!", #MB_OK|#MB_ICONWARNING)
        EndIf
        
      Case #Button_1
        DisableGadget(#ListIcon_0,0) : DisableGadget(#Button_0,0)
        If Inet_ConnectionID<>0
          DisConnect(Inet_ConnectionID)
          Inet_ConnectionID=0
        EndIf
    EndSelect
  EndIf
Until Event=#PB_Event_CloseWindow
Во вложении исходник и скомпилированная прога.
Вложения
Тип файла: rar Инет.rar (17.2 Кб, 11 просмотров)

Последний раз редактировалось *PB*; 30.08.2011 в 22:53.
*PB* вне форума Ответить с цитированием
Старый 01.09.2011, 10:37   #4
Mr_ViK
Форумчанин
 
Регистрация: 12.08.2011
Сообщений: 124
По умолчанию

*PB* Большое спасибо... но я нифига не могу разобраться в этом языке... можешь обьснить? мне нужна только процедура обнаружения учеток, еще раз спасибо!
Mr_ViK вне форума Ответить с цитированием
Старый 01.09.2011, 15:33   #5
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

Цитата:
Сообщение от Mr_ViK Посмотреть сообщение
мне нужна только процедура обнаружения учеток
Список учеток.
Код:
#ERROR_BUFFER_TOO_SMALL = 603
 
Structure  RASENTRYNAME95
  dwSize.l
  szEntryName.s{#MAX_PATH}
EndStructure

Procedure.s GetConnectList() ; Список подключений.
  Protected  Dim ConnectList.RASENTRYNAME95(255)
  String.s=""
  ConnectList(0)\dwSize = SizeOf(RASENTRYNAME95) 
  Size=256 * ConnectList(0)\dwSize
  v=RasEnumEntries_(#Null, #Null, @ConnectList(), @Size, @ln) 
  If v=#ERROR_BUFFER_TOO_SMALL
    RasEnumEntries_(#Null, #Null, @ConnectList(), @Size, @ln)
  EndIf
  For l = 0 To ln - 1
    String + ConnectList(l)\szEntryName + Chr(10)
  Next 
  ProcedureReturn String
EndProcedure

MessageRequester("Список учеток", GetConnectList())
End
Ищите описание WinAPI функции RasEnumEntries.
Именно она вам нужна в этом случае.
Вложения
Тип файла: rar GetConnectList.rar (3.7 Кб, 8 просмотров)

Последний раз редактировалось *PB*; 01.09.2011 в 15:36.
*PB* вне форума Ответить с цитированием
Старый 01.09.2011, 16:17   #6
Mr_ViK
Форумчанин
 
Регистрация: 12.08.2011
Сообщений: 124
По умолчанию

*PB* Если ты можешь, перепиши этот кусок, я не понимаю этого языка
Mr_ViK вне форума Ответить с цитированием
Старый 01.09.2011, 16:29   #7
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

Тогда читайте это http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

PS.
Может лучше создам DLL из кода?
И из VB будете ее вызывать?
*PB* вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по mySQL + Вопрос по RichEdit HTL Общие вопросы Delphi 4 01.01.2010 20:22
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
вопрос по сокетам и общение как в ICQ.Сложный вопрос... Руслантус Общие вопросы C/C++ 2 12.08.2008 21:10
Вопрос Mitron О форуме и сайтах клуба 1 11.02.2008 06:26