Привет всем!
Почитав форум зажегся идеей постройки писикара.
Пока железки идут с поднебесной, решил поковырять софт. Установил на виртуальную машину семерку и 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, что бы те выполняли все штатные процедуры, при выполнении этих команд.
Я думаю второй путь реальнее.
Вот в принципе из-за этих
"КАК ТО" я и написал все изложенное выше. Надеюсь кто то знающий укажет мне направление и осветит путь куда идти.