Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode, Pack = 4)]
- internal struct RasDialParams
- {
- public int dwSize;
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = RasConstants.RAS_MaxEntryName + 1)]
- public String szEntryName;
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = RasConstants.RAS_MaxPhoneNumber + 1)]
- public String szPhoneNumber;
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = RasConstants.RAS_MaxCallbackNumber + 1)]
- public String szCallbackNumber;
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = RasConstants.UNLEN + 1)]
- public String szUserName;
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = RasConstants.PWLEN + 1)]
- public String szPassword;
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = RasConstants.DNLEN + 1)]
- public String szDomain;
- public int dwSubEntry;
- public IntPtr dwCallbackId;
- public int dwIfIndex;
- }
- public static uint RasDial(string entry, string user, string password, Form msgWindow, out IntPtr hRasConn)
- {
- RasDialParams dp;
- dp.dwSize = Marshal.SizeOf(typeof(RasDialParams));
- dp.szEntryName = entry;
- dp.szPhoneNumber = "";
- dp.szCallbackNumber = "";
- dp.szUserName = user;
- dp.szPassword = password;
- dp.szDomain = "";
- dp.dwSubEntry = 0;
- dp.dwCallbackId = IntPtr.Zero;
- dp.dwIfIndex = 0;
- var notifierType =
- msgWindow == null
- ? 0
- : 0xffffffff;
- var notifier =
- msgWindow == null
- ? IntPtr.Zero
- // Windows 10
- : msgWindow.Handle;
- //: msgWindow.Hwnd;
- var result = RasImports.RasDial(IntPtr.Zero, IntPtr.Zero, ref dp, notifierType, notifier, out hRasConn);
- if (result == RasError.ERROR_INVALID_SIZE)
- {
- dp.dwSize = (int)Marshal.OffsetOf(typeof(RasDialParams), "dwIfIndex");
- result = RasImports.RasDial(IntPtr.Zero, IntPtr.Zero, ref dp, notifierType, notifier, out hRasConn);
- }
- return result;
- }
Add Comment
Please, Sign In to add comment