Тема: iCarDs vs TaskBar
Показать сообщение отдельно
Старый 04.04.2016, 23:07   #1
b-max
Новый Пользователь
 
Аватар для b-max
 
Регистрация: 07.05.2014
Возраст: 48
Город: Набережные Челны
Регион: 16, 116
Машина: Kia Rio
Сообщений: 4
b-max is on a distinguished road
По умолчанию iCarDs vs TaskBar

Привет всем!
Почитав форум зажегся идеей постройки писикара.

Пока железки идут с поднебесной, решил поковырять софт. Установил на виртуальную машину семерку и iCar.

Начал глумиться, поставил галочку на автозагрузку икара в конфиге и перезагрузился, первое же что не понравилось, это моргание экрана при загрузке из-за того, что сначала грузится рабочий стол, потом он скрывается и следом грузиться iCar. Ну я подумал фигня делов то, зачем в машине нужен еще один фронт-энт в лице "explorer.exe" (а он и есть чистой воды фронт-энд только для Винды) ведь в 99% случаев со всеми задачами должен справиться iCar, быстренько сделал одинаковый фон для iCarа, рабочего стола и экрана приветствия, а чтобы разным приложениям не приходилось его масштабировать, а каждый делает это по своему, я его заранее сделал в размер экрана 1280х800, в итоге везде фон попадает пиксель в пиксель. Потом поменял значение Userinit в ветке реестра HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon на "C:\Program Files (x86)\TipTop software\iCar DS\iCarDS.exe" и перезагрузился.

Получилось вот что:

https://www.youtube.com/watch?v=-CXxRlN2z9k

Никаких морганий, музыка начинает играть еще до того, как появляется сам ICar, единственное при выключении проскакивает черный экран , это следствие того, что рабочий стол не загрузился.

Воодушевленый своими успехами, я принялся убирать это маленькое черное пятно, накидал маленький скрипт, и поставил его в выполнение по событиям "Загрузка скина" Что бы рабочий стол загружался после икара через 30 секунд, и убирался TaskBar
PHP код:
#NoTrayIcon
Sleep(30000)
If 
not ProcessExists("Explorer.exe"Then
  ShellExecute
("C:\Windows\explorer.exe",@SW_HIDE)
  
Sleep(1000)
  
Opt('WINTITLEMATCHMODE'4)
  
ControlHide('classname=Shell_TrayWnd','','')
EndIf 
НО ТУТ меня ждало большое разочарование, через 30 секунд как и положено запускался explorer и снизу ВЫПОЛЗАЛ TaskBar на секунду полторы и исчезал. К тому же загружающийся Explorer съедал дополнительные проценты у процессора который в этот момент активно занимается запуском различных служб и едва успевает обслуживать iCar.

Короче убрав черный экран при выключении,я получил кукиш от Винды - Explorer мне "показал язык" в виде TaskBara.

Фигня подумал я, нас не сломать, накой он нужен этот Explorer, ведь 99% времени за него работает iCar, да к тому же еще и грузит проц в момент когда не надо, пусть моргает черным экран, ведь это ненадолго, ведь в это время я уже должен выйти из машины .
Подумал так и убрал этот скрипт.

Но у меня остался 1%, это те случаи когда iCar чаго-то не может, и тут нужен Explorer.

Решил воспользоваться штатной функцией ICara встраивания программ и запускать его когда мне надо. И поставил Explorer как внешнее приложение к икару.

"Граната" прилетела откуда не ждали.
Рабочий стол появился, куча морганий экрана при этом, но появился, НО БЕЗ TaskBara, ведь iCar послушно скрыл его, я же сам галочку поставил в конфиге "Hide Task Bar".

Я опять метнулся в сторону написания скриптов, ну раз скрипты - тогда без встраивания, пусть выполняются автоматически при нажатии кнопки "windows" и по команде "свернуть икар" от войскомандера, в принципе этот же скрипт можно выполнить и при закрытии икара.
Поиском прошел по файлам скина нашел команду
PHP код:
button_9_command=MINIMIZE 
в файлах buttons.ini и buttons.def заменил ее на
PHP код:
button_9_command=RUN;C:\Users\iCarDS\Documents\iCarDS\skins\Chameleon\Scripts\Two.exe 
и зафигачил второй скрипт подобный первому
PHP код:
#NoTrayIcon
If not ProcessExists("Explorer.exe"Then
  ShellExecute
("C:\Windows\explorer.exe","","","",@SW_MAXIMIZE)
EndIf
Opt('WINTITLEMATCHMODE'4)
ControlShow('classname=Shell_TrayWnd''''')
Sleep(1000)
WinMinimizeAll ( ) 
Запустил...Переназначил кнопку чтобы переписались настройки в других файликах и Нажал кнопку...

Граната прилетела уже от Икара
Ему сильно не понравилось, что его насильно свернули, не сказав "пожалуйста", и он начал "партизанскую войну", при любых попытках запуска Explorera и поднятия TaskBara, он скрывал TaskBar через секунду другую, пока его снайперским выстрелом не убивали с Диспетчера задач.

Тут я зашел в тупик.

Выхода два:

1) КАК ТО исправить команды MINIMIZE и CF_EXIT_RR что бы они запускали Explorer сами если его нет в процессах.
2) опять скриптом запускать Explorer и после этого КАК ТО отправлять в ICar команды MINIMIZE и CF_EXIT_RR, что бы те выполняли все штатные процедуры, при выполнении этих команд.

Я думаю второй путь реальнее.
Вот в принципе из-за этих "КАК ТО" я и написал все изложенное выше. Надеюсь кто то знающий укажет мне направление и осветит путь куда идти.
b-max вне форума   Ответить с цитированием