Подскажите пожалуйста как решить данную проблему:
Захожу 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
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
Задумал поместить работу сокета(сервера) в параллельный поток. Что-то
вроде терминала, который ждет подключения к нему клиента(ов) для
сообщения о состоянии программы. Причем некоторые отчеты займут
продолжительное процессорное время, что не должно мешать локальному
пользователю продолжать работать.
Не подскажете как это можно реализовать?
Реализовывал примерно так:
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
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/
Вы писали 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/
Спасибо! Спас проект! :)