Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Изменение размера окна TC при переключении юзеров (Win7x64) 
Author Message
Mellomann



PostPosted: Sat Dec 14, 2013 23:56    Post subject: Reply with quote

Постараюсь описать причину проблемы простым языком без сильного углубления в теорию.
Опишу только практику и происходящие шаги.

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

Шаг 2 - смена пользователя (два сценария)
А. Пуск -> сменить пользователя -> энтер... переходим к шагу 3.
(или)
Б. Win+L -> при блокировке экрана поверх всех окон, десктопа и панелей рисуется экран блокировки с полем для пароля -> жмём "сменить юзверя" - с тем же результатом переходим к шагу 3.

Шаг 3 - момент смены пользователя.
Итак, мы нажали "смену пользователя", далее мы видим, что монитор гасится на 2-3 сек, затем отрисовывается экран списка пользователей.
И тут как раз - самое интересное.
Именно в момент "потухания" происходит:
А. весьма быстрое исчезание видеосигнала - кадра на 2-3, по времени - это где-то 0,2-0,5 сек, не больше,
Б. затем выводится чёрный экран в разрешении на одну ступень ниже актуального - где-то 0,5-1,0 сек (по моему монитору это 1680х1050),
В. затем снова сигнала нет пару кадров,
Г. и только после всего этого рисуется экран со списком пользователей в опять уже правильном разрешении.

Шаг 4 - получаем результаты
Далее можно переключаться на другого пользователя, там что-то сделать и вернуться обратно. Можно на другого не переходить, а просто вернуться обратно на того, из которого только что вышли.
Важно - что был выход из сеанса пользователя (без его завершения) а потом - вход обратно.
Итак, что мы видим теперь из моего примера. Все НЕполноэкранные окна, имевшие размер больше, чем 1680х1050, уменьшились до этого размера (например, браузер был 1844х644, стал 1680х644).
Ещё, в случае удачного совпадения момента влогинивания и момента отображения всплывалки сообщения скайпа в правом углу (например, кто-то "вовремя" написал), эта самая всплывалка оказывается не в углу а в позиции, соответствующей углу кадра 1680х1050.
В общем, такое поведение получается практически со всеми окнами, рисующими свои размеры и позицию системным способом. Положение окон, кстати, тоже может уходить влево вверх, если до этого оно выступало за границы "минус первой ступеньки" разрешения экрана.
Такой же результат можно получить вручную просто изменив разрешение монитора на одну ступень вниз, а затем вернув обратно.

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

Подобной проблеме подвержена вся линейка Windows 6.x - т.е., Vista, 7, 8.
К сожалению, про Win XP точно сказать не могу - когда она использовалась, у меня не было надобности в параллельной работе пользователей.

Небольшие поправки к примеру:
1. Взятые цифры 1920х1080 и 1680х1050 - это как раз родное разрешение моего рабочего монитора и "минус одна ступенька" соответственно.
2. Другой рабочий пример - на ноутбуке с экраном 1366х768 такой ступенькой оказалась 1280х768. Обрезка до кадра происходит аналогично.
3. При многомониторных конфигурациях сдвиги позиций получаются ещё более интересные.
4. Обладатели быстрых мониторов с цифровым интерфейсом могут успеть разглядеть один-два кадра чёрного экрана шага 3Б между исчезаниями сигнала в шагах 3А и 3В.

Немного практики
Увидеть своими глазами можно происходящее и без быстрого монитора, достаточно инета, второго компа и TeamViewer'а.
Идельный вариант - когда будем управлять удалённо с десктопа (компа с 1920х1080) ноутом с его родным 1366x768.
Итак:
1. подключаемся на удалённое управление ноутом, получаем кадр 1366х768 в окне тимвьювера,
2. жмём смену пользователя на ноуте
3. (хоть программа выдаст, мол сеанс приостановлен, ни в коем случае не отключаемся, следим дальше!)
4. окно управления на десктоме становится по размеру 1280х768 (это хорошо заметно, обращаем на это особое внимание)
5. на ноуте обратно возвращаеся на вышедшего пользователя
6. окно управления на дестопе возвращается к нормальному размеру
П.с.
Важно, чтобы на десктопе разрешение экрана было с запасом больше, чтобы можно было заметить уменьшение размера окна управления. В данном случае оно будет в 100% масштабе соответствовать разрещению экрана ноута и менять свои размеры при перелогинивании на ноуте.

p.s.
После всего многобуквия.
Всё вышеизложенное 100% воспроизводится на практике в моих рабочих условиях, все указанные разрешения (1080p и 768p) реальны, все "предыдущие" ступеньки были сначала рассчитаны теоретически, затем подтверждены на практике.
Если какой-то момент остался неясен - обращайтесь, постараюсь описать подробнее.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group