Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.02;
Скачать: CL | DM;

Вниз

MS Internet Explorer User-Agent   Найти похожие ветки 

 
ga3 ©   (2003-05-13 00:17) [0]

вопрос на засыпку: ребята, подскажите плиз, как в виндах можно сменить версию IE, например у меня стоит ИЕ5.5 а я хочу чтобы сервер думал что у меня стоит ИЕ6.0? такая вот проблемка


 
ga3 ©   (2003-05-13 00:20) [1]

а еще лучше так: у меня на форме лежит TWebBrowser, я хочу чтобы при навигации можно было менять это самый юзер-агент. вот так вот:-) помогите плиз, MSDN молчит на эту тему как рыба об лед. если можно примерчик.


 
ga3 ©   (2003-05-14 16:41) [2]

ну блин че никто так и не знает как эту напасть сделать?


 
Ihor Osov'yak ©   (2003-05-14 23:33) [3]

Два варианта:

1. http://www.euromind.com/iedelphi, property UserAgent, цитирую сюда:

procedure TEmbeddedWB.SetUserAgent;
var
reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey("\Software\Microsoft\Windows\CurrentVersion\Internet Settings\User Agent\Post Platform", True)
then Reg.WriteString(FUserAgent, "");
finally
Reg.CloseKey;
Reg.Free;
end;
end;


Не проверял, но людям верить надо...


2. Изменяем заголовок запроса, посылаемого на сервер..
Или на уровне APP (асинхр. настраевыемых протоколов - перехват и подмена), либо делаем запрос wininet функциями, а результат уже подпихиваем TWebBrowser...

Может еще можно поиграть на уровне BeforeNavigate2, см - Headers: OleVariant; - но до этого руки не доходили, поищи сам на гугле..




 
nikkie ©   (2003-05-15 01:21) [4]

вариант 3 - из MSDN (ID: Q183412, PRB: WebBrowser Control Clients Share Global Settings)

MSHTML will also ask for a new user agent via DISPID_AMBIENT_USERAGENT when navigating to clicked hyperlinks. This ambient property can be overridden, but it is not used when programmatically calling the Navigate method.

Приведенный пример там - исключительно на MFC, поэтому не очень помогает. Но для изменения "ambient property" плясать надо от метода Invoke. Ниже пример на дельфи, только для простоты я воспользовался TEmbeddedWB - там есть событие OnInvoke - не надо писать своего наследника от TWebBrowser.

К сожалению, этот метод работает только когда юзер сам кликает по ссылке. Для программной навигации надо видимо запихать User-Agent в параметр Headers (что-то типа того, что написано в закомментаренных строчках в FormCreate - вроде работает, но остальные поля, например HTTP_ACCEPT, коцаются; с этим надо еще поэкспериментировать).

uses
... ActiveX, EmbeddedWB, IEConst;

procedure TForm1.FormCreate(Sender: TObject);
var
Doc: Variant;
Headers: OleVariant;
begin
EmbeddedWB1.Navigate("about:blank");
Doc := EmbeddedWB1.DefaultInterface.Document;
Doc.write("<a href=" http://www.proxychecker.ru/browser.phtml">click me</a>");

// Headers := "User-Agent: Nu ochen hitryi browser"#13#10;
// EmbeddedWB1.Navigate(" http://www.proxychecker.ru/browser.phtml",
// EmptyParam, EmptyParam, EmptyParam, Headers);
end;

const
USER_AGENT: WideString = "takoi vot hitryi browser";

function TForm1.EmbeddedWB1Invoke(DispID: Integer; const IID: TGUID;
LocaleID: Integer; Flags: Word; var Params: tagDISPPARAMS; VarResult,
ExcepInfo, ArgErr: Pointer): HRESULT;
begin
if (Flags and DISPATCH_PROPERTYGET <> 0) and (VarResult <> nil) and
(DispId = DISPID_AMBIENT_USERAGENT) then
begin
PVariant(VarResult)^ := USER_AGENT;
Result := S_OK;
end else begin
Result := DISP_E_MEMBERNOTFOUND;
end;
end;



Страницы: 1 вся ветка

Текущий архив: 2003.06.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
1-2980
Станислав
2003-05-20 15:56
2003.06.02
Как открыть документ в соответствующей программе???


6-3027
Levova
2003-04-02 15:00
2003.06.02
TIdSMTP и TIdMessage...


14-3064
lia
2003-05-16 08:39
2003.06.02
Пример реализации SMTP, POP клиента на паскале...


4-3202
Пубертанец
2003-04-03 14:22
2003.06.02
Помогите разобраться с OpenFileMapping


14-3108
Vlad Oshin
2003-05-14 15:40
2003.06.02
Что я вижу в FAQ? :-о