Delphi2 и COM объекты
Автор: Mike Scott
...я обращался к справке MS Help, но и там я не нашел как
работать с объектами COM в Delphi.
Работать с COM-объектами в Delphi очень просто, поскольку объекты Delphi
имеют ту же структуру, что и объекты COM. Единственное различие заключается в
том, что в определении COM имеется три метода для изменения состояния COM
объекта: QueryInterface, AddRef и Release.
Теперь для того, чтобы иметь доступ к COM объекту из другого приложения или
DLL, вам необходимо написать в Delphi объявление виртуального абстрактного
класса, являющегося потомком IUnknown (в котором объявлены QueryInterface,
AddRef и Release). В этом классе для COM объекта вы добавляете методы,
объявленные в заголовочном файле C, в том же порядке следования. В этом случае
вы запрашиваете интерфейс IShellLink, определенный в SHLOBJ.C и один из
интерфейсов, предоставляемых Delphi 2, с помощью которого вы сможете реализовать
свой собственный. Это может выглядеть приблизительно так:
type
IShellLink = class( IUnknown )
function GetPath( pszFile : PChar ;
cchMaxPath : integer ;
pfd : PWIN32_FIND_DATA ;
fFlags : cardinal ) : HResult ; virtual ; stdcall ;
abstract ;
// ... и т.д..
end ;
|
Вы объявляете переменную для объекта IShellLink и вызываете
метод GetPath?
Вы можете создавать экземпляр IShellLink, используя CoCreateInstance и
передавая CLSID для IShellLink. Затем вы можете вызывать методы IShellLink, как,
например, GetPath. Описание механизма работы может занять не одну статью, но
реализованная в Delphi высокоуровневая инкапсуляция делает жизнь программиста
намного легче, без необходимости залезать в столь глубокие дебри данной
технологии. Особо любознательным я предлагаю преобрести "Programmer's Guide to
Microsoft Windows 95", содержащую примеры (к сожалению, на C), лежащие в
плоскости нашей темы.
|