Если два плагина будут пытаться перехватывать друг у друга управление консолью Тотала, это ни к чему хорошему не приведёт.
Разумеется. Но я и не предполагал одновременный
запуск обоих консольных плагинов. Я только сказал, что возможны оба пути
реализации. Так же как и сейчас есть плагины с одинаковым фнткционалом но реализованные разными способами.А уж юзер выберет, что ему больше нравится в работе.
Кстати, я проверил - добавил в sampleplugin вызов AllocConsole. При подключении плагина консоль появилась, но в ней абсолютно ничего не отображалось, все новые команды пускались в новых консолях.
А ты проверь еще и cm_ExecuteDos. Можно в TConsole, можно и в сампле. Любопытства ради.
Проспоришь. Smile Если бы я ничего не делал, как бы я мог управлять тем, запускается ли приложение в моей главной консоли или в новой, отдельной? В том-то и дело, что делаю. У функции CreateProcess есть хороший флажок - CREATE_NEW_CONSOLE. Если он есть, дочерний процесс запускается в новой, самостоятельной консоли. Если нет - то в существующей, которая предварительно должна быть создана через AllocConsole (что я, разумеется, в программе тоже делаю явно).
Проспорю?

Тогда, прости за дотошность, но я хочу докопаться до простого двоичного ответа (да или нет). Про управление я не спрашивал. Я спрашивал "А после этого что именно ты делаешь, именно для того, чтобы "выполнять команды в своей консоли?" Итак,
после создания в процессе консоли (по AllocConsole), единственное, что надо сделать, чтобы обеспечить "запуск программ в своей консоли" - надо
не ставить флажок CREATE_NEW_CONSOLE. Это верное высказывание? Да или нет? Вот это я с чистой совестью называю "ничего делать не надо".
...существенная проблема только одна:
1. Как сделать, чтобы консольный вывод всех команд где-то сохранялся, чтобы его можно было потом просмотреть по Ctrl+O?
Раз плюнуть - создать в ТС консоль по AllocConsole и запускать все дочерние процессы с наследованием родительской консоли (то бишь, так же, как это делает команда cm_ExecuteDOS).
Пусть у нас уже есть этот новый API. Пусть у нас есть куча плагинов, этот API реализующих. Пусть они все у нас установлены в Тотале - плагин-консоль, плагин-IRC, плагин-ICQ, плагин-калькулятор, и ещё уйма чёрт знает чего. НО! В настоящий момент ни один из этих плагинов не активирован, я сижу в самом обычном Тотале, в самых обычных двух панельках. В такой ситуации все эти "новые" плагины должны быть абсолютно равноправны - сидят себе тихонько в уголочке, никому не мешают, и никто их не дёргает. Это - как должно быть по логике вещей. Однако моему хотению это полностью противоречит, т.к. мне необходимо, чтобы вот именно в такой, "нулевой" ситуации все команды, которые я ввожу в командной строке, выполнялись в плагине-консоли - и именно в нём.
Погоди, я хочу уточнить - ты, наверно имел в виду, что хочешь видеть в консоли не "все введенные команды", а все те, которые не были отпралены в активный FS-плагин, так? Ты же не собираешься вообще лишать меня возможности вводить команды, например, в FTP плагине? Если так (не собираешься), то, как ни крути, а надо как-то формализовать процедуру выбора - куда должна пойти введенная строка. Все вышеперечисленные плагины "равноправны" в том смысле, что процедура выбора пункта назначения для команды учитывает их все. Но они "неравноправны" в том смысле, что кто-то один должен получить команду. Кому-то повезет, а кому-то нет

Сегодня алгоритм принятия решения в ТС весьма прост: "Если во время нажатия Enter, фокус находится в панели с FS-плагином, то комстрока посылается в этот плагин. Иначе - интерпретируется самим ТС". Давай допустим, что Гислер согласился делать консоль. Ты хотел бы как-то модифицировать это правило для твоих нужд или оно остается неизменным? Если да - опиши как.
D1P писал(а):... я хочу иметь возможность встраивать собственные элементы интерфейса в окно TC. Не с помощью хаков как TConsole или TotalConsole, а на "законных" правах.
Хосподи, а уж я-то как хочу!
Вообще хорошо бы спросить самого Гислера, что бы он "отважился" реализовать - консоль без интерфейса, или интерфейс без консоли Smile
К тому, что сказал раньше я могу добавить только одно. Психология, конечно, вещь зыбкая, аморфная. Как известно, с появлением окон с деревьями в ТС7 проявились проблемы в TConsole. Так вот, Гислер сам спросил меня что я хотел бы получить от ТС, чтобы TConsle работало нормально в ТС7. Тут я и предложил тот самый API для дополнительных элементов. Реакцию Гислера на это я описывал.
Это укрепляет меня в мысли, что он не захочет сам возиться с консолью и предпочтет отдать это на откуп плагинам. Я не претендую на "строгость доказательства", но для меня это достаточно надежный признак.
2
CJ FlashОднако, подчеркну еще раз - возможно, новый API именно для работы с консолью вовсе необязателен.
Я решительнее скажу - такой узкий API вааще ни нафиг не нужен. Вопрос в том просить ли встренную консоль или некий универсальный API, который позволит, в том числе, и реализацию консоли.