![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема нотификационных сообщений
alexprozorov © (2004-03-23 13:03:00)здравствуйте всем!
Проблема такая - создан контроллер автоматизации и клиент к нему.
Когда они выполняются на одном компьютере нотификационные сообщения с сервера клиенту доходят, а когда на разных то нет.
Где можно порыть?
alexprozorov (2004-03-23 17:30:00) [1]Все получилось.
Оказывается компьютеры должны быть в одном домене или рабочей группе. Может быть мое заключение и не верно, но работает!
alexprozorov (2004-03-23 16:43:00) [2]Наврал, трассируется.
Там такие строки:
punk := GetServer;
ConnectEvents(punk);
Fintf:= punk as IEfirOTV;
на 1 punk присваивается значение, а на второй он становится равен nil
или я не там смотрю?
Digitman (2004-03-23 16:01:00) [3]это почему же ?
alexprozorov (2004-03-23 15:55:00) [4]EventsConnect не могу страссировать, ..TLB.pas не трассируется
Digitman (2004-03-23 15:38:00) [5]ок.
трасиировка на кл.стороне процедуры
procedure TAutoObject.EventConnect(..)
что показывает ?
alexprozorov (2004-03-23 15:29:00) [6]Не фига не изменилось
Digitman (2004-03-23 15:20:00) [7]запусти утилиту regtlib.exe
alexprozorov (2004-03-23 15:16:00) [8]А как это делается?
Digitman (2004-03-23 15:10:00) [9]на удаленной машине, где располагается клиент, библ-ка типов зарегистрирована ?
alexprozorov (2004-03-23 14:54:00) [10]Вот еще вопрос - права какие-либо на доступ от сервера к клиенту нужны?
Если вкраце то вот так:
unit Main;
interface
uses
Windows, SysUtils, Forms, Dialogs, Menus, ComObj,
inifiles, ExtCtrls, StdCtrls, Controls,
ComCtrls, ToolWin, Classes, Variants, ActnList,
Grids, Graphics, EditForm, TimeCode, Efir_TLB, OleServer;
type
TForm1 = class(TForm)
....
EfirOTV1: TEfirOTV;
....
procedure FormCreate(Sender: TObject);
procedure EfirOTV1ChangeLogoEvent(Sender: TObject);
private
IMyServer: IEfirOTV;
....
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
var INI: TIniFile;
FileName: String;
RemoteMachineName: String;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
....
EfirOTV1.RemoteMachineName:=RemoteMachineName;
EfirOTV1.Connect;
IMyServer:=EfirOTV1.DefaultInterface as IEfirOTV;
....
end;
procedure TForm1.EfirOTV1ChangeLogoEvent(Sender: TObject);
begin
//Реакция на событие
....
end;
end.
Digitman (2004-03-23 14:42:00) [11]
> Это может зависеть от потоковой модели сервера?
такой зависимости по идее быть не должно
покажи код контроллера (клиента)
alexprozorov (2004-03-23 14:10:00) [12]Это может зависеть от потоковой модели сервера?
alexprozorov (2004-03-23 14:10:00) [13]Трассировка показывает, что удаленный клиент не реализует нотификационный интерфейс, а локальный формирует.
Поэтому после проверки этого локальному клиенту посылается сообщение а удаленному нет!
Честно говоря я в этом только разбирают, не до конца понимаю все это!
Digitman (2004-03-23 13:53:00) [14]что реально происходит в коде сервера, пытающегося вызвать колбэк ? что показывает трассировка ?
alexprozorov (2004-03-23 13:49:00) [15]Делал!
разрешение на запуск и доступ к серверу есть!
Digitman (2004-03-23 13:42:00) [16]настройки сервера автом-ции в DCOM-конфигураторе какие-то делал ?
alexprozorov (2004-03-23 13:32:00) [17]DCOM
Digitman (2004-03-23 13:27:00) [18]что используется для удаленного доступа контроллера(клиента)автоматизации к серверуавтоматизации ? DCOM ?