Guest User

Untitled

a guest
May 3rd, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode, Pack = 4)]
  2. internal struct RasDialParams
  3. {
  4. public int dwSize;
  5.  
  6. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = RasConstants.RAS_MaxEntryName + 1)]
  7. public String szEntryName;
  8.  
  9. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = RasConstants.RAS_MaxPhoneNumber + 1)]
  10. public String szPhoneNumber;
  11.  
  12. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = RasConstants.RAS_MaxCallbackNumber + 1)]
  13. public String szCallbackNumber;
  14.  
  15. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = RasConstants.UNLEN + 1)]
  16. public String szUserName;
  17.  
  18. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = RasConstants.PWLEN + 1)]
  19. public String szPassword;
  20.  
  21. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = RasConstants.DNLEN + 1)]
  22. public String szDomain;
  23.  
  24. public int dwSubEntry;
  25.  
  26. public IntPtr dwCallbackId;
  27.  
  28. public int dwIfIndex;
  29. }
  30.  
  31. public static uint RasDial(string entry, string user, string password, Form msgWindow, out IntPtr hRasConn)
  32. {
  33. RasDialParams dp;
  34.  
  35. dp.dwSize = Marshal.SizeOf(typeof(RasDialParams));
  36. dp.szEntryName = entry;
  37. dp.szPhoneNumber = "";
  38. dp.szCallbackNumber = "";
  39. dp.szUserName = user;
  40. dp.szPassword = password;
  41. dp.szDomain = "";
  42. dp.dwSubEntry = 0;
  43. dp.dwCallbackId = IntPtr.Zero;
  44. dp.dwIfIndex = 0;
  45.  
  46. var notifierType =
  47. msgWindow == null
  48. ? 0
  49. : 0xffffffff;
  50.  
  51. var notifier =
  52. msgWindow == null
  53. ? IntPtr.Zero
  54. // Windows 10
  55. : msgWindow.Handle;
  56. //: msgWindow.Hwnd;
  57.  
  58. var result = RasImports.RasDial(IntPtr.Zero, IntPtr.Zero, ref dp, notifierType, notifier, out hRasConn);
  59.  
  60. if (result == RasError.ERROR_INVALID_SIZE)
  61. {
  62. dp.dwSize = (int)Marshal.OffsetOf(typeof(RasDialParams), "dwIfIndex");
  63. result = RasImports.RasDial(IntPtr.Zero, IntPtr.Zero, ref dp, notifierType, notifier, out hRasConn);
  64. }
  65.  
  66. return result;
  67. }
Add Comment
Please, Sign In to add comment