Описание программы NoClose Replacer

## NoClose Replacer

### Версия 1.2

Заменитель для файла noclose.pif, используемого файл-менеджером Total Commander для запуска консольных приложений без закрытия окна консоли.

> Автор программы: |  | Власов Константин, 2006 г.
> Домашняя страница: |  | http://flint-inc.ru/
> E-mail: |  | support@flint-inc.ru

### Оглавление

1. Описание
2. Установка
3. Настройки
4. История версий
5. Благодарности

1. ### Описание

   Обычно при запуске консольного или DOS-приложения в Total Commander появляется консольное окошко, в котором выполняется запущенная программа, а после завершения работы это окошко закрывается. Это очень неудобно, если требуется просмотреть текст, выданный программой. Поэтому Total Commander позволяет запускать консольные приложения без закрытия окна консоли. Для этого надо запускать программу нажатием сочетания Shift+Enter, вместо обычного Enter.

   При таком способе запуска Total Commander выполняет командную строку вида:

   > noclose.pif /C <параметры>

   где <параметры> - это запускаемое вами приложение, возможно со своими параметрами. Стандартный файл noclose.pif устанавливается в каталог Windows при установке Total Commander. Этот файл настроен так, что он запускает командный интерпретатор command.com, после завершения которого окно консоли остаётся открытым. Таким образом, пользователь может прочитать всё, что вывела на экран запущенная им программа, а потом самостоятельно закрыть окно консоли.

   Тем не менее, у этого подхода есть масса минусов:

   1. Окно консоли после работы приложения является неактивным, его можно закрыть исключительно нажатием на кнопку с крестиком, находящуюся в заголовке. Также из-за неактивности в нём невозможно запустить другую программу.
   2. Это окно не имеет полос прокрутки. Поэтому если вывод занимает больше одного экрана, вы его не сможете прочитать целиком.
   3. Очень часто происходят ошибки при работе с длинными именами, особенно содержащими пробелы, и программа просто не запускается.

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

   Наверх

2. ### Установка

   Просто скопируйте находящиеся в архиве файлы 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 (см. ниже описание настроек).

   Наверх

3. ### Настройки

   Секция [General]

   CommandProcessor

   > Программа, используемая в качестве оболочки для запуска консольного приложения. По умолчанию используется строка запуска

   > > cmd.exe /K

   > при работе в WinNT и

   > > command.com /K

   > при работе в Win9x. В строке вы можете использовать выражение %1, которое будет заменено на полный список параметров, включая имя программы. Если %1 нигде не указан, то параметры просто дописываются без изменения в конец указанной строки.
   > - Пример 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 | - | окно открывается в обычном виде.
   > > minimize | - | после создания окно сворачивается в панель задач.
   > > maximize | - | после создания окно максимизируется.
   > > hide | - | окно будет скрыто. Этот режим не рекомендуется использовать, потому что в этом случае вы не сможете сами нормально завершить приложение!

   > По умолчанию используется режим normal.

   ShortcutWaitDelay

   > Время (в миллисекундах) ожидания нажатия дополнительного сочетания клавиш. Если в этом параметре указано время, отличное от нуля, то после запуска программа не запускает сразу командный интерпретатор, указанный в настройках, а ждёт указанное время. Если в течение этого времени пользователь нажмёт какое-либо сочетание клавиш, присутствующее в секции [ShortcutsNN] (см. ниже), то будет запущена программа, привязанная к этому сочетанию. Если клавиши нажаты не были, или такое сочетание не в настройках отсутствует, запускается интерпретатор по умолчанию, указанный в параметрах CommandProcessorNN.

   Секция [Shortcuts]

   > В этой секции можно настроить специфические сочетания клавиш для запуска альтернативных программ, вместо указанных в параметрах CommandProcessorNN. Формат записи следующий:

   > > <Модификаторы>+<Клавиша>=<Команда>

   > Возможные значения модификаторов:

   > > | L | - | левая клавиша
   > > | R | - | правая клавиша
   > > | C | - | Ctrl
   > > | A | - | Alt
   > > | S | - | Shift
   > > | W | - | Win
   > > | M | - | ContextMenu

   > Обратите внимание: В Windows 95/98/ME левая и правая клавиши Shift, Ctrl и Alt не различаются системой и, соответственно, программа их тоже различить не сможет!
   > Примеры:

   > > | 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]. Это позволяет в одном файле настроек объединять как сочетания клавиш, одинаковые для всех систем, так и зависящие от ядра ОС.

   Наверх

4. ### История версий

   - Версия 1.2
     1. Исправлены ошибки, из-за которых дополнительные сочетания не работали в системах Win9x.
     2. Добавлена поддержка переменных окружения.
     3. Теперь можно запускать программу, указав ей в качестве команды пустую строку (содержащей только пробелы). Может быть полезно, например, для быстрого открытия консоли без предварительного выполнения команд.
   - Версия 1.1
     1. Добавлены параметры CommandProcessorNT и CommandProcessor9x.
     2. При отсутствии явного задания командного интерпретатора теперь в зависимости от системы берётся cmd.exe /K или command.com /K (раньше всегда был только cmd.exe).
     3. Добавлена возможность привязывать к сочетаниям клавиш дополнительные программы помимо стандартных, указанных в CommandProcessorNN.
     4. Документация переведена в HTML-формат.
   - Версия 1.0
     1. Первая версия, выложенная в общий доступ. Поддерживаются параметры CommandProcessor и ShowWindow.
   Наверх

5. ### Благодарности

   > Спасибо Алексею Фомину (Led), который чётко сформулировал идею этой программы и написал первый её рабочий прототип на Delphi. К сожалению, размер программ, написанных в этой среде, оставляет желать лучшего, поэтому программа сейчас пишется на Visual C++.
   > Также спасибо Вадиму Казакову, выступившему в качестве бета-тестера этой программы, пользователям Icfu и mozers, предложившим очень интересные идеи и проверившим их реализацию, а также всем пользователям, сообщавшим об ошибках и вносившим разнообразные предложения по улучшению программы.
   > Ну и конечно, не могу не поблагодарить Кристиана Гислера (Christian Ghisler), создавшего такой замечательный инструмент как Total Commander.

   Наверх

© Власов Константин, 2006 г.