![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
Во многих консольных приложениях (возможно во всех - я не в курсе) есть возможность выбирать ранее введенные команды стрелками вверх/вниз (история команд). Буфер где все это хранится я так понял создается по дефолту.
Не подскажите, как добраться до буфера где эта самая история хранится? Можно ли его очищать, добавлять или удалять строки? Нужна какая-нибудь зацепка - имя функции или класса где искать. Работаю в Visual C++ 7.1 Благодарю всех за внимание. |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
В стандартной библиотеке подобной ф-ции не предусмотрено.
Если ли что-то стандартное в win32 не знаю, можешь посмотреть msdn (хотя скорее всего её там нет. Если бы она была, то command.com бы наверняка поддерживал историю команд, чего он не делает) в юниксах активно пользуют библиотеку readline. Возможно, где-нибудь валяется её билд под винду. Возможно, нет. Во всяком случае в документанции по php сказано
Так что можешь погуглить замену самостоятельно. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Не знаю как до него добраться, но cmd.exe (в NT-виндах) это дело поддерживает. Жестокое подозрение, что это просто невозможно (наглые способы, вроде слежения за клавой не в счёт)
|
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
MSDN я копал долго и упорно прежде чем задать вопрос.
Подсказали, что за это дело отвечает только лишь интерпретатор команд. Пробовал запускать приложение из CMD и FAR: запускаем в первый раз вводим что-нибудь, история на месте, завершаем приложение - истории нет, запускаем снова - видим историю из первого раза. А у Фара можно вообще буфер отключить. У меня напрашивается вывод, что мое приложение к работе своей истории команд, увы, отношения не имеет. У меня возникли два вопроса: 1. К примеру возьмем Фар (Фар - для примера, я имею ввиду все оболочки такого рода), он каким-либо образом базируется на Кмд (или использует его для вызова подобных приложений), или же это два совершенно независимых приложения? 2. Если историей команд занимается Кмд, можно ли сделать математически строгий вывод, что мое приложение на неё (историю) никак повлиять не может? Простите если вопросы сформулированы кривовато, но ведь правильно задать вопрос может только тот кто знает ответ ![]() Спасибо за участие.
|
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
историей команд(а точнее - введенных строк) в консоли(cmd.exe - частный случай) занимается csrss. функции управления историей, в принципе, есть, но они недокументированны. экспортирует их kernel32.dll(поиск по "history").
забавно еще понажимать функциональные клавиши - какой-то... эм. не знаю как назвать... решил окошками консоль приукрасить и начал именно с истории... ![]() |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
спасибо всем за помощь, найти информацию по соответствующим недокументированным функциям не удалось (вероятно, потому что, недокументированные
![]() отдельное спасибо Dumb(у), за то, что обрисовал общую картину. плюс мне поставить не дали, говорят не дорос еще, чтоб плюсы раздавать ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |