ВУЗ:
Составители:
type
TObjConvert = class(TTypedComObject, IConvert)
protected
function Bin(N: Word; var Str: WideString): WordBool;
stdcall;
function Oct(N: Word; var Str: WideString): WordBool;
stdcall;
function Hex(N: Word; var Str: WideString): WordBool;
stdcall;
{Declare IObjConvert methods here}
end;
implementation
uses ComServ;
function TObjConvert.Bin (N: Word; var Str: WideString): Word-
Bool;
begin
end;
function TObjConvert.Oct(N: Word; var Str: WideString): Word-
Bool;
begin
end;
function TObjConvert.Hex(N: Word; var Str: WideString): Word-
Bool;
begin
end;
initialization
TTypedComObjectFactory.Create(ComServer, TObjConvert,
Class_ObjConvert, ciMultiInstance,
tmSingle);
end.
ɗɬɨ ɲɚɛɥɨɧ ɧɚɲɟɝɨ COM-ɤɥɚɫɫɚ, ɩɨɞɝɨɬɨɜɥɟɧɧɵɣ ɫɪɟɞɨɣ Delphi,
ɤɨɬɨɪɵɣ ɧɟɨɛɯɨɞɢɦɨ ɞɨɪɚɛɨɬɚɬɶ.
8. ȼ ɦɨɞɭɥɟ ObjConvertUnit ɪɟɚɥɢɡɭɟɦ ɮɭɧɤɰɢɢ Bin, Oct, Hex, ɤɚɤ ɜ
ɱɟɬɜɟɪɬɨɦ ɩɭɧɤɬɟ ɜɬɨɪɨɣ ɱɚɫɬɢ.
9. ɉɪɢɥɨɠɟɧɢɟ ɦɨɠɧɨ ɨɬɤɨɦɩɢɥɢɪɨɜɚɬɶ, ɧɚɠɚɜ ɫɨɱɟɬɚɧɢɟ ɤɥɚɜɢɲ
Ctrl+F9. ɋɨɡɞɚɧɧɵɣ ɩɪɢ ɷɬɨɦ COM-ɫɟɪɜɟɪ ɝɨɬɨɜ ɤ ɢɫɩɨɥɶɡɨɜɚ-
ɧɢɸ.
37
IV. Ɋɚɡɪɚɛɨɬɤɚ ɩɪɢɥɨɠɟɧɢɣ, ɢɫɩɨɥɶɡɭɸɳɢɯ
COM-ɫɟɪɜɟɪɵ
4.1. ɉɨɥɭɱɟɧɢɟ ɫɫɵɥɤɢ ɧɚ ɢɧɬɟɪɮɟɣɫ ɤɨɦɩɨɧɟɧɬɚ.
Ɏɭɧɤɰɢɢ CreateComObject ɢ ProgIdToClassId
ɉɪɢ ɪɚɛɨɬɟ ɫ ɤɨɦɩɨɧɟɧɬɨɦ COM ɩɪɢɥɨɠɟɧɢɟ ɞɨɥɠɧɨ ɩɪɹɦɨ ɢɥɢ ɤɨɫ-
ɜɟɧɧɨ ɩɨɥɭɱɢɬɶ ɫɫɵɥɤɭ ɧɚ ɟɝɨ ɢɧɬɟɪɮɟɣɫ. Ⱦɥɹ ɷɬɢɯ ɰɟɥɟɣ ɜ Delphi ɨɩɪɟ-
ɞɟɥɟɧɚ ɮɭɧɤɰɢɹ CreateComObject, ɤɨɬɨɪɚɹ ɜ ɤɚɱɟɫɬɜɟ ɩɚɪɚɦɟɬɪɚ ɩɪɢɧɢɦɚ-
ɟɬ CLSID ɡɚɩɪɚɲɢɜɚɟɦɨɝɨ ɤɨɦɩɨɧɟɧɬɚ, ɢ, ɟɫɥɢ ɤɨɦɩɨɧɟɧɬ ɡɚɪɟɝɢɫɬɪɢɪɨ-
ɜɚɧ ɜ ɫɢɫɬɟɦɟ, ɜɨɡɜɪɚɳɚɟɬ ɢɧɬɟɪɮɟɣɫ IUnknown, ɱɟɪɟɡ ɤɨɬɨɪɵɣ ɦɨɠɧɨ
ɩɨɥɭɱɢɬɶ ɨɫɬɚɥɶɧɵɟ ɢɧɬɟɪɮɟɣɫɵ:
function CreateComObject(const ClassID: TGUID): IUnknown;
Ⱦɨɫɬɭɩ ɤ ɢɧɬɟɪɮɟɣɫɚɦ ɨɛɴɟɤɬɨɜ ɚɜɬɨɦɚɬɢɡɚɰɢɢ (ɫɦ. ɝɥ. V) ɦɨɠɧɨ
ɩɨɥɭɱɢɬɶ ɬɚɤɠɟ ɢ ɫ ɩɨɦɨɳɶɸ ɮɭɧɤɰɢɢ:
function CreateOleObject(const ClassName: string): IDispatch;
ȼ ɤɚɱɟɫɬɜɟ ɩɚɪɚɦɟɬɪɚ ɜ ɞɚɧɧɭɸ ɮɭɧɤɰɢɸ ɩɟɪɟɞɚɟɬɫɹ ɞɪɭɠɟɫɬɜɟɧɧɨɟ
ɢɦɹ, ɫɨɫɬɨɹɳɟɟ ɢɡ ɢɦɟɧɢ COM-ɫɟɪɜɟɪɚ ɢ ɢɦɟɧɢ ɤɨɦɩɨɧɟɧɬɚ, ɤɨɬɨɪɵɟ
ɪɚɡɞɟɥɟɧɵ ɬɨɱɤɨɣ:
‘<ɢɦɹ COM-ɢɧɬɟɪɮɟɣɫɚ>.<ɢɦɹ ɤɨɦɩɨɧɟɧɬɚ>’
CLSID ɤɨɦɩɨɧɟɧɬɚ ɦɨɠɧɨ ɩɨɥɭɱɢɬɶ ɫ ɩɨɦɨɳɶɸ ɮɭɧɤɰɢɢ ProgIdTo-
ClassId:
function ProgIDToClassID(const ProgID: string): TGUID;
ȼ ɤɚɱɟɫɬɜɟ ɩɚɪɚɦɟɬɪɚ ɜ ɮɭɧɤɰɢɸ ɩɨɞɚɟɬɫɹ ɫɬɪɨɤɚ ɫ ɞɪɭɠɟɫɬɜɟɧɧɵɦ
ɢɦɟɧɟɦ ɤɨɦɩɨɧɟɧɬɚ. Ɋɟɡɭɥɶɬɚɬɨɦ ɹɜɥɹɟɬɫɹ CLSID ɤɨɦɩɨɧɟɧɬɚ, ɯɪɚɧɹɳɟ-
ɝɨɫɹ ɜ COM-ɫɟɪɜɟɪɟ. ɇɚɩɪɢɦɟɪ, ɟɫɥɢ ɜɵɡɜɚɬɶ ɞɚɧɧɭɸ ɮɭɧɤɰɢɸ ɫ ɩɚɪɚ-
ɦɟɬɪɨɦ ‘Word.Application’, ɬɨ ɮɭɧɤɰɢɹ ɜɟɪɧɟɬ ɫɥɟɞɭɸɳɢɣ GUID (ɢɞɟɧ-
ɬɢɮɢɤɚɬɨɪ ɩɪɢɥɨɠɟɧɢɹ Microsoft Word): ‘{000209FF-0000-0000-C000-
000000000046}’.
Ⱦɥɹ ɬɨɝɨ, ɱɬɨɛɵ ɩɨɥɭɱɢɬɶ ɭɤɚɡɚɬɟɥɶ ɧɚ ɭɠɟ ɡɚɩɭɳɟɧɧɵɣ ɜ ɫɢɫɬɟɦɟ
ɨɛɴɟɤɬ ɚɜɬɨɦɚɬɢɡɚɰɢɢ, ɢɫɩɨɥɶɡɭɟɬɫɹ ɮɭɧɤɰɢɹ
function GetActiveOleObject(const ClassName: string): IDispatch;
Ʉɚɤ ɢ ɜ ɩɪɨɰɟɞɭɪɟ CreateOleObject, ɜ ɮɭɧɤɰɢɸ ɩɟɪɟɞɚɟɬɫɹ ɞɪɭɠɟɫɬ-
ɜɟɧɧɨɟ ɢɦɹ ɨɛɴɟɤɬɚ. Ɏɭɧɤɰɢɹ ɩɪɨɫɦɚɬɪɢɜɚɟɬ ɬɚɛɥɢɰɭ ɜɵɩɨɥɧɹɟɦɵɯ ɨɛɴ-
ɟɤɬɨɜ Windows (Running Table Objects) ɜ ɩɨɢɫɤɚɯ ɡɚɩɪɚɲɢɜɚɟɦɨɝɨ ɫɟɪɜɟ-
ɪɚ. ȿɫɥɢ ɬɚɤɨɣ ɛɭɞɟɬ ɧɚɣɞɟɧ, ɬɨ ɮɭɧɤɰɢɹ ɜɟɪɧɟɬ ɫɫɵɥɤɭ ɧɚ ɢɧɬɟɪɮɟɣɫ
IDispatch ɷɬɨɝɨ ɫɟɪɜɟɪɚ.
38
type IV. ���������� ����������, ������������ TObjConvert = class(TTypedComObject, IConvert) protected COM-������� function Bin(N: Word; var Str: WideString): WordBool; 4.1. ��������� ������ �� ��������� ����������. stdcall; function Oct(N: Word; var Str: WideString): WordBool; ������� CreateComObject � ProgIdToClassId stdcall; function Hex(N: Word; var Str: WideString): WordBool; ��� ������ � ����������� COM ���������� ������ ����� ��� ���- stdcall; ����� �������� ������ �� ��� ���������. ��� ���� ����� � Delphi ����- {Declare IObjConvert methods here} ������ ������� CreateComObject, ������� � �������� ��������� �������- end; �� CLSID �������������� ����������, �, ���� ��������� ������������- ��� � �������, ���������� ��������� IUnknown, ����� ������� ����� implementation �������� ��������� ����������: uses ComServ; function CreateComObject(const ClassID: TGUID): IUnknown; function TObjConvert.Bin (N: Word; var Str: WideString): Word- ������ � ����������� �������� ������������� (��. ��. V) ����� Bool; �������� ����� � � ������� �������: begin function CreateOleObject(const ClassName: string): IDispatch; end; � �������� ��������� � ������ ������� ���������� ������������� ���, ��������� �� ����� COM-������� � ����� ����������, ������� function TObjConvert.Oct(N: Word; var Str: WideString): Word- ��������� ������: Bool; begin ‘<��� COM-����������>.<��� ����������>’ end; CLSID ���������� ����� �������� � ������� ������� ProgIdTo- ClassId: function TObjConvert.Hex(N: Word; var Str: WideString): Word- function ProgIDToClassID(const ProgID: string): TGUID; Bool; begin � �������� ��������� � ������� �������� ������ � ������������� ������ ����������. ����������� �������� CLSID ����������, �������- end; ���� � COM-�������. ��������, ���� ������� ������ ������� � ����- initialization ������ ‘Word.Application’, �� ������� ������ ��������� GUID (����- TTypedComObjectFactory.Create(ComServer, TObjConvert, ��������� ���������� Microsoft Word): ‘{000209FF-0000-0000-C000- Class_ObjConvert, ciMultiInstance, 000000000046}’. tmSingle); ��� ����, ����� �������� ��������� �� ��� ���������� � ������� end. ������ �������������, ������������ ������� function GetActiveOleObject(const ClassName: string): IDispatch; ��� ������ ������ COM-������, �������������� ������ Delphi, ������� ���������� ����������. ��� � � ��������� CreateOleObject, � ������� ���������� �������- 8. � ������ ObjConvertUnit ��������� ������� Bin, Oct, Hex, ��� � ������ ��� �������. ������� ������������� ������� ����������� ���- ��������� ������ ������ �����. ����� Windows (Running Table Objects) � ������� �������������� �����- 9. ���������� ����� ���������������, ����� ��������� ������ ��. ���� ����� ����� ������, �� ������� ������ ������ �� ��������� Ctrl+F9. ��������� ��� ���� COM-������ ����� � ����������- IDispatch ����� �������. ���. 37 38
Страницы
- « первая
- ‹ предыдущая
- …
- 17
- 18
- 19
- 20
- 21
- …
- следующая ›
- последняя »