@
Airtrox:
Zur Anzeige von Webseiten in eigenen Anwendungen eignet sich meines Wissens nach nur das Internet Explorer ActiveX. Außer Du nimmt einen Open Source-Browser und schreibst den um...
Nun muß das aber nicht unbedingt die Komponente TWebBrowser sein, sondern könnte auch
TEmbeddedWB sein, der ebenfalls auf dem IE aussetzt. Dort läßt sich der Proxy bequem einstellen.
Für
TWebBrowser geht's natürlich auch, wenn auch etwas aufwändiger:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71:
| function SetProxy(Server: String): Boolean; type INTERNET_PER_CONN_OPTION = record dwOption: DWORD; Value: record case Integer of 1: (dwValue: DWORD); 2: (pszValue: {$IFDEF DELPHI2009_UP}PWideChar{$ELSE}PAnsiChar{$ENDIF}); 3: (ftValue: TFileTime); end; end; LPINTERNET_PER_CONN_OPTION = ^INTERNET_PER_CONN_OPTION; INTERNET_PER_CONN_OPTION_LIST = record dwSize: DWORD; pszConnection: LPTSTR; dwOptionCount: DWORD; dwOptionError: DWORD; pOptions: LPINTERNET_PER_CONN_OPTION; end; LPINTERNET_PER_CONN_OPTION_LIST = ^INTERNET_PER_CONN_OPTION_LIST; const INTERNET_PER_CONN_FLAGS = 1; INTERNET_PER_CONN_PROXY_SERVER = 2; INTERNET_PER_CONN_PROXY_BYPASS = 3; INTERNET_PER_CONN_AUTOCONFIG_URL = 4; INTERNET_PER_CONN_AUTODISCOVERY_FLAGS = 5; PROXY_TYPE_DIRECT = $00000001; PROXY_TYPE_PROXY = $00000002; PROXY_TYPE_AUTO_PROXY_URL = $00000004; PROXY_TYPE_AUTO_DETECT = $00000008; INTERNET_OPTION_REFRESH = 37; INTERNET_OPTION_PER_CONNECTION_OPTION = 75; INTERNET_OPTION_SETTINGS_CHANGED = 39; var OptionsList: INTERNET_PER_CONN_OPTION_LIST; BufSize: DWORD; HInternet: Pointer; Agent: String; begin Result:=false; BufSize:=SizeOf(OptionsList); OptionsList.dwSize:=BufSize; OptionsList.pszConnection:=nil; OptionsList.dwOptionCount:=3; OptionsList.pOptions:=AllocMem(3*SizeOf(INTERNET_PER_CONN_OPTION)); try if not assigned(OptionsList.pOptions) then Exit; OptionsList.pOptions^.dwOption:=INTERNET_PER_CONN_FLAGS; OptionsList.pOptions^.Value.dwValue:=PROXY_TYPE_DIRECT or PROXY_TYPE_PROXY; inc(OptionsList.pOptions); OptionsList.pOptions^.dwOption:=INTERNET_PER_CONN_PROXY_SERVER; OptionsList.pOptions^.Value.pszValue:=PChar(Server); inc(OptionsList.pOptions); OptionsList.pOptions^.dwOption:=INTERNET_PER_CONN_PROXY_BYPASS; OptionsList.pOptions^.Value.pszValue:='local'; dec(OptionsList.pOptions,2); Agent:=ExtractFileName(Application.ExeName); hInternet:=InternetOpen({$IFDEF DELPHI2009_UP}PWideChar{$ELSE}PAnsiChar{$ENDIF} (Agent),INTERNET_OPEN_TYPE_DIRECT,nil,nil,0); try Result:=InternetSetOption(hInternet,INTERNET_OPTION_PER_CONNECTION_OPTION, @OptionsList,BufSize); InternetSetOption(hInternet,INTERNET_OPTION_REFRESH,nil,0); finally InternetCloseHandle(hInternet); end; finally FreeMem(OptionsList.pOptions); end; end; |
Siehe dazu auch die Diskussion in der
Delphi-Praxis.
Noch eine Frage bezüglich der von Dir abgelehnten Indy-Komponenten: Die kapseln doch nur die verschiedensten Übertragungsprotokolle, aber nicht die Darstellung der Daten!?
Mit
TIdHTTPProxy wird übrigens ein Proxy-Server mitgeliefert... Zu den Problemen damit siehe Link zur Delphi-Praxis.