@@ -121,10 +121,7 @@ private static void GetSystemProxy(ref INTERNET_PER_CONN_OPTION_LIST internetPer
121
121
internetPerConnOptionList . dwOptionCount = ( uint ) internetPerConnOptionListOptions . Length ;
122
122
internetPerConnOptionList . dwOptionError = 0 ;
123
123
124
- // query internet options
125
- bool result = InternetQueryOption ( IntPtr . Zero , INTERNET_OPTION . INTERNET_OPTION_PER_CONNECTION_OPTION , ref internetPerConnOptionList , ref internetPerConnOptionListSize ) ;
126
-
127
- if ( ! result ) {
124
+ if ( ! InternetQueryOption ( IntPtr . Zero , INTERNET_OPTION . INTERNET_OPTION_PER_CONNECTION_OPTION , ref internetPerConnOptionList , ref internetPerConnOptionListSize ) ) {
128
125
throw new FlashpointProxyException ( "Could not query the Internet Options." ) ;
129
126
}
130
127
} catch {
@@ -134,134 +131,133 @@ private static void GetSystemProxy(ref INTERNET_PER_CONN_OPTION_LIST internetPer
134
131
}
135
132
136
133
public static void Enable ( string proxyServer ) {
137
- IntPtr internetHandle = IntPtr . Zero ;
138
- internetHandle = InternetOpen ( AGENT , INTERNET_OPEN_TYPE_DIRECT , IntPtr . Zero , IntPtr . Zero , 0 ) ;
134
+ IntPtr internetHandle = InternetOpen ( AGENT , INTERNET_OPEN_TYPE_DIRECT , IntPtr . Zero , IntPtr . Zero , 0 ) ;
139
135
140
136
if ( internetHandle == IntPtr . Zero ) {
141
137
throw new FlashpointProxyException ( "Could not open the Internet Handle." ) ;
142
138
}
143
139
144
- // initialize a INTERNET_PER_CONN_OPTION_LIST instance
145
- INTERNET_PER_CONN_OPTION_LIST internetPerConnOptionList = new INTERNET_PER_CONN_OPTION_LIST ( ) ;
146
- uint internetPerConnOptionListSize = ( uint ) Marshal . SizeOf ( internetPerConnOptionList ) ;
140
+ try {
141
+ // initialize a INTERNET_PER_CONN_OPTION_LIST instance
142
+ INTERNET_PER_CONN_OPTION_LIST internetPerConnOptionList = new INTERNET_PER_CONN_OPTION_LIST ( ) ;
143
+ uint internetPerConnOptionListSize = ( uint ) Marshal . SizeOf ( internetPerConnOptionList ) ;
147
144
148
- // create two options
149
- INTERNET_PER_CONN_OPTION [ ] internetPerConnOptionListOptions = new INTERNET_PER_CONN_OPTION [ 2 ] ;
145
+ // create two options
146
+ INTERNET_PER_CONN_OPTION [ ] internetPerConnOptionListOptions = new INTERNET_PER_CONN_OPTION [ 2 ] ;
150
147
151
- // set PROXY flags
152
- internetPerConnOptionListOptions [ 0 ] = new INTERNET_PER_CONN_OPTION {
153
- dwOption = INTERNET_PER_CONN_OPTION_OPTION . INTERNET_PER_CONN_FLAGS
154
- } ;
148
+ // set PROXY flags
149
+ internetPerConnOptionListOptions [ 0 ] = new INTERNET_PER_CONN_OPTION {
150
+ dwOption = INTERNET_PER_CONN_OPTION_OPTION . INTERNET_PER_CONN_FLAGS
151
+ } ;
155
152
156
- internetPerConnOptionListOptions [ 0 ] . Value . dwValue = ( uint ) INTERNET_PER_CONN_FLAGS_VALUEFlags . PROXY_TYPE_PROXY ;
157
-
158
- // set proxy name
159
- internetPerConnOptionListOptions [ 1 ] = new INTERNET_PER_CONN_OPTION {
160
- dwOption = INTERNET_PER_CONN_OPTION_OPTION . INTERNET_PER_CONN_PROXY_SERVER
161
- } ;
153
+ internetPerConnOptionListOptions [ 0 ] . Value . dwValue = ( uint ) INTERNET_PER_CONN_FLAGS_VALUEFlags . PROXY_TYPE_PROXY ;
162
154
163
- internetPerConnOptionListOptions [ 1 ] . Value . pszValue = Marshal . StringToHGlobalAnsi ( proxyServer ) ;
155
+ // set proxy name
156
+ internetPerConnOptionListOptions [ 1 ] = new INTERNET_PER_CONN_OPTION {
157
+ dwOption = INTERNET_PER_CONN_OPTION_OPTION . INTERNET_PER_CONN_PROXY_SERVER
158
+ } ;
164
159
165
- // allocate memory for the INTERNET_PER_CONN_OPTION_LIST Options
166
- internetPerConnOptionList . pOptions = Marshal . AllocCoTaskMem ( Marshal . SizeOf ( internetPerConnOptionListOptions [ 0 ] ) + Marshal . SizeOf ( internetPerConnOptionListOptions [ 1 ] ) ) ;
160
+ internetPerConnOptionListOptions [ 1 ] . Value . pszValue = Marshal . StringToHGlobalAnsi ( proxyServer ) ;
167
161
168
- try {
169
- IntPtr internetPerConnOptionListOptionPointer = internetPerConnOptionList . pOptions ;
162
+ // allocate memory for the INTERNET_PER_CONN_OPTION_LIST Options
163
+ internetPerConnOptionList . pOptions = Marshal . AllocCoTaskMem ( Marshal . SizeOf ( internetPerConnOptionListOptions [ 0 ] ) + Marshal . SizeOf ( internetPerConnOptionListOptions [ 1 ] ) ) ;
170
164
171
- // marshal data from a managed object to unmanaged memory
172
- for ( int i = 0 ; i < internetPerConnOptionListOptions . Length ; i ++ ) {
173
- Marshal . StructureToPtr ( internetPerConnOptionListOptions [ i ] , internetPerConnOptionListOptionPointer , false ) ;
174
- internetPerConnOptionListOptionPointer = ( IntPtr ) ( ( long ) internetPerConnOptionListOptionPointer + Marshal . SizeOf ( internetPerConnOptionListOptions [ i ] ) ) ;
175
- }
165
+ try {
166
+ IntPtr internetPerConnOptionListOptionPointer = internetPerConnOptionList . pOptions ;
176
167
177
- // fill the internetPerConnOptionList structure
178
- internetPerConnOptionList . dwSize = ( uint ) Marshal . SizeOf ( internetPerConnOptionList ) ;
168
+ // marshal data from a managed object to unmanaged memory
169
+ for ( int i = 0 ; i < internetPerConnOptionListOptions . Length ; i ++ ) {
170
+ Marshal . StructureToPtr ( internetPerConnOptionListOptions [ i ] , internetPerConnOptionListOptionPointer , false ) ;
171
+ internetPerConnOptionListOptionPointer = ( IntPtr ) ( ( long ) internetPerConnOptionListOptionPointer + Marshal . SizeOf ( internetPerConnOptionListOptions [ i ] ) ) ;
172
+ }
179
173
180
- // NULL == LAN, otherwise connectoid name
181
- internetPerConnOptionList . pszConnection = IntPtr . Zero ;
174
+ // fill the internetPerConnOptionList structure
175
+ internetPerConnOptionList . dwSize = ( uint ) Marshal . SizeOf ( internetPerConnOptionList ) ;
182
176
183
- // set two options
184
- internetPerConnOptionList . dwOptionCount = ( uint ) internetPerConnOptionListOptions . Length ;
185
- internetPerConnOptionList . dwOptionError = 0 ;
177
+ // NULL == LAN, otherwise connectoid name
178
+ internetPerConnOptionList . pszConnection = IntPtr . Zero ;
186
179
187
- // allocate memory for the INTERNET_PER_CONN_OPTION_LIST
188
- IntPtr internetPerConnOptionListPointer = Marshal . AllocCoTaskMem ( ( int ) internetPerConnOptionListSize ) ;
180
+ // set two options
181
+ internetPerConnOptionList . dwOptionCount = ( uint ) internetPerConnOptionListOptions . Length ;
182
+ internetPerConnOptionList . dwOptionError = 0 ;
189
183
190
- try {
191
- // marshal data from a managed object to unmanaged memory
192
- Marshal . StructureToPtr ( internetPerConnOptionList , internetPerConnOptionListPointer , true ) ;
184
+ // allocate memory for the INTERNET_PER_CONN_OPTION_LIST
185
+ IntPtr internetPerConnOptionListPointer = Marshal . AllocCoTaskMem ( ( int ) internetPerConnOptionListSize ) ;
193
186
194
- // set the options on the connection
195
- bool result = InternetSetOption ( internetHandle , INTERNET_OPTION . INTERNET_OPTION_PER_CONNECTION_OPTION , internetPerConnOptionListPointer , internetPerConnOptionListSize ) ;
196
-
197
- if ( ! InternetCloseHandle ( internetHandle ) ) {
198
- throw new FlashpointProxyException ( "Could not close the Internet Handle." ) ;
199
- }
187
+ try {
188
+ // marshal data from a managed object to unmanaged memory
189
+ Marshal . StructureToPtr ( internetPerConnOptionList , internetPerConnOptionListPointer , true ) ;
200
190
201
- // throw an exception if this operation failed
202
- if ( ! result ) {
203
- throw new FlashpointProxyException ( "Could not set the Internet Options." ) ;
191
+ // set the options on the connection
192
+ if ( ! InternetSetOption ( internetHandle , INTERNET_OPTION . INTERNET_OPTION_PER_CONNECTION_OPTION , internetPerConnOptionListPointer , internetPerConnOptionListSize ) ) {
193
+ throw new FlashpointProxyException ( "Could not set the Internet Options." ) ;
194
+ }
195
+ } finally {
196
+ // free the allocated memory
197
+ Marshal . FreeCoTaskMem ( internetPerConnOptionListPointer ) ;
204
198
}
205
199
} finally {
206
- // free the allocated memory
207
- Marshal . FreeCoTaskMem ( internetPerConnOptionListPointer ) ;
200
+ Marshal . FreeCoTaskMem ( internetPerConnOptionList . pOptions ) ;
208
201
}
209
202
} finally {
210
- Marshal . FreeCoTaskMem ( internetPerConnOptionList . pOptions ) ;
203
+ if ( ! InternetCloseHandle ( internetHandle ) ) {
204
+ throw new FlashpointProxyException ( "Could not close the Internet Handle." ) ;
205
+ }
211
206
}
212
207
}
213
208
214
209
public static void Disable ( ) {
215
- IntPtr internetHandle = IntPtr . Zero ;
216
- internetHandle = InternetOpen ( AGENT , INTERNET_OPEN_TYPE_DIRECT , IntPtr . Zero , IntPtr . Zero , 0 ) ;
210
+ IntPtr internetHandle = InternetOpen ( AGENT , INTERNET_OPEN_TYPE_DIRECT , IntPtr . Zero , IntPtr . Zero , 0 ) ;
217
211
218
212
if ( internetHandle == IntPtr . Zero ) {
219
213
throw new FlashpointProxyException ( "Could not open the Internet Handle." ) ;
220
214
}
221
215
222
- // initialize a INTERNET_PER_CONN_OPTION_LIST instance
223
- INTERNET_PER_CONN_OPTION_LIST internetPerConnOptionList = new INTERNET_PER_CONN_OPTION_LIST ( ) ;
224
- uint internetPerConnOptionListSize = ( uint ) Marshal . SizeOf ( internetPerConnOptionList ) ;
225
-
226
- // create two options
227
- INTERNET_PER_CONN_OPTION [ ] internetPerConnOptionListOptions = new INTERNET_PER_CONN_OPTION [ 2 ] ;
228
-
229
- GetSystemProxy ( ref internetPerConnOptionList , ref internetPerConnOptionListOptions ) ;
230
-
231
216
try {
232
- // allocate memory
233
- IntPtr internetPerConnOptionListPointer = Marshal . AllocCoTaskMem ( ( int ) internetPerConnOptionListSize ) ;
234
-
235
- try {
236
- // convert structure to IntPtr
237
- Marshal . StructureToPtr ( internetPerConnOptionList , internetPerConnOptionListPointer , true ) ;
217
+ // initialize a INTERNET_PER_CONN_OPTION_LIST instance
218
+ INTERNET_PER_CONN_OPTION_LIST internetPerConnOptionList = new INTERNET_PER_CONN_OPTION_LIST ( ) ;
219
+ uint internetPerConnOptionListSize = ( uint ) Marshal . SizeOf ( internetPerConnOptionList ) ;
238
220
239
- // set internet options
240
- bool result = InternetSetOption ( internetHandle , INTERNET_OPTION . INTERNET_OPTION_PER_CONNECTION_OPTION , internetPerConnOptionListPointer , internetPerConnOptionListSize ) ;
221
+ // create two options
222
+ INTERNET_PER_CONN_OPTION [ ] internetPerConnOptionListOptions = new INTERNET_PER_CONN_OPTION [ 2 ] ;
241
223
242
- // notify the system that the registry settings have been changed and cause
243
- // the proxy data to be reread from the registry for a handle
244
- if ( result ) {
245
- result = InternetSetOption ( internetHandle , INTERNET_OPTION . INTERNET_OPTION_SETTINGS_CHANGED , IntPtr . Zero , 0 ) ;
246
- }
247
-
248
- if ( result ) {
249
- result = InternetSetOption ( internetHandle , INTERNET_OPTION . INTERNET_OPTION_REFRESH , IntPtr . Zero , 0 ) ;
250
- }
224
+ GetSystemProxy ( ref internetPerConnOptionList , ref internetPerConnOptionListOptions ) ;
251
225
252
- if ( ! InternetCloseHandle ( internetHandle ) ) {
253
- throw new FlashpointProxyException ( "Could not close the Internet Handle." ) ;
254
- }
255
-
256
- if ( ! result ) {
257
- throw new FlashpointProxyException ( "Could not set the Internet Options." ) ;
226
+ try {
227
+ // allocate memory
228
+ IntPtr internetPerConnOptionListPointer = Marshal . AllocCoTaskMem ( ( int ) internetPerConnOptionListSize ) ;
229
+
230
+ try {
231
+ // convert structure to IntPtr
232
+ Marshal . StructureToPtr ( internetPerConnOptionList , internetPerConnOptionListPointer , true ) ;
233
+
234
+ // set internet options
235
+ bool result = InternetSetOption ( internetHandle , INTERNET_OPTION . INTERNET_OPTION_PER_CONNECTION_OPTION , internetPerConnOptionListPointer , internetPerConnOptionListSize ) ;
236
+
237
+ // notify the system that the registry settings have been changed and cause
238
+ // the proxy data to be reread from the registry for a handle
239
+ if ( result ) {
240
+ result = InternetSetOption ( internetHandle , INTERNET_OPTION . INTERNET_OPTION_SETTINGS_CHANGED , IntPtr . Zero , 0 ) ;
241
+
242
+ if ( result ) {
243
+ result = InternetSetOption ( internetHandle , INTERNET_OPTION . INTERNET_OPTION_REFRESH , IntPtr . Zero , 0 ) ;
244
+ }
245
+ }
246
+
247
+ if ( ! result ) {
248
+ throw new FlashpointProxyException ( "Could not set the Internet Options." ) ;
249
+ }
250
+ } finally {
251
+ // free the allocated memory
252
+ Marshal . FreeCoTaskMem ( internetPerConnOptionListPointer ) ;
258
253
}
259
254
} finally {
260
- // free the allocated memory
261
- Marshal . FreeCoTaskMem ( internetPerConnOptionListPointer ) ;
255
+ Marshal . FreeCoTaskMem ( internetPerConnOptionList . pOptions ) ;
262
256
}
263
257
} finally {
264
- Marshal . FreeCoTaskMem ( internetPerConnOptionList . pOptions ) ;
258
+ if ( ! InternetCloseHandle ( internetHandle ) ) {
259
+ throw new FlashpointProxyException ( "Could not close the Internet Handle." ) ;
260
+ }
265
261
}
266
262
}
267
263
}
0 commit comments