Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Опять я что-то забыл, хочу просмотреть VPNки в VB6 Добавлено: 13.11.12 17:35  

Автор вопроса:  Smith | ICQ: adamis@list.ru 

Ответить

  Ответы Всего ответов: 27  

Номер ответа: 16
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #16 Добавлено: 27.12.12 00:06
Вроде всё я понятно написал, Err.Number, он никакого отношения к RAS не имеет.

Имею ввиду сообщения об ошибках VB6, которые в IDE порусски а в ехе-шнике поанглийски.

Winand привет! Спасибо за ссылки, но не то, коды и дескрипшены мне не нужны.

Ответить

Номер ответа: 17
Автор ответа:
 Nash Bridges



Вопросов: 5
Ответов: 139
 Профиль | | #17 Добавлено: 27.12.12 00:09
В приличных домах для нового несвязанного вопроса новую тему создают.

Ответить

Номер ответа: 18
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #18
Добавлено: 27.12.12 00:18
Привет Smith, я говорю о том, что между системными и вбшными ошибками вроде как связи никакой.

Ответить

Номер ответа: 19
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #19 Добавлено: 27.12.12 09:46
Если мне не изменяет память, кто-то находил между ними связь ))))))))

Ответить

Номер ответа: 20
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #20 Добавлено: 27.12.12 13:07
Хотя возможно как-то дергали теже сообщения по-русски, которые показывает IDE.

Ответить

Номер ответа: 21
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #21
Добавлено: 31.12.12 10:53
Ну может так?:) Для этого надо таскать с собой русскоязычный VB6IDE.DLL
  1. Option Explicit
  2. Private Declare Function LoadLibrary Lib "kernel32.dll" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
  3. Private Declare Function LoadString Lib "user32.dll" Alias "LoadStringA" (ByVal hInstance As Long, ByVal wID As Long, ByVal lpBuffer As String, ByVal nBufferMax As Long) As Long
  4.  
  5. Private Sub Form_Load()
  6.     Dim lib As Long
  7.     lib = LoadLibrary("G:\Users\Winand\Desktop\VB6IDE.DLL")
  8.     Debug.Print lib
  9.     On Error GoTo er:
  10.     
  11.         Dim x
  12.         x = 1 / 0
  13.         
  14.     Exit Sub
  15. er: Dim buf As String
  16.     buf = Space$(1024)
  17.     If LoadString(lib, Err.Number, buf, 1024) Then _
  18.         MsgBox buf _
  19.     Else MsgBox Err.Description
  20. End Sub

Ответить

Номер ответа: 22
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #22 Добавлено: 31.12.12 20:08
Гдеж он есть то, русскоязычный?

У меня в IDE всё по-русски, а в VB6IDE.DLL все стринги аглицкие.

Ответить

Номер ответа: 23
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #23
Добавлено: 02.01.13 15:47
Интересно. У меня в пиратском VB6 (на диске ещё) русский vb6ide.dll.

Ответить

Номер ответа: 24
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #24 Добавлено: 04.01.13 23:46
Плиз слей файл куда-нибудь или на мой ящик, упакованный под пароль :)
По сути всё можно свести к LoadResString(Err.Number).
Тупо добавить эти русские стринги к своему ехе-шнику.
Можно пожертвовать килобайты ради красоты ошибок :)

