Zoin
Нет, это ненормально. Это капкан, о котором тоже стоит подумать (сегодня утром я думал уже что у меня крыша едет).
Ты запусти
ConEmu.exe /bufferheight 9999 /cmd cmd.exe
а иначе берется сохраненная командная строка из реестра, и там ведь никакого /bufferheight 9999 нет...
Zoin
Получилось? Или я тоже чего-то не понял, почему у тебя не сработало. Если задаем BufferHeight (достаточно большой), то полоса прокрутки должна быть сразу и весь буфер сразу должен быть в наличии, прокручивай как хочешь, хоть с текстом, хоть без.
Как подружить с конманом - давайте думать вместе. Можно еще какой-то ключ добавить, чтобы запустить с буфером, но все-таки устанавливать родителя окна. Тогда в конмане выделение работать все-таки будет, но с дефектом - скачки в левый верхний угол иногда. Решайте, предлагайте, сделаю.
Это, а такой флаг вроде уже даже есть "Update Console handle". Вы когда конему с конманом пользуете, этот флаг должне быть установлен? Если да, то я его тогда могу и задействовать.
NightRoman wrote:Как подружить с конманом - давайте думать вместе.
можно поиграться с функами GetWindowThreadProcessId, EnumWindows и GetClassName... т.е. берем процесс, который сделал консоль, потом перебираем все окна с нужным классом и находим то окно, у которого тот-же самый процесс... если нашли - то вот оно окно ConEmu... если нет - то считаем что живем в честной консоле...
*) WM_RBUTTONUP: разобрался, в том смысле, что смог воспроизвести нежелательное меню консоли по правому клику. То есть на данный момент согласен - оставим, как было (и я добавлю коммент в код на будущее). На самом деле когда-нибудь какое-нибудь приложение захочет это событие, но пока примеров нет - заморачиваться не стоит. Завтра обновлю тестовую версию с учетом этого.
*) WM_MOUSEWHEEL: все еще неясно, продолжаю искать подвох.
*) WM_RBUTTONDBLCLK -> WM_RBUTTONDOWN: тоже неясно, может туплю (в одном режиме в панелях Фара элементы выделяются \ развыделяются, в другом становятся текущими и появляется меню - все как я ожидаю). Опиши подробнее, если не лень, в чем неудобство "стандарного" поведения и где подвох. Если лень - забудем, проблем с этим вроде нет.
Почему ж у тебя не работает режим с прокруткой? Не прояснилось?
NightRoman
Нет, всё тоже самое.
Width: 115
Height: 50
хотя и правда не ясно чем оно поможет. Про WM_RBUTTONDBLCLK -> WM_RBUTTONDOWN - достаточно быстро покликать правой кнопкой в панелях по папке - с костылём и без него - думаю будет сразу заметно в чём разница (если конечно райтклик ни на что другое не переопределён)
Zoin
Высота дефолтного буфера необычно мала (у тебя в дефолтной консоли тоже нет прокрутки?), может, в этом дело, попробуй увеличить. Если не поможет, я не знаю, в чем дело, тебе и карты в руки, попробуй разобраться - поможешь и себе, и другим.
ПОДДЕРЖКА CONMAN: если величина /BufferHeight отрицательная, то это является
указанием принудительно установить родителя консольного окна. Это может быть
нужно, например, для нормальной работы с ConMan. Замечание: в таком режиме в
процессе выделения мышью выделение может скакнуть в левый верхний угол - как
бороться - пока неясно, но если продолжать выделение, оно "восстанавливается".
Если команда /cmd не задана, берется сохраненная команда из реестра, если есть,
а если нет, то в режиме прокрутки запускается "cmd", а в стандартном режиме
сначала пытаемся запустить "far", потом "cmd".
Проверка на слишком маленькую или слишком большую заданную высоту буфера не
делается, рекомендуется выбирать ее так, что она заведомо больше высоты окна (в
строках), но не больше 9999, что является магическим ограничением высоты буфера
в виндовом диалоге настроек консоли.
Режим прокрутки предназначен в первую очередь для интерактивных сессий в
оболочках типа Cmd или PowerShell и не предназначен для программ типа FAR.
FAR, как и раньше следует запускать без всяких /BufferHeight - при этом
установка родителя окна консоли ДЕЛАЕТСЯ, то есть плагины, которые этого
ожидают, это и получают.
ОПИСАНИЕ РЕЖИМА ПРОКРУТКИ
*) Окно имеет стандартную вертикальную полосу прокрутки.
*) Управление прокруткой с клавиатуры:
- CtrlPgUp, CtrlPgDn листают страницы вверх-вниз
- CtrlUp, CtrlDn прокручивают вверх-вниз построчно
*) Работа с выделением только мышью: выделение - левой кнопкой с перемещением,
копирование и вставка - правой кнопкой.
ТЕХНИЧЕСКИЕ ПОДРОБНОСТИ (В ТОМ ЧИСЛЕ ДЛЯ НЕДАВНИХ ОБСУЖДЕНИЙ)
*) Реализована отрисовка выделения (работает только в режиме прокрутки).
*) В режиме прокрутки положение окна консоли подгоняется под положение мыши -
это нужно для корректной работы выделения в оригинальной консоли.
*) В режиме прокрутки при старте устанавливаем QuickEdit режим, это нужно для
возможности выделения мышью в оригинальной консоли.
*) WM_MOUSEWHEEL теперь обрабатывается как событие мыши, нужно для прокрутки.
*) WM_RBUTTONUP НЕ обрабатывается (как и было раньше), чтобы избежать
нежелательного появления консольного меню в некоторых ситуациях.
*) WM_RBUTTONDBLCLK преобразовывается в WM_RBUTTONDOWN (как и было раньше). По
задумке Zoin это помогает быстро быделить и тут же развыделить элемент панели
Фара двойным правым кликом (не знаю зачем, но считаем, что автору видней).
P.S. на случай, если есть\будут вопросы, пока я еще тут, потом на неделю пропаду.
EDIT: removed obsolete archive
Last edited by NightRoman on Thu 03 Jul, 2008 09:41, edited 1 time in total.
hoopoe
Правильно я понимаю: ты это добавляешь в конман, приседания с отрицательной высотой буфера использовать необязательно, и выделение в конему под конманом прекрасно работает в "режиме прокрутки"?
А какие еще плагины \ приложения ждут, что у скрытой консоли родитель - окно конему? Им бы тоже этот механизм не мешало бы задействовать, все-таки он выглядит более правильным, что ли.
NightRoman wrote:hoopoe
Правильно я понимаю: ты это добавляешь в конман, приседания с отрицательной высотой буфера использовать необязательно, и выделение в конему под конманом прекрасно работает в "режиме прокрутки"?
да, правильно... вот тут приаттачено... если кто попробует и отпишется - то будет респект...