Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подключение к запущенному процесус [D7, Win2k, WinXP]


Страницы:   1 2

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]


> существует открытое приложение,
> очень хочется в нем выполнить действия.


какие ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо