Как ShellExecute программа и затем отправить ей текст командной строки
Я могу открыть внешнюю программу нормально с ShellExec
ret := ShellExecute(handle, 'open', PChar(filename), nil, nil, SW_NORMAL);
но тогда я хотел бы отправить ему такие команды, как:
msg := 'open ftp://MyUser:MyPass@www.website.com';
Это возможно?
1 ответ
Возможно, я думаю, но это не лучший способ сделать это. Лучший способ - это использовать CreateProcess
, Это более сложный API, но он упростит ваши попытки.
Процедура идет так:
- Создайте одну или две трубы. Вам нужен один для стандартного ввода ребенка. Вам нужен другой, если вы хотите захватить его вывод.
- Вызов
CreateProcess
создать ребенка. Присоедините конец чтения первого канала к стандартному входу дочернего элемента. Присоедините конец записи второго канала к стандартному выходу дочернего элемента. - Если вы хотите отправить команды, пишите в первый канал. Когда вы хотите прочитать вывод, читайте из второго канала.
Это может быть сложно, если вы не знакомы с таким кодированием. Вы могли бы преуспеть, чтобы найти библиотеку, которая облегчает это.
Эта статья MSDN демонстрирует, как:
Создание дочернего процесса с перенаправленным вводом и выводом
Поскольку вы, похоже, хотите использовать FTP, вам лучше избегать внешнего процесса. Используйте библиотеку, такую как Indy.