Answer the question
In order to leave comments, you need to log in
What language is suitable for launching and closing exe applications?
Hello.
I'm trying to develop one program.
The task is this - you need a window application, in this application I specify the path to the exe file, after which I click run and the exe file starts, and you need to pass parameters.
You also need the ability to close the running program. I don’t know if I need to track the process, but I find it convenient to simply find a specific port and close the application that uses it.
I worked only in the field of the web, tell me where to start? I am familiar with Java but I don’t understand whether it is possible to implement what I need in java or not.
C++ is not desirable to use, is C# suitable?
Answer the question
In order to leave comments, you need to log in
Any language can do this :-)
In C# , working with processes can be something like this:
// запускаем процесс
var process = System.Diagnostics.Process.Start(@"C:\windows\system32\calc.exe");
// убиваем процесс
process.Kill();
// или отправляем команду на закрытие главного окна
// process.CloseMainWindow();
// запуск можно выполнить через ProcessStartInfo,
// это может быть более удобней и больше возможностей
var processStartInfo = new System.Diagnostics.ProcessStartInfo();
// путь к файлу программы
processStartInfo.FileName = @"C:\windows\system32\notepad.exe";
// передаем аргументы (в данном случае путь файла для открытия)
processStartInfo.Arguments = @"C:\Windows\System32\drivers\etc\hosts";
// запускаем процесс
var process2 = System.Diagnostics.Process.Start(processStartInfo);
// если необходимо, можем получить список всех процессов
var processes = System.Diagnostics.Process.GetProcesses();
// для примера, выводим в консоль
foreach(var p in processes)
{
Console.WriteLine("PID#{0}, {1}", p.Id, p.ProcessName);
// можем поубивать все блокноты
// if (p.ProcessName == "notepad")
// {
// p.Kill();
// }
}
// создаем параметры запуска процесса
var processStartInfo = new System.Diagnostics.ProcessStartInfo();
processStartInfo.FileName = @"C:\windows\system32\notepad.exe";
processStartInfo.Arguments = @"C:\Windows\System32\drivers\etc\hosts";
// создаем экземпляр процесса
var process = new System.Diagnostics.Process();
// передаем параметры
process.StartInfo = processStartInfo;
// разрешаем использование обработчиков событий
process.EnableRaisingEvents = true; // <-- требуется для работы обработчика завершения процесса
// цепляем обработчик завершения работы процесса
// (лучше сделать нормальную функцию, а не анонимную, как показано в примере)
process.Exited += (object sender, EventArgs e) =>
{
// этот блок будет выполнен, когда работа процесса будет завершена
// экземпляр процесса можно найти в sender: строгий тип - ((System.Diagnostics.Process)sender)
// (хотя в данном примере без проблем можно использовать process, это будет даже удобней)
// для примера, выводим в консоль идентификатор завершенного процесса
Console.WriteLine("PID#{0} завершил работу", ((System.Diagnostics.Process)sender).Id);
};
// запускаем процесс
process.Start();
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question