cmhome.dll содержит 26 плагинов. Большая часть занята или является атавизмом оставшимся от версии Стандарт.
Добавление нового плагина.Каждый плагин имеет GUID, нас интересует плагин с GUID = {F0A1B246-6E64-40cd-8E15-347D29FF6F18}, через него выводятся свои плагины.
Параметры плагина находятся в двух местах - в реестре и в файлах Titanium_**0x**0.cpr.
Реестр.
[HKEY_LOCAL_MACHINE\Software\Microsoft\CHome\MyCallHistory] - имя плагина
"LocName"="MyCallHistory"
"Layout"="MyCallHistory"
"DataSource"="SOFTWARE\\Microsoft\\CHome\\MyCallHistory" - ключ где хранятся параметры плагина, в данном случае они находятся в одном ключе, но могут быть в любом месте.
"GUID"="{F0A1B246-6E64-40cd-8E15-347D29FF6F18}" - идентификатор плагина, с помощью которого выводятся данные
"Updated"=dword:00000000 - ???
"Pages"="Page1;Page2;Page3" - станицы которые содержит плагин (имена страниц, это переменные, могут быть любыми)
Плагин в свёрнутом состоянии[HKEY_LOCAL_MACHINE\Software\Microsoft\CHome\MyCallHistory\CondensedPage]
"PluginLabel"="История звонков" - текст на экране
"CurrentIcon"="2502" - значёк: Имя параметра может быть любым, это переменная. Значение - ID значка из bronzeres.dll или ссылка на картинку, путь должен быть полным, например \Windows\МойЛюбимыйЗначёк.png
Страницы, плагин в развёрнутом состоянии[HKEY_LOCAL_MACHINE\Software\Microsoft\CHome\MyCallHistory\Page1] - имя страницы, (имена страниц, это переменные, могут быть любыми)
"ACTIONURL"="CallHistory.exe" - действие по нажатию на плагин
"SK2Text"="Звонки" - текст на правой софт-клавише
"SK2URL"="CallHistory.exe" - действие по правой софт-клавише
"SettingsText"="История звонков" - ???
"TITLETEXT1P1"="История звонков" - текст заголовка (имена строк, это переменные, могут быть любыми)
"TXT1P1"="Звонки" - текст второй строки
"TXT2P1"="Просмотр истории звонков" - текст третьей строки (заголовок, 2 и 3 строка, это всё условно, количество строк может быть любым, главное, что бы в плагин помещалось.)
"Icon1"="\\Windows\\Start_Icon_Messenger.png" - иконка страницы (справа) - (имена иконок, это переменные, могут быть любыми)
"Image1"="2502" - иконка страницы (слева) - (слева или справа, это всё условно, количество иконок может быть любым, главное, что бы в плагин помещалось.)
Страница 2 и 3 для примера, а также для дальнейшего понимания связи с Titanium_**0x**0.cpr.
[HKEY_LOCAL_MACHINE\Software\Microsoft\CHome\MyCallHistory\Page2]
"SK2Text"="Звонки"
"SK2URL"="CallHistory.exe"
"ACTIONURL"=":MSCONTACTS"
"SettingsText"="Контакты"
"TITLETEXT1P2"="Список контактов"
"TXT1P2"="Контакты"
"TXT2P2"="Просмотр телефонной книги"
"Icon2"="\\Windows\\Start_Icon_Contacts.png"
"Image2"="2502"
[HKEY_LOCAL_MACHINE\Software\Microsoft\CHome\MyCallHistory\Page3]
"SettingsText"="Телефон"
"SK2Text"="Телефон"
"SK2URL"=":MSCProg"
"ACTIONURL"=":MSCProg"
"TITLETEXT1P3"="Набор номера"
"TXT1P3"="Телефон"
"TXT3P3"="выбранному из списка номеру"
"TXT2P3"="Звонок по набранному или"
"Icon3"="\\Windows\\Start_Icon_Phone.png"
"Image3"="2502"
Значения для левой софт-клавиши общие для всех плагинов, находятся
[HKEY_LOCAL_MACHINE\Software\Microsoft\CHome]
"SK1TEXT"="Контакты"
"SK1URL"=":MSCONTACTS"
После создания всех параметров для своего плагина, его необходимо добавить в список плагинов
[HKEY_LOCAL_MACHINE\Software\Microsoft\CHome]
"Plugins"="MySetting;MyBluetooth;MyCallHistory;CClock;CPhone;CText"
"ExtensibilityXML"="<Plugins Order=\"MySetting;MyBluetooth;MyCallHistory;CClock;CPhone;CText\" CPRFileName=\"Titanium\" DisplayStyle=\"Titanium\" />"
Titanium_**0x**0.cpr
ID плагина в cpr формируется из имени плагина в реестре (MyCallHistory) и суффиксов Expanded (развёрнут)/Condensed (свёрнут)
<!-- CallHistory layout templates -->
<Layer ID="MyCallHistoryExpanded" Visible="False" Width="240" Height="82" Clip="False">
<Layer ID="Page" Clip="False">
<!-- Страница 1 -->
<!-- Значёк справа -->
<Image ID="Icon1" Left="188" Top="-13" Width="45" Height="45" ScaleStyle="Fit"/> - Image ID="Icon1" должен соответствовать имени в реестре для Page1
<!-- Значёк слева -->
<Image ID="Image1" Left="10" Top="1" Width="44" Height="44"> - Image ID="Image1" должен соответствовать имени в реестре для Page1
<Layer ID="Border" Color="0xffffff" Left="-1" Top="-1" Width="45" Height="45" />
</Image>
<!-- Заголовок 1 -->
<Text ID="TITLETEXT1P1" Left="55" Top="9" Width="200" Height="21" FontFamily="Tahoma" FontSize="10" FontStyle="Bold" Wrap="False" VerticalAlignment="Top" Trimming="EllipsisCharacter">
<TextStage TextOffsetType="TextOffsetDropBottomRight" Color="#00000000" TextOffset="1" BlurFactor="3" Alpha="1.0"/>
<TextStage TextOffsetType="TextOffsetNone" Color="#FFFFFFFF"/>
</Text>
<!-- Строка 2 -->
<Text ID="TXT1P1" Left="55" Top="26" Width="200" Height="21" FontFamily="Tahoma" FontSize="10" FontStyle="Bold" Wrap="False" VerticalAlignment="Top" Trimming="EllipsisCharacter">
<TextStage TextOffsetType="TextOffsetDropBottomRight" Color="#00000000" TextOffset="1" BlurFactor="3" Alpha="1.0"/>
<TextStage TextOffsetType="TextOffsetNone" Color="#FFFFFFFF"/>
</Text>
<!-- Icon for Line 1 not currently used -->
<!-- Строка 3 -->
<Text ID="TXT2P1" Left="55" Top="43" Width="200" Height="15" FontFamily="Tahoma" FontSize="9" FontStyle="Regular" Wrap="False" VerticalAlignment="Top" Trimming="EllipsisCharacter">
<TextStage TextOffsetType="TextOffsetDropBottomRight" Color="#00000000" TextOffset="1" BlurFactor="3" Alpha="1.0"/>
<TextStage TextOffsetType="TextOffsetNone" Color="#FFFFFFFF"/>
</Text>
Text ID должны соответствовать именам в реестре для Page1
и т.д. для страниц 2,3..................................
<Layer ID="MyCallHistoryCondensed" Visible="False" Width="240" Height="34">
<Layer ID="Page">
<!-- Title or Condensed Line 1 -->
<Image ID="CurrentIcon" Left="10" Top="10" Width="22" Height="22" ScaleStyle="Fit" />
<Text ID="PluginLabel" Left="35" Top="4" Width="220" Height="34" FontFamily="Tahoma" FontSize="18" FontStyle="Regular" Wrap="False" VerticalAlignment="Top" Trimming="EllipsisCharacter">
<TextStage TextOffsetType="TextOffsetDropBottomRight" Color="#00000000" TextOffset="1" BlurFactor="3" Alpha="1.0"/>
<TextStage TextOffsetType="TextOffsetNone" Color="#FFFFFFFF"/>
</Text>
Image ID и Text ID должны соответствовать именам в реестре для CondensedPage
=========================================================================================
Стандартные плагины (тут всё плохо)
Реестр.
[HKEY_LOCAL_MACHINE\Software\Microsoft\CHome\CPhone]
"ICONPATHS"="2701;2701" - Значение - ID значка из bronzeres.dll
возможна замена на картинку, путь должен быть полным, например \Windows\МойЛюбимыйЗначёк.png
Если ID значка написано 2 раза, то и ссылки на картинку должно быть две, например \Windows\МойЛюбимыйЗначёк.png;\Windows\МойЛюбимыйЗначёк.png
"LocName"="Phone"
"GUID"="{EBB3B89E-B3E5-46e2-BFAF-F55FBCA98BA1}"
[HKEY_LOCAL_MACHINE\Software\Microsoft\CHome\CPhone\Images]
"chNotifications_cv_missedcall"="2000"
"chNotifications_missedcall"="2005"
"chNotifications_multi_missedcalls"="2005"
"chNotifications_nonotifications"="2015"
"chNotifications_sm_cell"="2016"
"chNotifications_sm_home"="2017"
"chNotifications_sm_work"="2018"
Имена параметров забиты в cmhome.dll, значения можно менять также, как и для ICONPATHS.
Titanium_**0x**0.cpr
Добавление своего значка.
Во всех стандартных плагинах прописан значёк справа
<Image ID="Icon" Left="188" Top="-13" Width="43" Height="57"/>
можно добавить свой значёк с помощью Source, например
<Image ID="Icon" Source="\Windows\CPhone_CurrentIcon.png" Left="10" Top="1" Width="48" Height="48" ScaleStyle="Fit" />
Изменения теста плагина в свёрнутом состоянии.<Layer ID="PhoneCondensed" Visible="False" Width="240" Height="34">
<Layer ID="Page">
<!-- Plugin Label -->
<Image ID="CurrentIcon" Source="\Windows\CPhone_CurrentIcon.png" Left="10" Top="10" Width="24" Height="24" ScaleStyle="Fit" />
<!-- <Text ID="PluginLabel" Left="35" Top="4" Width="220" Height="34" FontFamily="Tahoma" FontSize="18" FontStyle="Regular" Wrap="False" VerticalAlignment="Top" Trimming="EllipsisCharacter" InnerTextType="Resource" Text="cmhomeres.dll,1020"> -->
Текст плагина берётся из cmhomeres.dll,1020 (1020 это ID строки в cmhomeres.dll)
Можно заменить на свой, удалив InnerTextType="Resource" и заменив Text="Свой текст"
<Text ID="PluginLabel" Left="35" Top="4" Width="220" Height="34" FontFamily="Tahoma" FontSize="18" FontStyle="Regular" Wrap="False" VerticalAlignment="Top" Trimming="EllipsisCharacter" Text="Телефончик">
----------------------------------------------------------------------------------------------
Плагин CClock кроме стандартных параметров, содержит ещё два, которых по умолчанию нет в Titanium_**0x**0.cpr
<Text ID="Day of Week" - показывает день недели
<Text ID="WiFi" - показывает состояние WiFi (отображается только если WiFi включён)
----------------------------------------------------------------------------------------------
Замена линзы.По идее параметры для линзы прописаны в
<Image ID="Image Default" Left="0" Top="0" Width="240" Height="82" ScalingAlgorithm="TriLinear" Opacity="1.0" />
но добавление параметра Source="\Windows\МояКартинкаДляЛинзы.png" ни к чему не привело.
Поэтому линзу можно заменить только заменив в bronzeres.dll ресурс 3000 или сделав bronzeres.dll.0419.mui с изменённым ресурсом.
Для картинок используются 32 битные png с альфа каналом, редактировать можно например с помощью Paint.NET
http://www.getpaint.net/index.htmlВложение:
chome_182.gif
После установки САВа должно быть как на картинке.
Всё что касается БТ будет работать только на устройствах с Броадкомовским стеком, для MS надо переделывать.
В состав САВа входит программа CHomeRefresh.exe, можно обновлять плагин без вкл/выкл через настройки.
Всё написаное применимо к билдам WM 21198 и выше!Вложение:
CPR-resolution-converter.zip
Вложение:
ExampleCHome.CAB