none
如何用编程的方式将PPC(wm5)的桌面设置为系统默认主题? RRS feed

答案

  • 以下代码可将mytsk.tsk设置为今日主题,但是除此以外还需要自动设置Basehue等参数(至于如何设置,我也在找相关资料),不然显示效果不太好。

    void SetTheme()
    {
     HKEY hKey;
     LONG lRet;
     TCHAR szCmdLine[MAX_PATH+1];
     TCHAR* pszFile = _T("mytheme.tsk"); // The theme file

     lRet = RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Today"), 0, 0,&hKey);

     if(ERROR_SUCCESS == lRet)
     {
      RegDeleteValue(hKey, _T("UseStartImage"));

      wcscpy(szCmdLine, _T("/safe /noui /nouninstall /delete 0 "));
      wcscat(szCmdLine, pszFile);

      PROCESS_INFORMATION pi;

      if(CreateProcess(_T("\\Windows\\wceload.exe"),szCmdLine,NULL, NULL, FALSE, 0, NULL, NULL, NULL, &pi))
      {
       WaitForSingleObject(pi.hProcess, INFINITE);

       CloseHandle(pi.hProcess);

     

       RegSetValueEx(hKey, _T("Skin"), 0, REG_SZ,(BYTE*)pszFile, sizeof(TCHAR) * (wcslen(pszFile) + 1));

       RegCloseKey(hKey);

     

       :Tongue TiedendMessage(HWND_BROADCAST, WM_WININICHANGE, 0xF2,0);
      }

    }
    }

    2008年10月16日 6:20

全部回复

  • 您说的桌面是什么意思?是说编程设置桌面壁纸么?

    请参考:

    http://www.cnblogs.com/fox23/archive/2008/02/28/wallpaper.html

    2008年10月9日 6:43
    版主
  • fox23,可能我的问题没有表述清楚。我的意思不是改变壁纸(wallpaper),而是要整个PPC的今日主题(today theme)设置为系统默认主题。比如当前PPC使用的是Architecture.tsk作为今日主题,那么如何用编程的方式将今日主题设置回系统默认主题(Windows Default)呢?谢谢!

    2008年10月10日 2:42
  • 我也需要知道这个问题的答案,怎么用程序来修改主题.

    2008年10月14日 9:04
  • ShellExecuteEx直接运行哪个tsk不行吗?

    2008年10月14日 13:41
  • 只可以到系统设置-->今日界面,好象无法到具体的哪一个TSK.

    2008年10月15日 3:04
  • 我可以通过程序代码控制如何将TSK文件应用为今日主题,但是就是不知道如何恢复到系统默认主题,郁闷ing

    2008年10月15日 6:06
  • 能告诉我怎么样控制将TSK文件应用为今日主题吗?非常谢谢

    2008年10月15日 6:10
  • 以下代码可将mytsk.tsk设置为今日主题,但是除此以外还需要自动设置Basehue等参数(至于如何设置,我也在找相关资料),不然显示效果不太好。

    void SetTheme()
    {
     HKEY hKey;
     LONG lRet;
     TCHAR szCmdLine[MAX_PATH+1];
     TCHAR* pszFile = _T("mytheme.tsk"); // The theme file

     lRet = RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Today"), 0, 0,&hKey);

     if(ERROR_SUCCESS == lRet)
     {
      RegDeleteValue(hKey, _T("UseStartImage"));

      wcscpy(szCmdLine, _T("/safe /noui /nouninstall /delete 0 "));
      wcscat(szCmdLine, pszFile);

      PROCESS_INFORMATION pi;

      if(CreateProcess(_T("\\Windows\\wceload.exe"),szCmdLine,NULL, NULL, FALSE, 0, NULL, NULL, NULL, &pi))
      {
       WaitForSingleObject(pi.hProcess, INFINITE);

       CloseHandle(pi.hProcess);

     

       RegSetValueEx(hKey, _T("Skin"), 0, REG_SZ,(BYTE*)pszFile, sizeof(TCHAR) * (wcslen(pszFile) + 1));

       RegCloseKey(hKey);

     

       :Tongue TiedendMessage(HWND_BROADCAST, WM_WININICHANGE, 0xF2,0);
      }

    }
    }

    2008年10月16日 6:20
  • Windows mobile 6.1运行无效哦!
    2010年1月13日 8:46