2009-04-15 14 views
10

La nostra applicazione utilizza libcurl per HTTP e vogliamo ottenere l'accesso alle impostazioni proxy di Internet Explorer. Una precedente domanda Overflow dello stack recommends that we use WinHttpGetIEProxyConfigForCurrentUser and WinHttpGetProxyForUrl.Qual è il modo consigliato per ottenere winhttp.h?

Sfortunatamente, l'intestazione winhttp.h non sembra essere inclusa nelle nostre copie Visual C++ 2005 o Visual Studio 2008. Apparentemente, it's possible to download an updated Platform SDK and install it in Visual C++ 2005, ma è un processo piuttosto doloroso e non funziona necessariamente con le versioni più recenti di Visual Studio.

Esiste un modo valido e ben supportato per accedere alle API WinHTTP 5.1 da C++? O dovremmo evitare di utilizzare queste API?

risposta

15

Il modo migliore e ben supportato per accedere alle API WinHTTP 5.1 da C++ è tramite Windows SDK (nuovo nome per Platform SDK) e utilizzando le API menzionate.

L'articolo che hai collegato suggerisce che l'installazione dell'SDK è difficile - la buona notizia è che è un vecchio articolo del 2006 e le cose sono molto più semplici in questi giorni. Basta effettuare le seguenti operazioni:

  1. scaricare l'ultima immagine ISO SDK da here - non ti preoccupare che venga chiamato il "SDK per Windows Server 2008", è anche per Server 2003, XP e Vista.
  2. Masterizza su DVD
  3. Eseguire setup.exe sul DVD, selezionare l'installazione completa e lasciarlo funzionare per 1/2 ora circa.
  4. Dopo l'installazione, goto Start -> Programmi -> Microsoft Windows SDK -> Visual Studio di registrazione ->integrare Windows SDK con Visual Studio 2005

Si può anche essere richiesto di eseguire lo strumento di integrazione durante l'installazione - È passato un po 'di tempo dall'ultima volta che l'ho installato, quindi non ricordo esattamente.

Il compilatore di Visual C++ sarà quindi in grado di trovare winhttp.h e winhttp.lib nelle cartelle appropriate.

Aggiornamento Come al solito le cose non sono mai così semplici come dovrebbero essere. EMK ha sottolineato che lo strumento di configurazione di Windows SDK non funziona correttamente con Visual Studio 2008 (qualsiasi versione) e si blocca dopo l'installazione di Visual Studio 2008 SP1. Dettagli e soluzioni alternative sono segnalate here e here.

+0

Grazie! L'installazione completa è effettivamente necessaria, o potremmo farla franca solo installando (per esempio) le parti C++ rilevanti? – emk

+1

Ho dimenticato quali opzioni ci sono - è probabile che si possano ottenere solo le intestazioni e le librerie Win32. Tuttavia, di solito installo assolutamente tutto, dal momento che lo spazio su disco è economico ma presumibilmente il tuo tempo (per capire quali componenti hai bisogno) non lo è. – snowcrash09

+0

Abbastanza giusto! Abbiamo bisogno di installarlo su molte macchine, quindi ho pensato che valesse la pena di capire quali componenti effettivamente abbiamo bisogno. Grazie per il consiglio! – emk

2

Non è assolutamente necessario l'intero SDK Basta scaricare la parte giusta, vedere MSDN per le scelte.

+0

Concordo sul fatto che * non * necessiti * del tutto, ma per molte persone capire la parte giusta è più costoso della semplice installazione di tutto questo. – snowcrash09

6

Nel caso in cui qualcuno si imbatta in questo post ed è curioso di conoscere i componenti minimi che possono essere installati per ottenere winhttp, l'installazione di Microsoft Windows Core SDK> Ambiente di costruzione> Ambiente di costruzione (x86 a 32 bit) ha funzionato per me.