AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

UserAgent von TWebBrowser ändern

Ein Thema von bixi400 · begonnen am 10. Aug 2004 · letzter Beitrag vom 11. Mai 2008
Antwort Antwort
Benutzerbild von bixi400
bixi400

Registriert seit: 19. Mai 2003
179 Beiträge
 
Turbo Delphi für Win32
 
#1

UserAgent von TWebBrowser ändern

  Alt 10. Aug 2004, 07:24
Hi!

Kann man mit Delphi den UserAgent von TWebBrowser ändern,
wenn ja wie?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: UserAgent von TWebBrowser ändern

  Alt 26. Jun 2005, 07:54
Hallo,

Verwende stattdessen den TEmbeddedweb.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von ptown67
ptown67

Registriert seit: 31. Jan 2006
Ort: Keine Ergebnisse gefunden
60 Beiträge
 
Delphi 7 Personal
 
#3

Re: UserAgent von TWebBrowser ändern

  Alt 23. Feb 2008, 22:39
Servus!

Also ich verwende ja für ein Projekt den EmbeddedWebBrowser. Aber ich konnte dort den kompletten Sting für UserAgent leider nicht ändern.

Ist es etwa doch möglich? Kann mir evtl. jemand ein Beispiel geben?

Viele Grüße
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#4

Re: UserAgent von TWebBrowser ändern

  Alt 24. Feb 2008, 02:07
die Euromind Server haben schon seit paar Jahren den Download nicht mehr.
neue Location: http://www.bsalsa.com/
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: UserAgent von TWebBrowser ändern

  Alt 24. Feb 2008, 07:35
So setzt der TEmbeddedWeb den Useragent. Es wird also noch "Eigenwerbung" angehängt.

Delphi-Quellcode:
procedure SetUserAgent(var UserAgent: string);
var
  reg: TRegistry;
begin
  Reg := TRegistry.Create;
  if UserAgent <> EWB_INFO then
    UserAgent := UserAgent + EWB_INFO;
  with Reg do
  begin
    RootKey := HKEY_CURRENT_USER;
    try
      if OpenKey('\Software\Microsoft\Windows\CurrentVersion\Internet Settings\User Agent\Post Platform', True) then
        WriteString(UserAgent, '');
    finally
      CloseKey;
      Free;
    end;
  end;
end;
Eine andere Möglichkeitvon hier:


Zitat:
Du musst zuerst deinen Browser Komponent
erweitern. Hier ist der Code *als Hinweis*. Und DISPID_AMBIENT_USERAGENT
ist in SHDocVW.h (Windows SDK) definiert.
Delphi-Quellcode:
TUserAgentBrowser = class(TWebBrowser, IDispatch)
protected
   function GetTypeInfoCount(out Count: Integer): HRESULT; stdcall;
   function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo):
HRESULT; stdcall;
   function GetIDsOfNames(const IID: TGUID; Names: Pointer; NameCount,
LocaleID: Integer; DispIDs: Pointer): HRESULT; stdcall;
   function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer):
HRESULT; stdcall;
end;


function TUserAgentBrowser.GetTypeInfoCount(out Count: Integer): HRESULT;
begin
   Result := E_NOTIMPL;
   Count := 0;
end;


function TUserAgentBrowser.GetTypeInfo(Index, LocaleID: Integer; out
TypeInfo): HRESULT;
begin
   Result := E_NOTIMPL;
   Pointer(TypeInfo) := nil;
end;


function TUserAgentBrowser.GetIDsOfNames(const IID: TGUID; Names:
Pointer; NameCount, LocaleID: Integer; DispIDs: Pointer): HRESULT;
begin
   PDispIDList(DispIDs)[0] := DISPID_UNKNOWN;
   Result := DISP_E_UNKNOWNNAME;
end;


function TUserAgentBrowser.Invoke(DispID: Integer; const IID: TGUID;
LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo,
ArgErr: Pointer): HRESULT;
begin
   if (Flags and DISPATCH_PROPERTYGET <> 0) and (VarResult <> nil) then
     case DispId of
      -5513{DISPID_AMBIENT_USERAGENT}:
       begin
         POleVariant(VarResult)^ := 'Owner User Agent' + #13#10;
         Result := S_OK;
         Exit;
       end;
     end;
   Result := inherited Invoke(DispID, IID, LocaleID, Flags, Params,
VarResult, ExcepInfo, ArgErr);
end;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#6

Re: UserAgent von TWebBrowser ändern

  Alt 26. Feb 2008, 18:07
