webmaster verificación ubicación tus tools tarde que propiedades producido posicion podido parcialmente olvides nuevo más inténtalo google estar error encontrar donde debería completada cambiar archivo ajustes activado .net automation cmd stdin

.net - verificación - ssl activado no olvides cambiar tus ajustes en google analytics y webmaster tools



¿Cómo enviar entradas a la consola como si el usuario estuviera escribiendo? (4)

Este es mi problema. Tengo un programa que debe ejecutarse en un TTY, cygwin brinda este TTY. Cuando redirijo a stdIn, el programa falla porque no tiene un TTY. No puedo modificar este programa y necesito alguna forma de automatizarlo.

¿Cómo puedo tomar la ventana cmd.exe y enviar datos y hacer que piense que el usuario está tipeando?

Estoy usando C #, creo que hay una manera de hacerlo con java.awt.Robot pero tengo que usar C # por otras razones.


¿Puedes iniciar el programa (o cygwin) dentro de tu código, usando ProcessStartInfo.RedirectStandardInput (y output / error) para controlar el flujo de datos?


He descubierto cómo enviar la entrada a la consola. Usé lo que dijo Jon Skeet. No estoy 100% seguro de que esta es la forma correcta de implementar esto.

Si hay algún comentario para mejorar esto, me encantaría aquí. Hice esto solo para ver si podía resolverlo.

Aquí está el programa que miré que esperaba la entrada del usuario

class Program { static void Main(string[] args) { // This is needed to wait for the other process to wire up. System.Threading.Thread.Sleep(2000); Console.WriteLine("Enter Pharse: "); string pharse = Console.ReadLine(); Console.WriteLine("The password is ''{0}''", pharse); Console.WriteLine("Press any key to exit. . ."); string lastLine = Console.ReadLine(); Console.WriteLine("Last Line is: ''{0}''", lastLine); } }

Esta es la aplicación de la consola que le escribe al otro

class Program { static void Main(string[] args) { // Find the path of the Console to start string readFilePath = System.IO.Path.GetFullPath(@"../../../ReadingConsole/bin/Debug/ReadingConsole.exe"); ProcessStartInfo startInfo = new ProcessStartInfo(readFilePath); startInfo.RedirectStandardOutput = true; startInfo.RedirectStandardInput = true; startInfo.WindowStyle = ProcessWindowStyle.Hidden; startInfo.CreateNoWindow = true; startInfo.UseShellExecute = false; Process readProcess = new Process(); readProcess.StartInfo = startInfo; // This is the key to send data to the server that I found readProcess.OutputDataReceived += new DataReceivedEventHandler(readProcess_OutputDataReceived); // Start the process readProcess.Start(); readProcess.BeginOutputReadLine(); // Wait for other process to spin up System.Threading.Thread.Sleep(5000); // Send Hello World readProcess.StandardInput.WriteLine("Hello World"); readProcess.StandardInput.WriteLine("Exit"); readProcess.WaitForExit(); } static void readProcess_OutputDataReceived(object sender, DataReceivedEventArgs e) { // Write what was sent in the event Console.WriteLine("Data Recieved at {1}: {0}", e.Data, DateTime.UtcNow.Ticks); } }


Tuve un problema similar hace algún tiempo, cygwin debería escribir información útil (función cygwin exacta, texto de error y código de error WINAPI) en el flujo de error, debe redirigirlo a algún lugar y leer lo que escribe.


Esto suena como una tarea para SendKeys() . No es C #, sino VBScript, pero no obstante, usted solicitó una forma de automatizarlo:

Set Shell = CreateObject("WScript.Shell") Shell.Run "cmd.exe /k title RemoteControlShell" WScript.Sleep 250 Shell.AppActivate "RemoteControlShell" WScript.Sleep 250 Shell.SendKeys "dir{ENTER}"