Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Einstellungen des IE setzen (https://www.delphipraxis.net/47719-einstellungen-des-ie-setzen.html)

DirkG 15. Jun 2005 11:17


Einstellungen des IE setzen
 
Hallo zusammen

Wie ich die Einstellungen des IE lese, habe ich mehr oder wenige rausgefunden. :gruebel:
Aber hat man ein Problem gelöst, tauchen gleich wieder 100 neue auf. Laut MS soll das zurückschreiben der Einstellungen mit folgender Funktion erfolgen:

Delphi-Quellcode:

var ProxyInfo: PInternetProxyInfo;
    Len: LongWord;

  Len:= MAX_CACHE_ENTRY_INFO_SIZE; GetMem(ProxyInfo, Len);
  // Eintragen der Proxy Einstellungen (http, ftp etc.)
  SetProxyInfoString(ProxyInfo);
  try
    InternetSetOption(nil, INTERNET_OPTION_PROXY, ProxyInfo, Len)
  finally
    FreeMem(ProxyInfo);
  end;
Wenn ich diese aufrufe, bekomme ich immer den Fehler 12010 zurückgemeldet. Was mache ich falsch??? :wall:

toms 18. Jun 2005 08:52

Re: Einstellungen des IE setzen
 
Hallo,
Was genau macht die SetProxyInfoString() oder wo ist die Funktion deklariert?

DirkG 20. Jun 2005 09:01

Re: Einstellungen des IE setzen
 
Hallo!
Sorry für die späte Reaktion, war aber drei Tage offline. :oops:

Ich glaube ich muss es mal genauer erläutern. Mein Problem ist bei der Entwicklung einer Komponente aufgetreten, die mir alle Eigenschaften eines PC für die Internet Verbindungen bündeln soll. Dazu gibt es den Ansatz einer Basisklasse, die die Einstellungen aufnimmt und von Unterklassen für die jeweiligen Browser-Typen. Bei der Entwicklung der IE Komponente, trat dann mein Problem auf. Doch nun zu der Frage. :coder:
Die Funktion SetProxyInfoString() ist von mir definiert worden um die Einstellungen zusammenzustellen die die Funktion InternetSetOption() in der wininet.dll benötigt. Laut der MSDN-Seite zu InternetQuerryOption soll InternetSetOption mit den selben Parametern versorgt werden, wie die Funktion InternetQuery Option, um das zurückschreiben der Einstellungen vorzunehmen.

:gruebel: Der Quellcode könnte wahrscheinlich so aussehen :
Delphi-Quellcode:

uses WinInet;

procedure SetProxyInfoString(ProxyInfo:PInternetProxyInfo);
begin
  // nur mal als Beispiel
  ProxyInfo:= 'http:\\192.168.20.100:8080';
end;


function SetInternetSettings: boolean
var ProxyInfo: PInternetProxyInfo;
    Len: LongWord;
begin
  Len:= MAX_CACHE_ENTRY_INFO_SIZE; GetMem(ProxyInfo, Len);
  //-- Eintragen der Proxy Einstellungen (http, ftp etc.)
  SetProxyInfoString(ProxyInfo);
  try
    //-- Das Problem ist wahrscheinlich in der ProxyInfo Variablen zu suchen
    Result:= InternetSetOption(nil, INTERNET_OPTION_PROXY, ProxyInfo, Len)
  finally
    FreeMem(ProxyInfo);
  end;
Doch nun schlägt der Bug voll zu und gibt besagte Fehlermeldung zurück.
Was ist das Problem? :wall:

toms 21. Jun 2005 05:28

Re: Einstellungen des IE setzen
 
Schau sonst mal hier: http://www.delphipraxis.net/internal...ernetsetoption

DirkG 21. Jun 2005 13:50

Re: Einstellungen des IE setzen
 
@toms
Ich habe nach gesehen und folgendes probiert. :coder2:

Hier mal der Code:

Delphi-Quellcode:

function WriteSystemSettings: boolean;
var ProxyInfo: PInternetProxyInfo;
    hInt    : HINTERNET;
begin
  //-- Variablen initialisieren -----------------------------------------------
  Result  := true; ProxyInfo:= New(PInternetProxyInfo);
  hInt    := InternetOpen(PChar(Application.Title), INTERNET_OPEN_TYPE_DIRECT,
                           nil, nil, INTERNET_FLAG_OFFLINE);
  //-- Versuche die Einstellungen zu schreiben --------------------------------
  try
    ProxyInfo.dwAccessType  := INTERNET_OPEN_TYPE_PROXY;
    ProxyInfo.lpszProxy     := PChar('192.168.20.100:8080');
    ProxyInfo.lpszProxyBypass:= PChar('<local>');
    if not InternetSetOption(hInt, INTERNET_OPTION_PROXY, ProxyInfo, SizeOf(ProxyInfo^))
      then Result:= GetError;
  finally
    FreeMem(ProxyInfo);
  end;
end;
Der Fehler ist weg. Leider habe ich keine Änderung der Einstellungen festgestellt, egal ob eine Instance des Browser aktiv ist oder nicht. :(

Folglich muss da irgendwo noch ein Bug sitzen. :wall:
Wer weiss da weiter?

Delphi-Freak 27. Jun 2005 18:16

Re: Einstellungen des IE setzen
 
Zitat:

Zitat von DirkG
Delphi-Quellcode:
//...
procedure SetProxyInfoString(ProxyInfo:PInternetProxyInfo);
begin
  // nur mal als Beispiel
  ProxyInfo:= 'http:\\192.168.20.100:8080';
end;
//...

Gehört da nicht ein »var« vor ProxyInfo, also dann so:
Delphi-Quellcode:
//...
procedure SetProxyInfoString(var ProxyInfo:PInternetProxyInfo);
begin
  // nur mal als Beispiel
  ProxyInfo:= 'http:\\192.168.20.100:8080';
end;
//...
Sonst wird meines Wissens die Variable nur für die eine Procedure gesetzt, aber nicht an die aufrufende Procedure »zurückgeschickt«. Mich interessiert das Proxyeinstellungen-Setzen auch, möchte ich jetzt gleich ausprobieren.

LG, Delphi-Freak

Edit: Achso, diese Procedure wird ja im letzten Versuch gar nicht mehr verwendet :oops:

Edit2:
Hab jetzt ein bisschen herumprobiert mit dem Setzen und Auslesen und bin zu dem Schluss gekommen, dass die Einstellungen nur für das momentane Programm gesetzt werden. Sie sind nur so lange »geändert« (aber auch nur in diesem Programm und auch keiner anderen Instanz), bis das Proggie beendet wird. Also irgenwie dürfte das nicht wie gewollt funktionieren :(
LG, ich


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz