Главная страница
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.021 c
3-2790
me2
2003-05-14 14:20
2003.06.02
Программное удаление пользователя


1-2878
User
2003-05-22 12:43
2003.06.02
Быстрое копирование блоков памяти


3-2744
Studentik
2003-05-12 10:43
2003.06.02
InterBase и WebModule вместе работать не могут...


1-2972
Kreo
2003-05-19 20:27
2003.06.02
Fast Report & StringGrid Как???


11-2835
Jazzy$
2002-09-05 20:15
2003.06.02
Как раскрасить ListView?