Как консольная команда, выполняемая из программы, может создать графический диалог для ответа на приглашение ввода?

Как программа Lazarus/FPC, выполняющая команду через TProcess, может обнаружить приглашение ввода и создать графический диалог для ввода?

например скажем, я выполняю команду ssh через TProcess, которая требует ввода пароля - как он может обнаружить его, запросить его с помощью графического диалога и передать его для продолжения команды?


person vfclists    schedule 01.01.2013    source источник
comment
Очень может быть, вы сможете обнаружить, что программа нуждается в вводе. (если вы можете каким-то образом обнаружить программные блоки на входе stdhandle). Но то, что он хочет ввести, является догадкой, основанной на выводе синтаксического анализа. Вряд ли общий случай для этого.   -  person Marco van de Voort    schedule 02.01.2013
comment
@MarcovandeVoort Имеет ли TProcess или какой-либо другой пакет возможность вводить нажатия клавиш обратно в программу, как если бы он работал с консолью? Есть ли у самого TProcess возможность или он просто отправляет текст без какой-либо возможности обратной связи, если только сам процесс не имеет возможности сделать это вне контроля TProcess?   -  person vfclists    schedule 02.01.2013
comment
TProcess может отправлять двоичные данные на стандартный ввод другой программы. Если и как другая программа обрабатывает эти данные, зависит от другой программы.   -  person Marco van de Voort    schedule 03.01.2013


Ответы (1)


Ну, у вас есть как минимум два варианта:

  1. Для «текстовой графики» (например, текстовые поля) используйте whiptail или диалоговое окно и поймайте их вывод, он будет содержать чистый текстовый пароль, введенный пользователем, например для диалогового окна: dialog --passwordbox "Please enter password:" 10 40
  2. Для графического экрана X-Window вы можете использовать zenity и получить вывод, он будет содержать чистый текстовый пароль, например: zenity --password --title "Security question: "
person cezar    schedule 19.05.2013