Как ShellExecute программа и затем отправить ей текст командной строки

Я могу открыть внешнюю программу нормально с ShellExec

 ret := ShellExecute(handle, 'open', PChar(filename), nil, nil, SW_NORMAL);

но тогда я хотел бы отправить ему такие команды, как:

msg := 'open ftp://MyUser:MyPass@www.website.com';

Это возможно?

1 ответ

Возможно, я думаю, но это не лучший способ сделать это. Лучший способ - это использовать CreateProcess, Это более сложный API, но он упростит ваши попытки.

Процедура идет так:

  1. Создайте одну или две трубы. Вам нужен один для стандартного ввода ребенка. Вам нужен другой, если вы хотите захватить его вывод.
  2. Вызов CreateProcess создать ребенка. Присоедините конец чтения первого канала к стандартному входу дочернего элемента. Присоедините конец записи второго канала к стандартному выходу дочернего элемента.
  3. Если вы хотите отправить команды, пишите в первый канал. Когда вы хотите прочитать вывод, читайте из второго канала.

Это может быть сложно, если вы не знакомы с таким кодированием. Вы могли бы преуспеть, чтобы найти библиотеку, которая облегчает это.

Эта статья MSDN демонстрирует, как:

Создание дочернего процесса с перенаправленным вводом и выводом

Поскольку вы, похоже, хотите использовать FTP, вам лучше избегать внешнего процесса. Используйте библиотеку, такую ​​как Indy.

Другие вопросы по тегам