ShellExecute, запуск и закрытие процессов.
Использую функцию ShellExecute для запуска внешней консольной программы. Вот вид запуска: ShellExecute(Handle,NULL,"interpreter.exe",static_cast<const char*>(x.data()),NULL,SW_HIDE);
Но я повторно использую эту функцию в своей программе. Выходит что процесс interpreter.exe много раз появляется в диспетчере задач, то есть запускается по новой. Мне нужно чтобы процесс запускался однажды и не копировал себя в памяти повторно после вызова... Или другой вариант - это удалить процесс из памяти. А потом по новой запустить. Как удалить процесс, запущенный с помощью ShellExecute?
Цитата:
Вот вид запуска: ShellExecute(Handle,NULL,"interpreter.exe",static_ cast<const char*>(x.data()),NULL,SW_HIDE);
Я всегда думал, что флаг SW_HIDE позволяет скрыть окно, а он оказывается отображает его... :)
Цитата:
Мне нужно чтобы процесс запускался однажды и не копировал себя в памяти повторно после вызова...
Ну так и используйте глобальную булевскую переменную, какие проблемы?
Цитата:
Или другой вариант - это удалить процесс из памяти. А потом по новой запустить. Как удалить процесс, запущенный с помощью ShellExecute?
Ну, или жестко завершайте созданный процесс функцией TerminateProcess...
Для реализации требуемого вам поведения используте CreateProcess. Функция ShellExecute решает совсем другие задачи.