Но "ясно, скрою" поможет избежать "ошаления" при случайном клике мышью... Остальное неважно...
Запрос на тестирование плагина (Консоль для ТС)
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
В принципе - можешь.B4rr4cuda писал(а):Это стандартное поведение cmd.exe. Используй хоткей "закрыть все", а потом уж альт-Ф4. Пофиксить не могу.
Не буду. Пусть лучше так, но без тормозов.B4rr4cuda писал(а):Могу вылечить только хуком, но он сильно затормозит Тотал.
Если будешь настаивать, сделаю...
Годится.B4rr4cuda писал(а):Попробую находить размеры используемого шрифта автоматом, если не получиться - добавлю пункт в опции.
OK. Подумаю что можно сделать...В принципе - можешь. Я ручками повесил в HotKeys.hks команду NewConsole на 1+115 и увидел, что ты прекрасно это обрабатываешь. Значит, Alt+F4 ты получаешь. Надо только придумать как об этом сообщить ТС. Тупо слать WM_CLOSE нельзя, потому что, возможно, открыт модальный диалог. В общем, способы против Кольки Сапрыкина есть
Проведу тест драйв хука на фокус или ещё что нить попробую, о результатах сообщу.
Доброго времени суток уважаемые.
Возникла пара вопросов:
1.
2. Насчёт размеров шрифта, я начинаю ненавидеть Делфи - половина функций для работы с консолью вообще необьявлена...
Для получения размеров надо вызывать
где nFont - индекс используемого шрифта получаемого
Вторая функция работает и возвращает индекс (правильный), а вот GetConsoleFontSize возвращает ошибку "недопустимый дескриптор".
У меня уже кипит моск, помогите плиз.
Выдрал из МСДН-а структуры и обьявил фунцы:
Кто скажет где ошибка? (Только не надо говорить что в ДНК
мой папа старался
)
Ещё могу сказать, что консоль у которой выдёргиваем данные приаттачена через AttachConsole.
Если код верен, но не рабоч :\ то другой вопрос: Как можно получить список терминальных шрифтов используемых консолью?
Гугля об этом несёт чушь...
Немного об изменениях:
*Доработал изменения размеров (уже в который раз
). Особенно МАХ режим...
*Запуск\закрытие консолей колёсиком мыши.
*Изменение цвета заголовка при потере\получении фокуса.
*Добавил пару опций
*Уменьшил вероятность запуска пустого таба (без консольного окна), нехороший баг оказался...
Планирую для версии 0.4:
Доработать внутренние команды, добавить пару новых.
Пофиксить размер консоли при смене шрифта.
Сделать наконец полноценный перехват из командной строки.
Возникла пара вопросов:
1.
А если посылать тоталу 24340 ака cm_Exit?Если фокус находится в консоли, то Alt+F4 не работает и выйти из коммандера можно только мышой.
Значит, Alt+F4 ты получаешь. Надо только придумать как об этом сообщить ТС. Тупо слать WM_CLOSE нельзя, потому что, возможно, открыт модальный диалог
2. Насчёт размеров шрифта, я начинаю ненавидеть Делфи - половина функций для работы с консолью вообще необьявлена...
Для получения размеров надо вызывать
Код: Выделить всё
GetConsoleFontSize(hConsoleOutput:THandle; nFont:Cardinal),
Код: Выделить всё
GetCurrentConsoleFont(hConsoleOutput:THandle;
bMaximumWindow:LongBool;
lpConsoleCurrentFont:PCONSOLE_FONT_INFO): LongBOOL stdcall;
У меня уже кипит моск, помогите плиз.
Выдрал из МСДН-а структуры и обьявил фунцы:
Код: Выделить всё
type PCONSOLE_FONT_INFO=^TCONSOLE_FONT_INFO;
TCONSOLE_FONT_INFO=record
nFont:DWORD;
dwFontSize:COORD;
end;
TGetCurrentConsoleFont = function (hConsoleOutput:THandle;
bMaximumWindow:LongBool;
lpConsoleCurrentFont:PCONSOLE_FONT_INFO): LongBOOL stdcall;
TGetConsoleFontSize=function( hConsoleOutput:THandle;
nFont:Cardinal):COORD;
var
GetCurrentConsoleFont:TGetCurrentConsoleFont;
fsn:TCONSOLE_FONT_INFO;
GetConsoleFontSize:TGetConsoleFontSize;
Siz:COORD;
std:THandle;
Nf:DWORD;
begin
//подключаем фунцы
@GetCurrentConsoleFont := GetProcAddress( GetModuleHandle('kernel32.dll'), 'GetCurrentConsoleFont');
@GetConsoleFontSize := GetProcAddress( GetModuleHandle('kernel32.dll'), 'GetConsoleFontSize');
//проверяем
if not assigned(GetCurrentConsoleFont) then Messagebox(0,'Not assigned','Error',mb_Ok) ;
if not assigned(GetConsoleFontSize) then Messagebox(0,'Not assigned','Error',mb_Ok) ;
//получаем вых хэндл
std:=GetStdHandle(STD_OUTPUT_HANDLE);
if std=0 then ShowMessage('Error='+Inttostr(GetLastError)+#10+#13+SysErrorMessage(GetLastError));
//получаем индекс шрифта, возвращает правильный результат...
if Not GetCurrentConsoleFont(std,False,@fsn) then ShowMessage(SysErrorMessage(GetLastError));
//сохраняем полученые данные (размер окна)
siz:=fsn.dwFontSize;
//А вот эта фунца выдаёт нули что по МСДНу ошибочно
fsn.dwFontSize:=GetConsoleFontSize(GetStdHandle(STD_OUTPUT_HANDLE),(fsn.nFont));
//Если фунца не сработала (а она не работает), то месага последней ошибки
if (fsn.dwFontSize.X=0) and (fsn.dwFontSize.y=0) then ShowMessage('Error='+Inttostr(GetLastError)+#10+#13+SysErrorMessage(GetLastError));
//вывод полученых данных (и не полученых тоже)
ShowMessage('Fsn'+#10+#13+'x='+IntToStr(fsn.dwFontSize.X)+#10+#13+'Y='+IntToStr(fsn.dwFontSize.Y)+#10+#13+'Siz'+#10+#13+'x='+IntToStr(Siz.X)+#10+#13+'Y='+IntToStr(Siz.Y));
Ещё могу сказать, что консоль у которой выдёргиваем данные приаттачена через AttachConsole.
Если код верен, но не рабоч :\ то другой вопрос: Как можно получить список терминальных шрифтов используемых консолью?
Гугля об этом несёт чушь...
Немного об изменениях:
*Пошёл на изврат, сделал возможность хоткеить и через хук и через RegisterHotkey. Теперь можно избежать бяк типа ^O в консоли.некоторые хоткеи не работают, когда фокус в консоли, например Ctrl+Win+O (вместо нового таба, в консоль впечатывается последовательность ^O)
*Доработал изменения размеров (уже в который раз
*Запуск\закрытие консолей колёсиком мыши.
*Изменение цвета заголовка при потере\получении фокуса.
*Добавил пару опций
*Уменьшил вероятность запуска пустого таба (без консольного окна), нехороший баг оказался...
Планирую для версии 0.4:
Доработать внутренние команды, добавить пару новых.
Пофиксить размер консоли при смене шрифта.
Сделать наконец полноценный перехват из командной строки.
С размерами вопрос решён. Я ступил дико
забыл stdcall и неделю долбился об стену
.
Код: Выделить всё
TGetConsoleFontSize=function( hConsoleOutput:THandle;
nFont:Cardinal):COORD;stdcall;v 0.4 beta
[+] обработка клика средней кнопкой мыши для создания\закрытия консоли.
[*] диалог настроек теперь модальный
[*] перекрытие диалога открытия шелла диалогом настроек
[*] пофиксены баги окна в развёрнутом состоянии
[/] размеры окна в развёрнутом состоянии
[+] хоткей как системный или хук на выбор
[+] команда show\hide
[*] пофиксены недоработки внутренних команд
[+] перехват ком.строки (по Shift+Enter)
[+] Смена цвета заголовка при получении\потере фокуса консолью
[*] Размеры консоли при смене шрифта
Качаем с рапиды
[+] обработка клика средней кнопкой мыши для создания\закрытия консоли.
[*] диалог настроек теперь модальный
[*] перекрытие диалога открытия шелла диалогом настроек
[*] пофиксены баги окна в развёрнутом состоянии
[/] размеры окна в развёрнутом состоянии
[+] хоткей как системный или хук на выбор
[+] команда show\hide
[*] пофиксены недоработки внутренних команд
[+] перехват ком.строки (по Shift+Enter)
[+] Смена цвета заголовка при получении\потере фокуса консолью
[*] Размеры консоли при смене шрифта
Качаем с рапиды
Так проверь. Но я думаю, что результат будет тот же самый.B4rr4cuda писал(а):А если посылать тоталу 24340 ака cm_Exit?
А вообще-то, выход по Alt+F4 - это не главное. Хрен с ним с модальным диалогом - если он открыт, то ТС и так по Alt+F4 не выйдет.
Главное - добавить команды, чтобы по хоткею можно было уйти с консоли в ТС и вернуться в консоль.
Пока наткнулся на такие проблемы.
1. При загруженном плагине у меня перестает работать PuntoSwitcher. Зверски мешает.
2. Если назначить команду на хоткей, который используется в ТС, то выполняются оба действия - и в консоли и в ТС. Например назначил нереход на следующую консоль по Alt+F7. В результате - и на следующую консоль перехожу и диалог поиска появляется.
3. Если файла Options.ini нет, то вроде все работает нормально. Если же поменять хоть что-то в настройках, то появляется Options.ini и при последующих запусках ТС, плагин загружается, но в окне ТС ничего не появляется. Проверь все, что пишется в Options.ini "по умолчанию".
ExchangeFocus чем не устраивает? Или Show\Hide ?Главное - добавить команды, чтобы по хоткею можно было уйти с консоли в ТС и вернуться в консоль.
1.
Мда, - промычал Герасим и пошёл топить Му-му...При загруженном плагине у меня перестает работать PuntoSwitcher. Зверски мешает.
Какая версия PS-a? Буду копать в чём проблема...
2. Регистрируй сочетание как системный хоткей...
3. Ты прав, с записью "по дефолту" недоработки... Буду фиксить..
ExchangeFocus устраивает. Я его не заметил. 
PuntoSwitcher - 2.6
Не зря я с детства ненавижу две вещи - рисовую кашу и системные хоткеи.
PuntoSwitcher - 2.6
Издеваисся, Герасим? Я поставил ExchangeFocus на Ctrl+Tab - так Ctrl+Tab перестал работать во всех программах.B4rr4cuda писал(а):2. Регистрируй сочетание как системный хоткей...
Не зря я с детства ненавижу две вещи - рисовую кашу и системные хоткеи.
Неее, ctrl+Tab ставить на ExchangeFocus дело экстримное... Я поставил ctrl+`(тильда), как обычный хук.Издеваисся, Герасим? Я поставил ExchangeFocus на Ctrl+Tab - так Ctrl+Tab перестал работать во всех программах.
СисХоты хорошо ставить на сочетания с winkey, собственно для того я их и сделал....
Жжошш...Не зря я с детства ненавижу две вещи - рисовую кашу и системные хоткеи.
Увлёкся, однако. Сделал всё что планировал...
Итак об изменениях:
v 0.5 beta
[+] проверка являеться выбранное в качестве шелла приложение консольным
[*] пофиксен баг с "двойными командами" по хоткею (хук), если запущенно два ТС
[+] опция "минимизировать и востановить при создании нового консольного окна". Отключено по умолчанию.
[*] фикс бага загрузки опций "по умолчанию"
[/] при закрытии консоли убиваються все приложения запущенные в консольных окнах (при выходе из ТС тоже)
[+] выход из ТС по ALT+F4 в консольном окне. По умолчанию отключенно.
[+] размер буфера экрана консоли меняеться автоматически при ресайзе либо фиксированный. По умолчанию - авто.
[+] добавленна опция фиксации размера заголовка таба. Неограниченный по умолчанию.
[*] фикс заголовков табов (странные названия)
[*] мелкие фиксы внутренних команд.
[*] баг работы совместно с PuntoSwitcher-ом
[+] разные хоткеи с различными параметрами на одну команду
[+] список комманд в выпадающем меню.
[+] смена каталога в консоли при смене каталога в ТС (в том числе и при смене таба). По умолчанию отключено.
Стыдно конечно, что опять бета, никак stable не появиться
. Но уже стабильность радует. 
Сделал автосмену каталога Alextp респект тебе за идею, оказалось очень удобно, но гемороя мне было на 5 ужасных часов
.
Для автосмены требуеться настройка, так что привожу кусок ридми во избежание вопросов:
Кстати консоль сбоку всобачить не получиться, кофициент багов и раздражителей зашкаливает. Провёл тесты - очень уж жутко. Мигание, перекосы, перекрытия окон - лишь малая часть. Как это исключить, я просто не знаю.
Скачать TotalConsole 0.5 beta
Итак об изменениях:
v 0.5 beta
[+] проверка являеться выбранное в качестве шелла приложение консольным
[*] пофиксен баг с "двойными командами" по хоткею (хук), если запущенно два ТС
[+] опция "минимизировать и востановить при создании нового консольного окна". Отключено по умолчанию.
[*] фикс бага загрузки опций "по умолчанию"
[/] при закрытии консоли убиваються все приложения запущенные в консольных окнах (при выходе из ТС тоже)
[+] выход из ТС по ALT+F4 в консольном окне. По умолчанию отключенно.
[+] размер буфера экрана консоли меняеться автоматически при ресайзе либо фиксированный. По умолчанию - авто.
[+] добавленна опция фиксации размера заголовка таба. Неограниченный по умолчанию.
[*] фикс заголовков табов (странные названия)
[*] мелкие фиксы внутренних команд.
[*] баг работы совместно с PuntoSwitcher-ом
[+] разные хоткеи с различными параметрами на одну команду
[+] список комманд в выпадающем меню.
[+] смена каталога в консоли при смене каталога в ТС (в том числе и при смене таба). По умолчанию отключено.
Стыдно конечно, что опять бета, никак stable не появиться
Сделал автосмену каталога Alextp респект тебе за идею, оказалось очень удобно, но гемороя мне было на 5 ужасных часов
Для автосмены требуеться настройка, так что привожу кусок ридми во избежание вопросов:
Ну и ещё кусочек ридми чтобы не напрягать ридми ненависников:В случае использования автосмены каталога консоли при смене пути в ТС - необходима дополнительная настройка.
Переходим в Настройка>Решение проблем> "Смена языка при смене папки\таба в ТС" выбираем
язык используемый на компьютере и в окно ввода "Алфавит" заносим буквы.
Пример:
Язык: Русский
Алфавит:йцукенгшщзхъфывапролджэячсмитьбю
Порядок ввода значения не имеет, важно само наличие символов.
Это необходимо для переключения языка при входе в папку с русским названием.
Иначе вводяться "кракозяблы". После ввода алфавита кликаем "Доб. Алфавит", ОК .
Постите пожалуйста wish-ы и багрепорты, так как проект я скоро прекращу.Дополнительного пояснения требует возможность нескольких хоткеев на одно действие. Многие привыкли переключать табы нажатием Ctrl+Tab, а для некоторых (и для меня в том числе) удобнее использовать TotalConsole c выключенными опциями "Передавать фокус консоли при смене вкладки" и "Передать фокус создаваемой консоли",( т.е. консоль не получает фокус при создании и при смене вкладки, фокус всегда у ТС) используя Shift+Enter для передачи консоли команд. Для смены вкладки я использую хоткей ctrl+`(тильда), но бывают случаи, когда я всё же перехожу в консоль и тут руки вспоминают про ctrl+tab. Теперь можно назначить Ctrl+Tab команде NextTab с параметром "Работать в" "TotalConsole" и хоткей Ctrl+` на NextTab с параметром "Оба" или "TC".
Кстати консоль сбоку всобачить не получиться, кофициент багов и раздражителей зашкаливает. Провёл тесты - очень уж жутко. Мигание, перекосы, перекрытия окон - лишь малая часть. Как это исключить, я просто не знаю.
Скачать TotalConsole 0.5 beta