По поводу создания VPN на VB6, рабочий пример с китайского МСДНа
  1. Option Explicit
  2.  
  3. Private Const RAS_MaxEntryName = 256
  4.  
  5. Private Const RAS_MaxPhoneNumber = 128
  6.  
  7. Private Const RAS_MaxCallbackNumber = RAS_MaxPhoneNumber
  8.  
  9. Private Const UNLEN = 256
  10.  
  11. Private Const PWLEN = 256
  12.  
  13. Private Const DNLEN = 12
  14.  
  15. Private Type RASDIALPARAMS
  16.  
  17.   dwSize As Long ' 1052
  18.   szEntryName(RAS_MaxEntryName) As Byte
  19.   szPhoneNumber(RAS_MaxPhoneNumber) As Byte
  20.   szCallbackNumber(RAS_MaxCallbackNumber) As Byte
  21.   szUserName(UNLEN) As Byte
  22.   szPassword(PWLEN) As Byte
  23.   szDomain(DNLEN) As Byte
  24.  
  25. End Type
  26.  
  27. Private Declare Function RasGetEntryDialParams _
  28.                 Lib "rasapi32.dll" _
  29.                 Alias "RasGetEntryDialParamsA" (ByVal lpcstr As String, _
  30.                                                 ByRef lprasdialparamsa As RASDIALPARAMS, _
  31.                                                 ByRef lpbool As Long) As Long
  32.  
  33. Private Declare Function RasDial _
  34.                 Lib "rasapi32.dll" _
  35.                 Alias "RasDialA" (ByVal lprasdialextensions As Long, _
  36.                                   ByVal lpcstr As String, _
  37.                                   ByRef lprasdialparamsa As RASDIALPARAMS, _
  38.                                   ByVal dword As Long, _
  39.                                   lpvoid As Any, _
  40.                                   ByRef lphrasconn As Long) As Long
  41.  
  42. '------------------------------------------------
  43.  
  44. Private Declare Sub CopyMemory _
  45.                 Lib "kernel32 " _
  46.                 Alias "RtlMoveMemory" (Destination As Any, _
  47.                                        Source As Any, _
  48.                                        ByVal Length As Long)
  49.  
  50. Private Type GUID
  51.  
  52.   Data1 As Long
  53.   Data2 As Integer
  54.   Data3 As Integer
  55.   Data4(7) As Byte
  56.  
  57. End Type
  58.  
  59. Private Type RASIPADDR
  60.  
  61.   a As Byte
  62.   b As Byte
  63.   c As Byte
  64.   d As Byte
  65.  
  66. End Type
  67.  
  68. Private Type RASENTRY
  69.  
  70.   dwSize As Long
  71.   dwfOptions As Long
  72.   dwCountryID As Long
  73.   dwCountryCode As Long
  74.   szAreaCode(10) As Byte
  75.   szLocalPhoneNumber(128) As Byte
  76.   dwAlternateOffset As Long
  77.   ipaddr As RASIPADDR
  78.   ipaddrDns As RASIPADDR
  79.   ipaddrDnsAlt As RASIPADDR
  80.   ipaddrWins As RASIPADDR
  81.   ipaddrWinsAlt As RASIPADDR
  82.   dwFrameSize As Long
  83.   dwfNetProtocols As Long
  84.   dwFramingProtocol As Long
  85.   szScript(259) As Byte
  86.   szAutodialDll(259) As Byte
  87.   szAutodialFunc(259) As Byte
  88.   szDeviceType(16) As Byte
  89.   szDeviceName(128) As Byte
  90.   szX25PadType(32) As Byte
  91.   szX25Address(200) As Byte
  92.   szX25Facilities(200) As Byte
  93.   szX25UserData(200) As Byte
  94.   dwChannels As Long
  95.   dwReserved1 As Long
  96.   dwReserved2 As Long
  97.   dwSubEntries As Long
  98.   dwDialMode As Long
  99.   dwDialExtraPercent As Long
  100.   dwDialExtraSampleSeconds As Long
  101.   dwHangUpExtraPercent As Long
  102.   dwHangUpExtraSampleSeconds As Long
  103.   dwIdleDisconnectSeconds As Long
  104.   dwType As Long
  105.   dwEncryptionType As Long
  106.   dwCustomAuthKey As Long
  107.   guidId As GUID
  108.   szCustomDialDll(259) As Byte
  109.   dwVpnStrategy As Long
  110.   dwfOptions2 As Long
  111.   dwfOptions3 As Long
  112.   szDnsSuffix(255) As Byte
  113.   dwTcpWindowSize As Long
  114.   szPrerequisitePbk(259) As Byte
  115.   szPrerequisiteEntry(256) As Byte
  116.   dwRedialCount As Long
  117.   dwRedialPause As Long
  118.  
  119. End Type
  120.  
  121. Private Type RASCREDENTIALS
  122.  
  123.   dwSize As Long
  124.   dwMask As Long
  125.   szUserName(256) As Byte
  126.   szPassword(256) As Byte
  127.   szDomain(15) As Byte
  128.  
  129. End Type
  130.  
  131. Private Const ET_None         As Long = 0 ' No encryption
  132.  
  133. Private Const ET_Require      As Long = 1 ' Require Encryption
  134.  
  135. Private Const ET_RequireMax   As Long = 2 ' Require max encryption
  136.  
  137. Private Const ET_Optional     As Long = 3 ' Do encryption if possible. None Ok.
  138.  
  139. Private Const VS_Default      As Long = 0 ' default (PPTP for now)
  140.  
  141. Private Const VS_PptpOnly     As Long = 1 ' Only PPTP is attempted.
  142.  
  143. Private Const VS_PptpFirst    As Long = 2 ' PPTP is tried first.
  144.  
  145. Private Const VS_L2tpOnly     As Long = 3 ' Only L2TP is attempted.
  146.  
  147. Private Const VS_L2tpFirst    As Long = 4 ' L2TP is tried first.
  148.  
  149. Private Const RASET_Phone     As Long = 1 ' Phone lines: modem, ISDN, X.25, etc
  150.  
  151. Private Const RASET_Vpn       As Long = 2 ' Virtual private network
  152.  
  153. Private Const RASET_Direct    As Long = 3 ' Direct connect: serial, parallel
  154.  
  155. Private Const RASET_Internet  As Long = 4 ' BaseCamp internet
  156.  
  157. Private Const RASET_Broadband As Long = 5 ' Broadband
  158.  
  159. Private Declare Function RasSetEntryProperties _
  160.                 Lib "rasapi32" _
  161.                 Alias "RasSetEntryPropertiesA" (ByVal lpszPhonebook As String, _
  162.                                                 ByVal lpszEntry As String, _
  163.                                                 lpRasEntry As RASENTRY, _
  164.                                                 ByVal dwEntryInfoSize As Long, _
  165.                                                 ByVal lpbDeviceInfo As Long, _
  166.                                                 ByVal dwDeviceInfoSize As Long) As Long
  167.  
  168. Private Declare Function RasSetCredentials _
  169.                 Lib "rasapi32" _
  170.                 Alias "RasSetCredentialsA" (ByVal lpszPhonebook As String, _
  171.                                             ByVal lpszEntry As String, _
  172.                                             lpCredentials As RASCREDENTIALS, _
  173.                                             ByVal fClearCredentials As Long) As Long
  174.  
  175. Private Sub Command1_Click()
  176.  
  177.   Dim sEntryName As String, sUsername As String, sPassword As String
  178.  
  179.   '??VPN
  180.   Dim sServer    As String
  181.  
  182.   sServer = "8.8.8.8 "
  183.   sEntryName = "Kaban Telecom2 "
  184.   sUsername = "кто непонял, тут логин"
  185.   sPassword = "а тут пароль"
  186.  
  187.   If Create_VPN_Connection(sEntryName, sServer, sUsername, sPassword) Then
  188.     If Connect_VPN_Connection(sEntryName) Then
  189.       MsgBox "Успех"
  190.     Else
  191.       MsgBox "Облом"
  192.     End If
  193.  
  194.   Else
  195.     MsgBox "Облом"
  196.   End If
  197.  
  198. End Sub
  199.  
  200. Function Create_VPN_Connection(ByVal sEntryName As String, _
  201.                                ByVal sServer As String, _
  202.                                ByVal sUsername As String, _
  203.                                ByVal sPassword As String) As Boolean
  204.  
  205.   Dim re          As RASENTRY
  206.  
  207.   Dim rc          As RASCREDENTIALS
  208.  
  209.   Dim rtn         As Long
  210.  
  211.   Dim sDeviceName As String, sDeviceType As String
  212.  
  213.   Create_VPN_Connection = False
  214.  
  215.   sDeviceName = "WAN Miniport (PPTP) "
  216.   sDeviceType = "vpn"
  217.  
  218.   With re
  219.     .dwSize = LenB(re)
  220.     '.dwCountryCode = 86: .dwCountryID = 86
  221.     .dwDialExtraPercent = 75
  222.     .dwDialExtraSampleSeconds = 120
  223.     .dwDialMode = 1
  224.     .dwfNetProtocols = 4
  225.     .dwfOptions = 1007485711 '1024262928 îêíî 16777217, òåë. êîä ñòðàíû 1,
  226.     .dwfOptions2 = 367
  227.     .dwFramingProtocol = 1
  228.     .dwHangUpExtraPercent = 10
  229.     .dwHangUpExtraSampleSeconds = 120
  230.     .dwRedialCount = 3
  231.     .dwRedialPause = 60
  232.     .dwType = RASET_Vpn
  233.     CopyMemory .szDeviceName(0), ByVal sDeviceName, Len(sDeviceName)
  234.     CopyMemory .szDeviceType(0), ByVal sDeviceType, Len(sDeviceType)
  235.     CopyMemory .szLocalPhoneNumber(0), ByVal sServer, Len(sServer)
  236.     .dwVpnStrategy = VS_PptpOnly ' VS_Default 'L2TP
  237.     .dwEncryptionType = ET_Optional
  238.   End With
  239.  
  240.   With rc
  241.     .dwSize = LenB(rc)
  242.     .dwMask = 11
  243.     CopyMemory .szUserName(0), ByVal sUsername, Len(sUsername)
  244.     CopyMemory .szPassword(0), ByVal sPassword, Len(sPassword)
  245.   End With
  246.  
  247.   If RasSetEntryProperties(vbNullString, sEntryName, re, LenB(re), 0, 0) = 0 Then
  248.     If RasSetCredentials(vbNullString, sEntryName, rc, 0) = 0 Then
  249.       Create_VPN_Connection = True
  250.     End If
  251.   End If
  252.  
  253. End Function
  254.  
  255. Function Connect_VPN_Connection(ByVal sEntryName As String) As Boolean
  256.  
  257.   Dim lTemp     As Long
  258.  
  259.   Dim sUsername As String
  260.  
  261.   Dim sPassword As String
  262.  
  263.   Dim tRDP      As RASDIALPARAMS
  264.  
  265.   tRDP.dwSize = Len(tRDP) + 6
  266.   CopyMemory tRDP.szEntryName(0), ByVal sEntryName, Len(sEntryName)
  267.   'ChangeBytes sEntryName, DP.szEntryName
  268.   'Get User name and password for the connection
  269.   lTemp = RasGetEntryDialParams(vbNullString, tRDP, 0)
  270.  
  271.   If lTemp = 0 Then
  272.     sUsername = Replace$(StrConv(tRDP.szUserName, vbUnicode), vbNullChar, vbNullString)
  273.     sPassword = Replace$(StrConv(tRDP.szPassword, vbUnicode), vbNullChar, vbNullString)
  274.     MsgBox sUsername & vbCrLf & sPassword
  275.     Connect_VPN_Connection = RasDial(ByVal 0, vbNullString, tRDP, 1, ByVal 0, lTemp) = 0
  276.     'Connect_VPN_Connection = True
  277.   End If
  278.  
  279. End Function
  280.  
  281. Private Sub Command2_Click()
  282.  
  283.   Dim sEntryName As String, sUsername As String, sPassword As String
  284.  
  285.   '??PPPoE
  286.   sEntryName = "???? "
  287.   sUsername = "******"
  288.   sPassword = "*******"
  289.  
  290.   If Create_PPPoE_Connection(sEntryName, sUsername, sPassword) Then
  291.       MsgBox "Успех"
  292.     Else
  293.       MsgBox "Облом"
  294.   End If
  295.  
  296. End Sub
  297.  
  298. Function Create_PPPoE_Connection(ByVal sEntryName As String, _
  299.                                  ByVal sUsername As String, _
  300.                                  ByVal sPassword As String) As Boolean
  301.  
  302.   Dim rtn         As Long
  303.  
  304.   Dim re          As RASENTRY
  305.  
  306.   Dim sDeviceName As String, sDeviceType As String
  307.  
  308.   Dim rc          As RASCREDENTIALS
  309.  
  310.   Create_PPPoE_Connection = False
  311.   sDeviceName = "WAN ???? (PPPOE) "
  312.   sDeviceType = "PPPoE"
  313.  
  314.   With re
  315.     .dwSize = LenB(re)
  316.     .dwCountryCode = 86
  317.     .dwCountryID = 86
  318.     .dwDialExtraPercent = 75
  319.     .dwDialExtraSampleSeconds = 120
  320.     .dwDialMode = 1
  321.     .dwEncryptionType = 3
  322.     .dwfNetProtocols = 4
  323.     .dwfOptions = 1024262928
  324.     .dwfOptions2 = 367
  325.     .dwFramingProtocol = 1
  326.     .dwHangUpExtraPercent = 10
  327.     .dwHangUpExtraSampleSeconds = 120
  328.     .dwRedialCount = 3
  329.     .dwRedialPause = 60
  330.     .dwType = RASET_Broadband
  331.     CopyMemory .szDeviceName(0), ByVal sDeviceName, Len(sDeviceName)
  332.     CopyMemory .szDeviceType(0), ByVal sDeviceType, Len(sDeviceType)
  333.   End With
  334.  
  335.   With rc
  336.     .dwSize = LenB(rc)
  337.     .dwMask = 11
  338.     CopyMemory .szUserName(0), ByVal sUsername, Len(sUsername)
  339.     CopyMemory .szPassword(0), ByVal sPassword, Len(sPassword)
  340.   End With
  341.  
  342.   If RasSetEntryProperties(vbNullString, sEntryName, re, LenB(re), 0, 0) = 0 Then
  343.     If RasSetCredentials(vbNullString, sEntryName, rc, 0) = 0 Then
  344.       Create_PPPoE_Connection = True
  345.     End If
  346.   End If
  347.  
  348. End Function