Konntest du dies so umsetzen?
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von ptown67
ptown67

Registriert seit: 31. Jan 2006
Ort: Keine Ergebnisse gefunden
60 Beiträge
 
Delphi 7 Personal
 
#7

Re: UserAgent von TWebBrowser ändern

  Alt 27. Feb 2008, 20:12
hi toms!

danke für deine antwort.

das erste beispiel war mir bereits bekannt, bzw. ich wusste, dass man die werte in der registry anpassen kann. aber nach programmende ist ja dann auch mein wert für den nativen IE gesetzt. am besten vorher den eigentlichen wert irgendwo zwischenspeichern und dann bei programmende wieder setzen.

dein zweites beispiel, habe ich noch nicht so ganz verstanden, werde es aber mal testen...

thx & gruß
ptown67 @ www.se-world.info
  Mit Zitat antworten Zitat
s4nity

Registriert seit: 30. Sep 2007
1 Beiträge
 
#8

Re: UserAgent von TWebBrowser ändern

  Alt 5. Mai 2008, 23:37
Hi,
ich habe dazu eine Frage
wo genau muss der code hin ?
muss ich eine neue twebbrowser komponente erstellen ? oder reicht es wenn ich ihn in das aktuelle projekt einfüge ?

mfg
s4nity
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#9

Re: UserAgent von TWebBrowser ändern

  Alt 11. Mai 2008, 10:38
Zitat von s4nity:
Hi,
ich habe dazu eine Frage
wo genau muss der code hin ?
muss ich eine neue twebbrowser komponente erstellen ? oder reicht es wenn ich ihn in das aktuelle projekt einfüge ?

mfg
s4nity
Am besten erstellst du eine neue Komponente.
In der Eigeschaft UserAgent kannst du dann im OI deinen UserAgent eingeben.

Delphi-Quellcode:
unit UserAgentBrowser;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, OleCtrls, SHDocVw;

const
  DISPID_AMBIENT_USERAGENT = - 5513;
  
type
  TUserAgentBrowser = class(SHDocVw.TWebbrowser, IDispatch)
  private
    { Private declarations }
    FUserAgent: string;
    function GetUserAgent: string;
    procedure SetUserAgent(const Value: string);
    function GetIEUserAgent: string;
  protected
    function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
      Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer):
      HRESULT; stdcall;
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published declarations }
    property UserAgent: string read GetUserAgent write SetUserAgent;
  end;

procedure Register;

implementation

uses
  Registry, ActiveX;

procedure Register;
begin
  RegisterComponents('Internet', [TUserAgentBrowser]);
end;

constructor TUserAgentBrowser.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FUserAgent := '';
end;

destructor TUserAgentBrowser.Destroy;
begin
  inherited Destroy;
end;

function TUserAgentBrowser.Invoke(DispID: Integer; const IID: TGUID;
  LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo,
  ArgErr: Pointer): HRESULT;
begin
  if (Flags and DISPATCH_PROPERTYGET <> 0) and (VarResult <> nil) then
    case DispId of
      DISPID_AMBIENT_USERAGENT:
        begin
          if FUserAgent <> 'then
          begin
            POleVariant(VarResult)^ := FUserAgent + #13#10;
           // POleVariant(VarResult)^ := GetIEUserAgent + '; ' + FUserAgent+ #13#10 ;
            Result := S_OK;
            Exit;
          end;
        end;
    end;
  Result := inherited Invoke(DispID, IID, LocaleID, Flags, Params,
    VarResult, ExcepInfo, ArgErr);
end;

function TUserAgentBrowser.GetIEUserAgent: string;
var
  reg: TRegistry;
begin
  Result := '';
  Reg := TRegistry.Create;
  with Reg do
  begin
    RootKey := HKEY_CURRENT_USER;
    try
      if OpenKey('\Software\Microsoft\Windows\CurrentVersion\Internet Settings\User Agent\Post Platform', True) then
        Result := ReadString(UserAgent);
    finally
      CloseKey;
      Free;
    end;
  end;
end;

procedure TUserAgentBrowser.SetUserAgent(const Value: string);
  var
  Control: IOleControl;
begin
  FUserAgent := Value;
  // Weiß nicht ganz genau, ob der folgende Aufruf nötig ist:
  if DefaultInterface.QueryInterface(IOleControl, Control) = 0 then
    Control.OnAmbientPropertyChange(DISPID_AMBIENT_USERAGENT);
end;

function TUserAgentBrowser.GetUserAgent: string;
begin
  Result := FUserAgent;
end;

end.
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz