We got a question in the comments:

I wonder how I can set the proxy server for WinInet programmatically? Actually I want to be able to flip flop the proxy setting (for IE) programmatically. Thanks Victor

There is two parts to doing this.
  1. Pass NULL as the handle to InternetSetOption using the INTERNET_OPTION_PER_CONNECTION_OPTION instead of the legacy INTERNET_OPTION_PROXY (See KB226473: How to programmatically query and set proxy settings under Internet Explorer for more on this step)
  2. Call InternetSetOption with INTERNET_OPTION_PROXY_SETTINGS_CHANGED with NULL Buffer and 0 BufferLength to let all the instances of WinInet know to update their proxy settings. You can also use INTERNET_OPTION_SETTINGS_CHANGED but it has side effects on any Keep Alive connections in your current process.

Good luck Victor and sorry for the late response.