When you develop an application that runs on Windows Embedded Compact 7, you may need your application to programmatically change the Internet Explorer Embedded registry settings. You can apply the new settings without the user having to restart the web browser by adding a couple extra lines of code. The following code examples show you how you can change the location of the Internet Explorer Embedded cache, cookies, or history at runtime.
In this article:
Windows Embedded Compact 7 uses registry values to specify the directories in which the cache, history, and cookies are stored. The registry key for these values is HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders.
The following table shows the default path settings in the registry for the cache, cookies, and history values.
In your application, after the code that modifies the registry, add the following two lines of code. This code notifies any instances of the web browser that are currently open that the settings have changed, and it then posts an update so that the rendering engine can reload its settings.
InternetSetOption( NULL,INTERNET_OPTION_SETTINGS_CHANGED,NULL,0 ); PostMessage( HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0 );
For example, the following code changes the cache path to a directory called Temp:
HKEY myRegistryKey; RegOpenKeyEx( HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"),0,0,&myRegistryKey ); RegSetValueEx( myRegistryKey, TEXT("Cache"),0, REG_SZ, (LPBYTE)TEXT("\\Temp"), sizeof(TCHAR) * sizeof(TEXT("\\Temp")) ); RegCloseKey( myRegistryKey ); InternetSetOption( NULL,INTERNET_OPTION_SETTINGS_CHANGED,NULL,0 ); PostMessage( HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0 );
The user does not need to close and reopen the web browser for the preceding changes to take effect.
When you’re modifying the registry, it may also be helpful for you to see how the code for the Internet Options Control Panel item interacts with Internet Explorer Embedded registry settings. This source code is in %_WINCEROOT%\public\ie7\oak\inetcpl.
Great article! It's got great code, Important box, etc.