![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подключение к запущенному процесус [D7, Win2k, WinXP]
zdn © (2003-12-17 13:14:00)
Мастера! Пподскажите,пожалуйста, как подключится к запущенной программе, процессу????
Digitman (2003-12-17 16:19:00) [1]
код исключения 483 ?
в таком случае это "капризы" самого 1С как сервера автоматизации
savva (2003-12-17 16:09:00) [2]
он прав.. у меня тоже самое исключение (если проходить отладчиком) при запущенной 1С (причем не зависимо от того в каком режиме 1С запущена)..
Весь вопрос в том, что исключение не выходит наружу (как Вы сказали - "гасится" все). Засада в GetActiveOleObject- она генерирует это исключение вне зависимости от запущенной 1С
ЗЫ. Но я думаю это уже выходит за рамки данного вопроса..
zdn (2003-12-17 16:06:00) [3]
Как раз на CreateOleObject исключений не возбуждается,
т.е. создается он без проблем. А вот если запустить 1С предприятия потом по нажатию в приложении Делфи на кнопку где
написано getActiveOLEObject("v77.application")
возбуждается это исключение. быстрей всего это проблема с 1С
так как он не может запускаться без параметров.
Ладненько спасибо.
Закрываем тему!!!!!!!!!!!!
Digitman (2003-12-17 15:57:00) [4]
не выдумывай.
если ты не менял мой код, то именно в моем коде ВСЕ исключения, потенциально генерируемые этим вызовом, перехватываются блоком try..except
исключение же это возбуждается, видимо, строчкой CreateOleObject(s1cAppProgID) и не "гасится" ничем, посему ты и видишь его
zdn (2003-12-17 15:37:00) [5]
Result := GetActiveOleObject("v77.Application");
Выдает сообщение:
"raised exception class EOLESysError with message Операция недоступна"
Digitman (2003-12-17 15:32:00) [6]
> zdn
> Да и он постоянно ругается
кто "он" ?! Пушкин ?)
> точнее "Операция недоступна"
если объект успешно создан/приаттачен, то это уже твои проблемы
zdn (2003-12-17 15:27:00) [7]
точнее "Операция недоступна"
zdn (2003-12-17 15:26:00) [8]
Да и он постоянно ругается, что операция не допустима
zdn (2003-12-17 15:23:00) [9]
Это вроде ясно. Там правда есть, такая штука как
Result.Initialize(Result.RMTrade, InitLine, EmptyString)
InitLine - параметры подключения к 1С
т.е. Можно проинициализировать,
но чо-то оно не помогает...
Digitman (2003-12-17 15:19:00) [10]
> К какому подключится GetActiveOleObject?
при использовании именно такого механизма у тебя нет выбора - аттач произойдет к первому же найденному активному экземпляру
zdn (2003-12-17 15:02:00) [11]
Да, тут проблемка возникает!!!
Дело в том, что у клиента на машине может быть запущено два-...
OLE-сервера, с разными параметрами.
К какому подключится GetActiveOleObject?
Я думаю к первому или вооще свалится.
zdn (2003-12-17 14:49:00) [12]
Огромное спасибо, Сейчас попробую.
И впредь буду изъясняться намного точнее.
Еще раз спасибо!!!!!!!!!!!!!!!!!!!!!
Digitman (2003-12-17 14:28:00) [13]
и впредь изволь изъясняться точно, мол, у меня возникают проблемы при попытке в своем приложении (OLE-контроллере)создания нового/задействовании существующего экз-ра внешнего OLE-сервера !
Digitman (2003-12-17 14:24:00) [14]
function AttachTo1CEngine: OleVariant;
begin
try
Result := GetActiveOleObject(s1cAppProgID);
except
Result := CreateOleObject(s1cAppProgID);
end;
end;
..
var
1CEngine: OleVariant;
...
try
1CEngine := AttachTo1CEngine;
try
// здесь делаем свое черное дело
....
finally
1CEngine := Null;
end;
except
on e:Exception do
if e is EOleSysError then
with EOleSysError(e) do
case loword(errorcode) of
499: ShowMessage("Фиг Вам, а не 1C !");
else
raise;
end
else
raise;
end;
zdn (2003-12-17 14:06:00) [15]
Все, здаешьси :)
zdn (2003-12-17 13:52:00) [16]
Создаю и соединяюсь я так:
if Length(s1cAppProgID)<=0 then s1cAppProgID:="V77.Application";
if Length(s1cAppProgID)>0 then begin
s1cResult := GetActiveObject(ProgIDToClassID(s1cAppProgID),nil,s1cUnknown);
if (s1cResult = MK_E_UNAVAILABLE) then begin
Result := CreateOleObject(s1cAppProgID);
s1CResOpen:=Result.Initialize(Result.RMTrade, InitLine, EmptyString);
end
и т.д.
zdn (2003-12-17 13:50:00) [17]
1-Оно приложение, это - 1С предприятие, котороре само умеет делать отчеты.
2- в том то и дело, что извне ОНО команды выполнять может, но только в том случае, если я сам создам объект этого приложения(создание ОЛЕ объектов), а
если объект уже существует, т.е. созданный не мной, а , то к нему, как-бы и не достучишься.
Digitman (2003-12-17 13:45:00) [18]
> сформировать какой-то отчет
а оно, приложение, само по себе "умеет" это делать ?
и оно, приложение, предоставляет возможность подачи ему извне неких "команд", предписывающих данному приложению сформировать этот самый "какой-то отчет" ?
zdn (2003-12-17 13:41:00) [19]
Ну, например, сформировать какой-то отчет
Digitman (2003-12-17 13:40:00) [20]
> существует открытое приложение,
> очень хочется в нем выполнить действия.
какие ?