Autor Beitrag
MKSlayer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62

SUse / WinXp / Win 2003 server
Turbo Delphi / Borland Builder 4
BeitragVerfasst: Do 05.06.08 16:13 
wie kann man denn bei einen TwebBrowser den Proxy einstellen?

Habe schon überall gelehsen da steht nur da des der angeblich die einstellung von Internet Explorer nimmt..
aber leider macht der das nicht bei mir

Könnt ihr mir weiterhelfen oder weingstens mir nen Tritt in die richtige richtung geben?

Schon mal Danke im Voraus

Mfg MKSlayer

Moderiert von user profile iconNarses: Titel geändert.
Airtrox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109


Delphi 7
BeitragVerfasst: Do 24.03.11 23:32 
Hallo,
tut mir leid, dass ich diesen Thread rauskrame, aber ich habe die selbe Frage:

Ich will über einen Proxy aus einer Liste die Verbindung zu einer Seite aufbauen. Dies sollte am besten ohne weiteres im programm machbar sein. Falls es bessere Alternativen zum TWebBrowser gibt (außer Indys, denn die Seite soll offen bleiben, damit man darauf interagieren kann), so bin ich dafür offen.

lg
Thom
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 70
Erhaltene Danke: 5


Delphi 10 Seattle Prof.
BeitragVerfasst: Sa 26.03.11 21:31 
@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... :wink:

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:

ausblenden volle Höhe Delphi-Quelltext
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; //Server z.B. '127.0.0.1:8080' oder ''
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//nil -> LAN, sonst Verbindungsname
  OptionsList.dwOptionCount:=3//3 Optionen werden gesetzt
  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 //Optionen setzen
      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); //Speicher freigeben
  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!? :gruebel:

Mit TIdHTTPProxy wird übrigens ein Proxy-Server mitgeliefert... Zu den Problemen damit siehe Link zur Delphi-Praxis.