【原创】定制ROM时自定义默认主题

      众所周知tsk是Windows mobile的主题安装包,用WinCE Manager查看一下tsk文件,你会发现tsk文件主要是由两部分组成。它就像cab文件一样包括必要的文件和注册表项的记录,这这些必要的文件一般都是jpg图片或者gif图片,而这些图片就是WM今日桌面和开始弹出菜单处的背景图。这些注册表项主要是用来设置系统颜色和记录系统当前所使用的主题文件。当你把tsk文件放在Windows目录或者My Documents等目录下你打开设置==>今日里面的主题文件会现在出来,这是因为WM系统会自动搜索出tsk文件并置于此处。你可以通过编程的方式安装tsk文件,代码如下:
 1 void SetTheme()
 2 {
 3  HKEY hKey;
 4  LONG lRet;
 5  TCHAR szCmdLine[MAX_PATH+1];
 6  TCHAR* pszFile = _T("mytheme.tsk"); // The theme file
 7 
 8  lRet = RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Today"), 00,&hKey);
 9 
10  if(ERROR_SUCCESS == lRet)
11  {
12   RegDeleteValue(hKey, _T("UseStartImage"));
13 
14   wcscpy(szCmdLine, _T("/safe /noui /nouninstall /delete 0 "));
15   wcscat(szCmdLine, pszFile);
16 
17   PROCESS_INFORMATION pi;
18 
19   if(CreateProcess(_T("\\Windows\\wceload.exe"),szCmdLine,NULL, NULL, FALSE, 0, NULL, NULL, NULL , &pi))
20   {
21    WaitForSingleObject(pi.hProcess, INFINITE);
23    CloseHandle(pi.hProcess);
25    RegSetValueEx(hKey, _T("Skin"), 0, REG_SZ,(BYTE*)pszFile, sizeof(TCHAR) * (wcslen(pszFile) + 1);
27    RegCloseKey(hKey);
31    :SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0xF2,0);
32   }
34  }
35 }
36 
      哈哈,好像题有点跑了,其实tsk文件主要是给系统改写注册表和添加两个图像文件。可是在定制ROM的时候却不能却不能通过简单的写注册表和添加图像文件来实现默认主题的修改,就算你在定制ROM的时候添加这样的注册表项,也是没用,因为系统在编译的时候会改写你这个注册表项,这个改写的动作由一个xml文件来控制,你可以查看一下wm61themeconfig_96.xml,你会发现这个就是WM用来设置默认主题的控制文件,里面记录了默认tsk文件名、系统上下栏颜色以及SHCOLOR和SYSCOLOR等系统颜色设置方面的信息。所以不能把这个文件包含进bin里面。工作还没好,你还需要找到Base_DPI_96.cab.pkg并且把它删除掉,其实之前删除wm61themeconfig_96.xml,但是系统依然会重新生成一个wm61themeconfig_96.xml文件,这是因为由Base_DPI_96.cab.pkg自动生成的,这个文件都是都是由一些16进制的字符表示的,主要记录系统图标、系统图标等信息,所以要想彻底的定制自定义默认主题也必须把BSP中的Base_DPI_96.cab.pkg干掉。除此以外,还是需要把tsk文件中的图片解压编译,把tsk文件的注册表项导出来添加到platform.reg。这样就OK了,虽然这种办法是work的,但是其中不乏暴力行为,还没有更好的办法之前只能这样干呗。网上还有一些说通过修改wm61themeconfig_96.xml,方法理论上应该可以,没那么暴力但是没有试过也不清楚是否work。如果行的话,朋友可以留言通告一声。

转载于:https://www.cnblogs.com/IamEasy_Man/archive/2009/09/05/1561099.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值