I have figured out how to ATTACH to a running console. I have yet to figure
out how to send an ENTER key, but here is what i have so far:
public class Attach
{
[DllImport("kernel32", SetLastError = true)]
public static extern bool AttachConsole(uint dwProcessId);
[DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)]
public static extern bool FreeConsole();
public static void AttachToCMD()
{
//Get a list of running process that are command windows
Process[] ps = Process.GetProcessesByName("cmd");
Process p = null;
uint pID = 0;
bool retVal = false;
string inputText = string.Empty;
//if we found command windows then attach to the first one
if (ps.Length > 0)
{
p = ps[0];
}
//if we successfully attached then get uint with process id so
//can pass the id to the AttachConsole method
if (p != null)
{
pID = Convert.ToUInt32(p.Id);
}
//if our pid > 0 then attach
if (pID > 0)
{
//attach to the running console. remember that an app can only
//attach to one console at a time
retVal = AttachConsole(pID);
//Perform our writes
Console.WriteLine("DIR");
//Detach from the console
FreeConsole();
}
}
}
[quoted text, click to view] "ME" <trash.trash@comcast.netREMOVETHIS> wrote in message
news:zY2dnY50Bo1IJdDZRVn-uw@comcast.com...
>I have a application that someone else has wrote that runs in a console
>window. It does not take parameters, but when running it asks three
>questions and then exits. I would like to write a small utility to attach
>to the console app, send the necessary answers (typically typing the letter
>"y" and enter) and then leave. Is this a possiblity for .net? If so what
>would be the best approach?
>
> Thanks,
>
> Matt
>