示例#1
0
 /// <summary>
 /// This method runs the RasDial executable with the specified arguments.
 /// </summary>
 /// <param name="Arguments">String: a string of arguments to pass to RasDial.exe</param>
 /// <returns>Task: RasDialProcess: Returns the stopped / resulting RasDial process.</returns>
 private static Task <RasDialProcess> RasDial(string Arguments = "")
 {
     return(Task.Run(() => {
         ProcessStartInfo startInfo = new ProcessStartInfo();
         startInfo.FileName = RasDialExe;
         startInfo.UseShellExecute = false;
         startInfo.RedirectStandardOutput = true;
         startInfo.Arguments = Arguments;
         RasDialProcess = new RasDialProcess();
         RasDialProcess.StartInfo = startInfo;
         RasDialProcess.EnableRaisingEvents = true;
         RasDialProcess.OutputDataReceived += RasDialProcess_OutputDataReceived;
         RasDialProcess.Start();
         RasDialProcess.BeginOutputReadLine();
         RasDialProcess.WaitForExit(10000);
         if (!RasDialProcess.HasExited)
         {
             RasDialProcess.Kill();
         }
         if (RasDialProcess.SuccessFromRasDial)
         {
             Logger.Info("RasDial: Success.", ConsoleColor.Green);
         }
         else
         {
             Logger.Error("RasDial: Failure.");
         }
         return RasDialProcess;
     }));
 }
示例#2
0
        /// <summary>
        /// This event fires whenever the RasDial process outputs data from the main console.
        /// </summary>
        private static void RasDialProcess_OutputDataReceived(object sender, DataReceivedEventArgs e)
        {
            RasDialProcess process = (RasDialProcess)sender;

            if (e.Data == null)
            {
                return;
            }
            if (e.Data == "Command completed successfully.")
            {
                process.SuccessFromRasDial = true;
                return;
            }
            Logger.Info("RasDial: " + e.Data, ConsoleColor.DarkCyan);
        }