Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

TWebBrowser and sessions

25 views
Skip to first unread message

Alexander Mandryk

unread,
Jul 21, 2005, 12:38:10 PM7/21/05
to
Здравствуйте!
Delphi 2005, TWebBrowser

Подскажите пожалуйста как решить данную проблему:
Захожу WebBrowser'ом в свой аккаунт на одном сайте (например на
workforwm.com) где создается сессия. Я хочу чтобы БЕЗ нажатия на ссылку
<выход> удалилась текущая сессия. Поскольку никаких свойств и методов по
этому поводу не нашел, решил что должно помочь удаление WebBrowser'а и его
повторное создание:

WebBrowser1.Free;
WebBrowser1 := TWebBrowser.Create(Form1);
TWinControl(WebBrowser1).Name := 'WebBrowser1';
TWinControl(WebBrowser1).Parent := Form1;
WebBrowser1.Align := alClient;

Но оказывается даже после удаления, сессия не закрывается :(
Очистка cookies и кеша не помогает :(
В обычном ИЕ для этого достаточно закрыть и заново открыть окно.

Заранее благодарю.

--
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru

Vitaliy Shmorgun

unread,
Jul 21, 2005, 11:39:35 PM7/21/05
to
Привет, Alexander!

21 Июл 05 20:38, Alexander Mandryk -> All:

AM> Подскажите пожалуйста как решить данную проблему:
AM> Захожу WebBrowser'ом в свой аккаунт на одном сайте (например на
AM> workforwm.com) где создается сессия.
ВОТ! Создается, хранится и управляется она на сервере.

AM> Я хочу чтобы БЕЗ нажатия на ссылку <выход> удалилась текущая сессия.
еще раз повторяю управляется она на сервере. Тебе програмист писавший сервреный
движок дал интерфейс упаравления этой сессией "ссылка <выход>".
Посмотри какая команда отправляется на сервер. Отправив ее на сервер из своего
WebBrouser1 закроеш сессию.
AM> Поскольку никаких свойств и методов по этому поводу не нашел,
Сессия управляется серверным скримптом (Читай: "чужой програмой"), вот и ищи
интерфейс управления этой програмой.
AM> решил что должно помочь удаление WebBrowser'а и его повторное
AM> создание:

AM> Hо оказывается даже после удаления, сессия не закрывается :(
Потому что ты ее незакрыл.
AM> Очистка cookies и кеша не помогает :(
Сессия хранится на сервере, в куках может хранится только идентификатор.
Hо если ты в своей програме не задействовал обработку кук, то сайт решил, что
они они у тебя отключены и тода ничего в куки непишет.

AM> В обычном ИЕ для этого достаточно закрыть и заново открыть окно.
Он ее незакрывает, он просто "теряет" номер своей сессии.
Правильно указав идентификатор сесии ты можеш опять к ней подключится.

AM> Заранее благодарю.
Да незачто.
Вобщем полный офтоп. К Делфи имеющий очень мало отношения.


22 Июл 05 08:39

Andy

unread,
Jan 30, 2006, 7:57:14 AM1/30/06
to
Здравствуйте, ALL.

Задумал поместить работу сокета(сервера) в параллельный поток. Что-то
вроде терминала, который ждет подключения к нему клиента(ов) для
сообщения о состоянии программы. Причем некоторые отчеты займут
продолжительное процессорное время, что не должно мешать локальному
пользователю продолжать работать.

Не подскажете как это можно реализовать?

Реализовывал примерно так:

TTreadSocketS = class(TThread)
private
S: TServerSocket;
protected
procedure Execute; override;
public
Function OnGetMess(xxx):xxx;
end;


procedure TTreadSocketC.Execute;
var
Stop : boolean;
begin
FreeOnTerminate := True;
//********************
S := TServerSocket.Create;
S.OnGetMess:=OnGetMess; //определяем реакцию на пришедшее сообщение

S.Connect;

Stop := False;
Repeat
if Terminated then Stop := True;
Until Stop;

S.Disconect;
end;

Проблема в том, что приходящие сообщения так и не вызывают OnGetMess
т.к. в цикл Repeat-Until полностью держит процесс!
Как это можно обойти??? Кто-нибудь подобное уже делал?

--
С уважением,
Andy mailto:an...@cherno.cv.ua

Alexander Vedjakin

unread,
Jan 30, 2006, 2:43:39 PM1/30/06
to
*$* Hello, Andy *$*

Monday January 30 2006 15:57, Andy wrote to All:

A> From: Andy <an...@cherno.cv.ua>

A> Здравствуйте, ALL.

A> Задумал поместить работу сокета(сервера) в параллельный поток. Что-то
A> вроде терминала, который ждет подключения к нему клиента(ов) для
A> сообщения о состоянии программы. Причем некоторые отчеты займут
A> продолжительное процессорное время, что не должно мешать локальному
A> пользователю продолжать работать.

A> Hе подскажете как это можно реализовать?

A> Реализовывал примерно так:

A> TTreadSocketS = class(TThread)
A> private
A> S: TServerSocket;
A> protected
A> procedure Execute; override;
A> public
A> Function OnGetMess(xxx):xxx;
A> end;


A> procedure TTreadSocketC.Execute;
A> var
A> Stop : boolean;
A> begin
A> FreeOnTerminate := True;
A> //********************
A> S := TServerSocket.Create;
A> S.OnGetMess:=OnGetMess; //определяем реакцию на пришедшее сообщение

A> S.Connect;

A> Stop := False;
A> Repeat
A> if Terminated then Stop := True;

Application.ProcessMessages;

A> Until Stop;

A> S.Disconect;
A> end;

A> Проблема в том, что приходящие сообщения так и не вызывают OnGetMess
A> т.к. в цикл Repeat-Until полностью держит процесс!
A> Как это можно обойти??? Кто-нибудь подобное уже делал?


Alexander
■ Mr. President of Piafi SoftIntl
■ E-Mail: m...@piafi.ru; ICQ: 6339061
> http://www.piafi.ru/

Andy

unread,
Feb 1, 2006, 6:03:21 AM2/1/06
to
Здравствуйте, Alexander.

Вы писали 1 лютого 2006 р., 21:43:39:

A>> Задумал поместить работу сокета(сервера) в параллельный поток. Что-то
A>> вроде терминала, который ждет подключения к нему клиента(ов) для
A>> сообщения о состоянии программы. Причем некоторые отчеты займут
A>> продолжительное процессорное время, что не должно мешать локальному
A>> пользователю продолжать работать.

A>> ...


A>> Repeat
A>> if Terminated then Stop := True;

AV> Application.ProcessMessages;

A>> Until Stop;

AV> Alexander
AV> ■ Mr. President of Piafi SoftIntl
AV> ■ E-Mail: m...@piafi.ru; ICQ: 6339061
>> http://www.piafi.ru/

Спасибо! Спас проект! :)

0 new messages