Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Вниз

Подключение к запущенному процесус   Найти похожие ветки 

 
zdn   (2003-12-17 13:14) [0]

Мастера! Пподскажите,пожалуйста, как подключится к запущенной программе, процессу????


 
Digitman   (2003-12-17 13:18) [1]


> как подключится


никак


 
zdn   (2003-12-17 13:20) [2]

В смысле, нет никакого способа???


 
Digitman   (2003-12-17 13:36) [3]


> В смысле, нет никакого способа???


в смысле - нет вообще такого понятия : "подключиться"

и совершенно непонятно, что под сим тобой подразумевается, равно как и где ты нахватался таких терминов, достойных, увы, примитивного юзера, но отнюдь не программиста приложений для Win32-платформ


 
zdn   (2003-12-17 13:39) [4]

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


 
Digitman   (2003-12-17 13:40) [5]


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


какие ?


 
zdn   (2003-12-17 13:41) [6]

Ну, например, сформировать какой-то отчет


 
Digitman   (2003-12-17 13:45) [7]


> сформировать какой-то отчет


а оно, приложение, само по себе "умеет" это делать ?
и оно, приложение, предоставляет возможность подачи ему извне неких "команд", предписывающих данному приложению сформировать этот самый "какой-то отчет" ?


 
zdn   (2003-12-17 13:50) [8]

1-Оно приложение, это - 1С предприятие, котороре само умеет делать отчеты.
2- в том то и дело, что извне ОНО команды выполнять может, но только в том случае, если я сам создам объект этого приложения(создание ОЛЕ объектов), а
если объект уже существует, т.е. созданный не мной, а , то к нему, как-бы и не достучишься.


 
zdn   (2003-12-17 13:52) [9]

Создаю и соединяюсь я так:

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 14:06) [10]

Все, здаешьси :)


 
Digitman   (2003-12-17 14:24) [11]

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;


 
Digitman   (2003-12-17 14:28) [12]

и впредь изволь изъясняться точно, мол, у меня возникают проблемы при попытке в своем приложении (OLE-контроллере)создания нового/задействовании существующего экз-ра внешнего OLE-сервера !


 
zdn   (2003-12-17 14:49) [13]

Огромное спасибо, Сейчас попробую.
И впредь буду изъясняться намного точнее.
Еще раз спасибо!!!!!!!!!!!!!!!!!!!!!


 
zdn   (2003-12-17 15:02) [14]

Да, тут проблемка возникает!!!
Дело в том, что у клиента на машине может быть запущено два-...
OLE-сервера, с разными параметрами.
К какому подключится GetActiveOleObject?
Я думаю к первому или вооще свалится.


 
Digitman   (2003-12-17 15:19) [15]


> К какому подключится GetActiveOleObject?


при использовании именно такого механизма у тебя нет выбора - аттач произойдет к первому же найденному активному экземпляру


 
zdn   (2003-12-17 15:23) [16]

Это вроде ясно. Там правда есть, такая штука как
Result.Initialize(Result.RMTrade, InitLine, EmptyString)
InitLine - параметры подключения к 1С
т.е. Можно проинициализировать,
но чо-то оно не помогает...


 
zdn   (2003-12-17 15:26) [17]

Да и он постоянно ругается, что операция не допустима


 
zdn   (2003-12-17 15:27) [18]

точнее "Операция недоступна"


 
Digitman   (2003-12-17 15:32) [19]


> zdn



> Да и он постоянно ругается


кто "он" ?! Пушкин ?)


> точнее "Операция недоступна"


если объект успешно создан/приаттачен, то это уже твои проблемы


 
zdn   (2003-12-17 15:37) [20]

Result := GetActiveOleObject("v77.Application");
Выдает сообщение:
"raised exception class EOLESysError with message Операция недоступна"


 
Digitman   (2003-12-17 15:57) [21]

не выдумывай.

если ты не менял мой код, то именно в моем коде ВСЕ исключения, потенциально генерируемые этим вызовом, перехватываются блоком try..except

исключение же это возбуждается, видимо, строчкой CreateOleObject(s1cAppProgID) и не "гасится" ничем, посему ты и видишь его


 
zdn   (2003-12-17 16:06) [22]

Как раз на CreateOleObject исключений не возбуждается,
т.е. создается он без проблем. А вот если запустить 1С предприятия потом по нажатию в приложении Делфи на кнопку где
написано getActiveOLEObject("v77.application")
возбуждается это исключение. быстрей всего это проблема с 1С
так как он не может запускаться без параметров.
Ладненько спасибо.
Закрываем тему!!!!!!!!!!!!


 
savva   (2003-12-17 16:09) [23]

он прав.. у меня тоже самое исключение (если проходить отладчиком) при запущенной 1С (причем не зависимо от того в каком режиме 1С запущена)..
Весь вопрос в том, что исключение не выходит наружу (как Вы сказали - "гасится" все). Засада в GetActiveOleObject - она генерирует это исключение вне зависимости от запущенной 1С

ЗЫ. Но я думаю это уже выходит за рамки данного вопроса..


 
Digitman   (2003-12-17 16:19) [24]

код исключения 483 ?

в таком случае это "капризы" самого 1С как сервера автоматизации



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.037 c
14-80238
Batoon
2004-02-03 16:57
2004.02.25
Ряды Фурье


1-79843
Dysan
2004-02-10 13:59
2004.02.25
вычислитель арифметических выражений


14-80112
N169
2004-02-02 16:32
2004.02.25
Программист назвал сына версией 2.0 :)


7-80337
sden
2003-12-06 15:46
2004.02.25
Проблема с OVERLAPPED


14-80191
J_S
2004-01-31 00:50
2004.02.25
Как правильно задавать вопросы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский