Как вернуть оболочку желаний после скрытия консоли

У меня есть оболочка tcl wish в качестве интерпретатора Tcl, где я выполнил команду console hide. Итак, консоль стала невидимой, но процесс существует в диспетчере задач. Есть ли у них способ снова получить консоль. У нас есть console show но где его запустить?

Присоединение оболочки желаний 8.6 с опцией скрытия консоли


person Dcode    schedule 14.04.2016    source источник


Ответы (2)


У вас есть графический интерфейс Tk, с которым вы можете взаимодействовать? Если это так, один из вариантов - привязать клавишу, чтобы при нажатии в вашем графическом интерфейсе она открывала консоль. Например. если окно графического интерфейса верхнего уровня "." и вы выбираете клавишу F2, добавьте следующее в свой код Tk:

bind . <F2> {console show}
person Colin Macleod    schedule 14.04.2016

Возможно, это немного жесткий подход, но он работает, если у вас есть TWAPI пакет и PID процесса:

% package require twapi
4.1.27

Теперь давайте получим дескрипторы окна, доступные для PID:

% set w [twapi::get_toplevel_windows -pid 2432]
{197612 HWND} {132106 HWND} {590378 HWND} {132100 HWND} {327716 HWND}  {132098 HWND} {132094 HWND} {393624 HWND}

Одно из этих окон должно быть скрытой консолью:

% foreach win $w {
>   puts "[twapi::get_window_text $win] Handle: $win"
> }
Konsole Handle: 197612 HWND
TclNotifier Handle: 132106 HWND
wish Handle: 590378 HWND
E Handle: 132100 HWND
M Handle: 327716 HWND
TtkMonitorWindow Handle: 132098 HWND
MSCTFIME UI Handle: 132094 HWND
Default IME Handle: 393624 HWND

Это немецкий виндовс, так что мне подходит Konsole, давайте еще раз покажем:

% twapi::show_window {197612 HWND}
1

И теперь консоль вернулась, и вы можете ею пользоваться.

person schlenk    schedule 15.04.2016
comment
Это здорово. Но единственная проблема заключается в том, что после того, как я скрыл консоль в основной оболочке желаний, мне нужно перезапустить новую новую оболочку, чтобы запустить описанный выше процесс, чтобы сделать предыдущую консоль видимой. Можем ли мы снова избавиться от перезапуска новой оболочки? - person Dcode; 18.04.2016
comment
Если вы можете изменить код, просто используйте код, предложенный в другом ответе @Colin. Этот ответ предполагает, что вы заблокировали себя от процесса и вам нужно вернуть консоль СЕЙЧАС. - person schlenk; 18.04.2016
comment
оболочка моего желания немного настроена. таким образом, окно верхнего уровня закрывается во время самого запуска. вот почему привязка не работает для меня. Я думаю, что обходной путь заключается в том, чтобы изменить состояние окна верхнего уровня на нормальное, как только скрытие консоли будет выполнено из меню файла желаний. - person Dcode; 19.04.2016