![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
P&$ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 9.7.2002 Репутация: нет Всего: нет |
Привет!
Моя прога вызывает Excell для этого в Delphi 5 использую компонент TExcellApplication. Программа соединяется с Excell срезу после запуска, затем в нужный момент : ExcellApplication.Visible=true (делаем его видимым), но вот если пользовательзакроет Excell ![]() ![]() ![]() |
|||
|
||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: нет Всего: 25 |
через поиск окна екселя, если найдено то згаружен, если нет то не загружен, или глюканул какойто из его модулей
findwindow() - искать нужно окно с названием XLMAIN помоему так, это не я придумал, это из учебника по ком и оле. -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Если посмотреть в FAQ, то там строчка есть
Excel := CreateOleObject('Excel.Application'); Я делал когда-то так (точно функцию не помню), надо в хелпе посмотреть try Excel := OpenOleObject('Excel.Application'); // вот эта фунция, уточни сам except Excel := CreateOleObject('Excel.Application'); Если Excel открыт, то используется уже созданный экземпляр. |
|||
|
||||
Fantasist |
|
|||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: нет Всего: 41 |
Хм, неужто TExcelApplication не предоставляет способов проверки этого?
В общем случае - GetActiveObject. Если сервер запущен - вернет интерфейс на него. -------------------- Волны гасят ветер... |
|||
|
||||
Oleg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 16.9.2002 Репутация: нет Всего: нет |
Вот как делаю я, но это раннее связывание без класса
TExcelApplication вместо него _Application из импортированной библиотеки типов: ... uses Excel_TLB, ActiveX, ComObj; const LCID:Integer = LOCALE_USER_DEFAULT var Unknown: IUnknown; Result: HResult; // для проверки запущен ли Excel: _Application; begin try Result:= GetActiveObject(CLASS_ExcelApplication, nil, Unknown); if (Result = MK_E_UNAVAILABLE) then begin Excel:= CoExcelApplication.Create; //если нет генерируем ко-класс Book:= Excel.Workbooks.Add(EmptyParam, lcid); Sheet:= Book.ActiveSheet as _Worksheet; Excel.WindowState[LCID]:= xlMaximized; Excel.Visible[LCID]:= True; end else begin OleCheck(Result); // гасим ошибки OLE OleCheck(Unknown.QueryInterface(_Application, Excel)); end; except Excel.DisplayAlerts[lcid]:= False; Excel.Quit; end; Разбирайтесь! :-) --------------------
...Знающий не доказывает. Доказывающий не знает... |
|||
|
||||
Fantasist |
|
|||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: нет Всего: 41 |
Точно так же делается в VCL'ном TOleServer, от которого и унаследован TExcelApplication. В методе Connect, вроде. -------------------- Волны гасят ветер... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |