Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> консольное приложение->история команд 
V
    Опции темы
zkv
Дата 23.7.2006, 02:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



        Во многих консольных приложениях (возможно во всех - я не в курсе) есть возможность выбирать ранее введенные команды стрелками вверх/вниз (история команд). Буфер где все это хранится я так понял создается по дефолту. 
         Не подскажите, как добраться до буфера где эта самая история хранится? Можно ли его очищать, добавлять или удалять строки?
         Нужна какая-нибудь зацепка - имя функции или класса где искать. Работаю в Visual C++ 7.1

         Благодарю всех за внимание.
PM MAIL   Вверх
Mayk
Дата 23.7.2006, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



В стандартной библиотеке подобной ф-ции не предусмотрено.
Если ли что-то стандартное в win32 не знаю, можешь посмотреть msdn 
(хотя скорее всего её там нет. Если бы она была, то command.com бы наверняка поддерживал историю команд, чего он не делает)
в юниксах активно пользуют библиотеку readline. Возможно, где-нибудь валяется её билд под винду. Возможно, нет. Во всяком случае в документанции по php сказано
Цитата(http://ru.php.net/readline)

The readline() functions implement an interface to the GNU Readline library. [skip]
Замечание: Для Windows-платформ это расширение недоступно.

Так что можешь погуглить замену самостоятельно.


 


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Любитель
Дата 23.7.2006, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Не знаю как до него добраться, но cmd.exe (в NT-виндах) это дело поддерживает. Жестокое подозрение, что это просто невозможно (наглые способы, вроде слежения за клавой не в счёт) 


--------------------
PM MAIL ICQ Skype   Вверх
zkv
Дата 24.7.2006, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



 MSDN я копал долго и упорно прежде чем задать вопрос. 
Подсказали, что за это дело отвечает только лишь интерпретатор команд. Пробовал запускать приложение из CMD и FAR: запускаем в первый  раз вводим что-нибудь, история на месте, завершаем приложение - истории нет, запускаем снова - видим историю из первого раза. А у Фара можно вообще буфер отключить. У меня напрашивается вывод, что мое приложение к работе своей истории команд, увы, отношения не имеет. 

У меня возникли два вопроса:

1. К примеру возьмем Фар (Фар - для примера, я имею ввиду все оболочки такого рода), он каким-либо образом базируется на Кмд (или использует его для вызова подобных приложений), или же это два совершенно независимых приложения?

2. Если историей команд занимается Кмд, можно ли сделать математически строгий вывод, что мое приложение на неё (историю) никак повлиять не может? 

Простите если вопросы сформулированы кривовато, но ведь правильно задать вопрос может только тот кто знает ответ smile

Спасибо за участие.
Код

#include <stdio.h>
main()
{
    int a,b;
    char c[10];
    printf("\nInput A: ");
    scanf("%d", &a);
    printf("\nInput B: ");
    scanf("%d", &b);                  //здесь можно увидеть что ввели в А
    printf("\nSum : %d", a+b);
    scanf("%s", c);                    //здесь стрелками можно пролистать все что ранее вводили
}

 
PM MAIL   Вверх
dumb
Дата 24.7.2006, 02:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 8
Всего: 158



историей команд(а точнее - введенных строк) в консоли(cmd.exe - частный случай) занимается csrss. функции управления историей, в принципе, есть, но они недокументированны. экспортирует их kernel32.dll(поиск по "history").
забавно еще понажимать функциональные клавиши - какой-то... эм. не знаю как назвать... решил окошками консоль приукрасить и начал именно с истории... smile 
PM MAIL   Вверх
zkv
Дата 28.7.2006, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



 спасибо всем за помощь, найти информацию по соответствующим недокументированным функциям не удалось (вероятно, потому что, недокументированные smile  )
отдельное спасибо Dumb(у), за то, что обрисовал общую картину. плюс мне поставить не дали, говорят не дорос еще, чтоб плюсы раздавать smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1142 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.