![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как программно узнать зарегистрирован ли COM объект по имени [D7]
Apachi © (2007-01-11 17:37:00)Уважаемые мастера
Как программно узнать зарегистрирован (существует ли) ли COM объект по указанному имени
Джо (2007-01-11 18:09:00) [1]Так-то оно лучше будет, без эксептов-то ;)
function IsRegistered (const AClassName: string): Boolean;
var
Dummy: TGuid;
begin
Result := Succeeded(CLSIDFromProgID (PWideChar(WideString(AClassName)),Dummy))
end;
tesseract (2007-01-11 18:02:00) [2]
> Руссо Партизано (11.01.07 17:57) [4]
Читай внимательнее. Нужно узнать есть ли он в системе.
> в try except ее пложить что ли
Ну в общем да :-)
Руссо Партизано (2007-01-11 17:57:00) [3]
> Apachi (11.01.07 17:47) [3]
Именно!
Получится что-то типа этого:
var:
oApp: OleVariant;
oDoc: OleVariant;
...
begin
Result := False;
try
oApp := GetActiveOleObject('Word.Application');
except
oApp := CreateOleObject('Word.Application');
end;
oApp.Documents.Open(FileName);
oDoc:=oApp.ActiveDocument;
...
не забудь в конце
oApp.ActiveDocument.Close(wdDoNotSaveChanges, EmptyParam, EmptyParam);
oApp.Quit(EmptyParam, EmptyParam, EmptyParam);
end;
Усё!
Apachi (2007-01-11 17:47:00) [4]to tesseract ©
если я указываю в качестве строки 'server.classname' имя ком объекта не зарегистрированного в системе то выдает ошибку "Недопустипая строка с указанием класса"
в try except ее пложить что ли
tesseract (2007-01-11 17:40:00) [5]
> Как программно узнать зарегистрирован (существует ли) ли
> COM объект по указанному имени
я думаю имеется в виду OLE.
Очень просто
if CreateOleObject('server.classname')= nil then неустановлен.
Джо (2007-01-11 17:39:00) [6]ProgIDToClassID
CreateComObject