Добрый день.
Я не программист, использую что нахожу в инете, прошу не пинать сильно. В общем, имеется программа "А", в которой заложена функция перезагрузки другой программы "Б" (Терминал
Ы MetaTrader4, они периодически подвисают и нужно перезагружать).
Пробовал прописать:
PostMessage(StrToInt(handleChart) , WM_KEYDOWN, 152, 0);
Он ее успешно закрывает, но запустить снова не может, т.к. терминал висит в процессах и не может выгрузится (не всегда такое происходит, примерно 1 из 10). Пока сам принудительно через диспетчер не снимешь процесс - запустить терминал не получится (Л-логика :D).
Поэтому решил отправлять запрос принудительной закрытие терминала через taskkill:
WinExec(PANsiChar('taskkill /F /IM terminal.exe'), SW_HIDE);
Ура, работает, НО терминал может быть запущен в нескольких экземплярах из разных папок и каждую из них нужно перезагружать в разное время.
Написал функцию, которая находит окно по имени и потом определяет путь к папке. Пути к папкам каждого терминала известны. Выглядят так:
C:\Program Files (x86)\terminal1\terminal.exe
C:\Program Files (x86)\terminal2\terminal.exe
Прописываю путь в код:
WinExec(PANsiChar('taskkill /F /IM '+accounts[i].MT4_Path), SW_HIDE);
accounts[i].MT4_Path - выводит путь к терминалу
Увы и ах, ничего не происходит. Программа не ругается даже, просто игнор.
Прописал прямой путь для теста:
WinExec(PANsiChar('taskkill /F /IM C:\Program Files (x86)\terminal1\terminal.exe'), SW_HIDE);
К сожалению, тоже самое.
В чем ошибка? Подскажите пожалуйста.