Ответить

Номер ответа: 25
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #25 Добавлено: 05.01.13 00:08
Скомпилированный в VB6 ехе-шник не определяется ни одним из 46 антивиров,
НО стоит добавить / изменить его ресурсы, манифест, иконки, файл инфо как он тутже становится зловредным.

Люди, кто знает, пожалуйста объясните почему?

Суперантивиры типа Avira, BitDefender, Emsisoft, MicroWorld-eScan меняют отношение в зависимости от иконки?

Можно как-то бороться с этим? Можно как-то подавать файл ресурсов ВБшному линковщику, может всё дело в этом?

Я знаю, что в проект можно добавить RES-файл, но ехе-шник может и не скомпилировать если ресурсы сложные.

Ответить

Номер ответа: 26
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #26
Добавлено: 11.01.13 17:53
Ты через редактор ресурсов добавляешь их? Честно говоря, никогда подобной проблемы не испытывал. А ведь когда-то любил переводить программки на русский:-)

Ответить

Номер ответа: 27
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #27 Добавлено: 12.01.13 11:19
Просто ресторатором сохранил res-файл и ресхакером подрезал его. Шестерошный LoadResString устроен так,

что если в ехе есть русский ресурс, то в англицкой винде рес тоже грузится, но как ????????????? знаки.

Т.е. приходится сначала проверять винду на русскоязычность интерфейса и только потом использовать ресы.

Для многих, но далеко не для всех ошибок номер ресурса совпадает с номером ошибки, кое-что приписывал.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам