Заменитель для файла noclose.pif, используемого файл-менеджером Total Commander для запуска консольных приложений без закрытия окна консоли.
Автор программы: Власов Константин, 2006 г. Домашняя страница: http://flint-inc.ru/ E-mail: support@flint-inc.ru
Обычно при запуске консольного или DOS-приложения в Total Commander появляется консольное окошко, в котором выполняется запущенная программа, а после завершения работы это окошко закрывается. Это очень неудобно, если требуется просмотреть текст, выданный программой. Поэтому Total Commander позволяет запускать консольные приложения без закрытия окна консоли. Для этого надо запускать программу нажатием сочетания Shift+Enter, вместо обычного Enter.
При таком способе запуска Total Commander выполняет командную строку вида:
noclose.pif /C <параметры>
где <параметры> - это запускаемое вами приложение, возможно со своими параметрами. Стандартный файл noclose.pif устанавливается в каталог Windows при установке Total Commander. Этот файл настроен так, что он запускает командный интерпретатор command.com, после завершения которого окно консоли остаётся открытым. Таким образом, пользователь может прочитать всё, что вывела на экран запущенная им программа, а потом самостоятельно закрыть окно консоли.
Тем не менее, у этого подхода есть масса минусов:
Программа NoClose Replacer как раз и предназначена для того, чтобы исправить все эти минусы, а также добавить некоторые дополнительные возможности и удобства.
Просто скопируйте находящиеся в архиве файлы NoClose.ini и NoClose.pif в каталог Windows. Далее, впишите в файл NoClose.ini нужные настройки и... всё, наслаждайтесь работой. :-) По умолчанию, если не указывать никаких настроек, программа использует командный интерпретатор command.com с параметром /K в системах на ядре Win9x (Windows 95/98/ME) и cmd.exe с параметром /K в системах на ядре WinNT (Windows NT/2000/XP/2003; возможно, и Windows Vista - в этой системе программа не тестировалась). Если вы предпочитаете использовать альтернативные командные процессоры, то нужно прописать их в файле настроек NoClose.ini (см. ниже описание настроек).
Секция [General]
CommandProcessor
Программа, используемая в качестве оболочки для запуска консольного приложения. По умолчанию используется строка запускапри работе в WinNT и
cmd.exe /K при работе в Win9x. В строке вы можете использовать выражение %1, которое будет заменено на полный список параметров, включая имя программы. Если %1 нигде не указан, то параметры просто дописываются без изменения в конец указанной строки.
command.com /K
- Пример 1
Запуск: noclose.pif /C file.exe /param1 /param2
CommandProcessor=cmd.exe /K
Результат: cmd.exe /K file.exe /param1 /param2
- Пример 2
Запуск: noclose.pif /C file.exe /param1 /param2
CommandProcessor="C:\Program Files\4DOS\4DOS.COM"
Результат: "C:\Program Files\4DOS\4DOS.COM" file.exe /param1 /param2
- Пример 3
Запуск: noclose.pif /C file.exe /param1 /param2
CommandProcessor=shell.exe "%1" /wait
Результат: shell.exe "file.exe /param1 /param2" /wait
CommandProcessorNT
CommandProcessor9x
Эти два параметра позволяют указывать разные командные интерпретаторы для систем Windows на ядрах NT и 9x и имеют более высокий приоритет, чем параметр CommandProcessor.
ShowWindow
Этот параметр указывает вид окна после запуска приложения. Возможные значения:По умолчанию используется режим normal.
normal - окно открывается в обычном виде. minimize - после создания окно сворачивается в панель задач. maximize - после создания окно максимизируется. hide - окно будет скрыто. Этот режим не рекомендуется использовать, потому что в этом случае вы не сможете сами нормально завершить приложение!
ShortcutWaitDelay
Время (в миллисекундах) ожидания нажатия дополнительного сочетания клавиш. Если в этом параметре указано время, отличное от нуля, то после запуска программа не запускает сразу командный интерпретатор, указанный в настройках, а ждёт указанное время. Если в течение этого времени пользователь нажмёт какое-либо сочетание клавиш, присутствующее в секции [ShortcutsNN] (см. ниже), то будет запущена программа, привязанная к этому сочетанию. Если клавиши нажаты не были, или такое сочетание не в настройках отсутствует, запускается интерпретатор по умолчанию, указанный в параметрах CommandProcessorNN.
Секция [Shortcuts]
В этой секции можно настроить специфические сочетания клавиш для запуска альтернативных программ, вместо указанных в параметрах CommandProcessorNN. Формат записи следующий:Возможные значения модификаторов:
<Модификаторы>+<Клавиша>=<Команда> Обратите внимание: В Windows 95/98/ME левая и правая клавиши Shift, Ctrl и Alt не различаются системой и, соответственно, программа их тоже различить не сможет!
L - левая клавиша R - правая клавиша C - Ctrl A - Alt S - Shift W - Win M - ContextMenu
Примеры:Основная клавиша отделяется от модификаторов символом '+' (плюс). Если модификаторов нет, знак '+' всё равно должен быть указан. Если же отсутствует основная клавиша, знак плюса ставить не нужно. Примеры:
LW - LeftWin (левая клавиша Win) CRA - Ctrl + RightAlt (любая клавиша Ctrl + правая клавиша Alt) LSRS - LeftShift + RightShift (одновременное нажатие левой и правой клавиш Shift) Полный список обозначений всех клавиш:
C+A - Ctrl + A AS+F9 - Alt + Shift + F9 LSW - LeftShift + Win (без основной клавиши) +PRNSCR - PrintScreen (без модификаторов) A - Alt +A - A (вот почему нужен знак плюса) Примеры записи команд:
[Shortcuts] CS=cmd.exe /C LAS+TAB=4nt.com "%1" +SCROLLLOCK=C:\run.bat
Секция [ShortcutsNT]
Секция [Shortcuts9x]
Секции, аналогичные вышеописанной секции [Shortcuts], но специфичные для систем Windows на ядрах NT и 9x соответственно. Ключи из секции [Shortcuts] учитываются независимо от системы, т.е. в NT берутся все сочетания из секций [Shortcuts] и [ShortcutsNT], а в 9x - из [Shortcuts] и [Shortcuts9x]. Это позволяет в одном файле настроек объединять как сочетания клавиш, одинаковые для всех систем, так и зависящие от ядра ОС.
Спасибо Алексею Фомину (Led), который чётко сформулировал идею этой программы и написал первый её рабочий прототип на Delphi. К сожалению, размер программ, написанных в этой среде, оставляет желать лучшего, поэтому программа сейчас пишется на Visual C++.
Также спасибо Вадиму Казакову, выступившему в качестве бета-тестера этой программы, пользователям Icfu и mozers, предложившим очень интересные идеи и проверившим их реализацию, а также всем пользователям, сообщавшим об ошибках и вносившим разнообразные предложения по улучшению программы.
Ну и конечно, не могу не поблагодарить Кристиана Гислера (Christian Ghisler), создавшего такой замечательный инструмент как Total Commander.