![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отследить из приложения - что на машине запущен Excel? [D5, D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]
СержК © (2004-10-20 16:33:00)Как отследить из приложения - что на машине запущен Excel?
Jeer (2004-10-20 17:32:00) [1]Да ладно вам:
uses ComObj;
..
function TAForm.IsXLSActive : Boolean;
var
Xls : Variant;
begin
Xls := GetActiveOleObject ('Excel.Application');
Result := not VarIsNull(Xls);
end;
procedure TAForm.Button1Click(Sender: TObject);
begin
try
if IsXLSActive then ShowMessage('Is active')
except
ShowMessage('Not active')
end;
end;
YurikGL (2004-10-20 17:29:00) [2]
> в общем случае - никак
Ну не самый общий случай... Но все же...
ExcelApplication1:TExcelApplication;
ExcelApplication1.ConnectKind:=ckRunningInstance;
try
ExcelApplication1.Connect;
ExcelApplication1.Disconnect;
showmessage('Ексель работает');
except
showmessage('Ексель не работает ');
end;
Так как-то можно еще через createOleObject сделать, но боюсь ошибиться.
Pentium133 (2004-10-20 17:06:00) [3]
MessageDlg(mtConfirmation, 'Запущен ли Exel?' [mbYes, mbNo], 0)
Digitman (2004-10-20 16:48:00) [4]
> Уточню вопрос.
> Мне нужно знать, что Excel не запущен не только из моей
> программы, но вообще не запущен на машине.
грош цена этому "уточнению"
Ехел-процесс либо работает (в одном или более экземплярах) либо не работает в принципе ... и не важно откуда он "запущен"
СержК (2004-10-20 16:42:00) [5]Уточню вопрос.
Мне нужно знать, что Excel не запущен не только из моей программы, но вообще не запущен на машине.
Digitman (2004-10-20 16:40:00) [6]
> СержК
в общем случае - никак
в частном случае - получив из реестра полный путь к исп.файлу Ехела и, перечислив работающие процессы, обнаружиьть средь них искомый
Гаврила (2004-10-20 16:36:00) [7]GetActiveOleObject - проверка на существование