Основы COM-технологий. Артемов М.А. и др. - 29 стр.

UptoLike

Составители: 

Ɍɚɤɢɦ ɨɛɪɚɡɨɦ, ɱɬɨɛɵ ɭɡɧɚɬɶ, ɤɚɤ ɪɟɚɥɢɡɨɜɚɬɶ ɤɚɤɢɟ-ɥɢɛɨ ɞɟɣɫɬɜɢɹ,
ɢɫɩɨɥɶɡɭɹ ɨɛɴɟɤɬɵ ɚɜɬɨɦɚɬɢɡɚɰɢɢ, ɧɟɨɛɯɨɞɢɦɨ ɜɵɩɨɥɧɢɬɶ ɫɥɟɞɭɸɳɢɟ
ɞɟɣɫɬɜɢɹ:
1) ɡɚɩɢɫɚɬɶ ɩɨɫɥɟɞɨɜɚɬɟɥɶɧɨɫɬɶ ɞɟɣɫɬɜɢɣ ɜ ɦɚɤɪɨɫ;
2) ɪɚɫɫɦɨɬɪɟɬɶ ɩɨɥɭɱɟɧɧɵɣ ɤɨɞ ɜ ɪɟɞɚɤɬɨɪɟ (ɪɢɫ. 1) ɢ ɩɟɪɟɜɟɫɬɢ ɟɝɨ
ɧɚ ɹɡɵɤ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ, ɤɨɬɨɪɵɣ ɢɫɩɨɥɶɡɭɟɬɫɹ ɞɥɹ ɪɚɡɪɚɛɨɬɤɢ
ɩɪɢɥɨɠɟɧɢɹ;
3) ɞɥɹ ɩɨɢɫɤɚ ɞɨɩɨɥɧɢɬɟɥɶɧɨɣ ɢɧɮɨɪɦɚɰɢɢ ɦɨɠɧɨ ɢɫɩɨɥɶɡɨɜɚɬɶ ɢɧ-
ɮɨɪɦɚɰɢɨɧɧɨ-ɫɩɪɚɜɨɱɧɭɸ ɫɢɫɬɟɦɭ MSDN [1] ɢɥɢ VBAxxx9.CHM
(ɞɥɹ Microsoft Office 97 — VBxxx8.HLP ɫɨɨɬɜɟɬɫɬɜɟɧɧɨ).
ɉɪɢɦɟɱɚɧɢɟ 6.1.
ɉɚɪɚɦɟɬɪɵ ɧɟɤɨɬɨɪɵɯ ɮɭɧɤɰɢɣ ɫɟɪɜɟɪɨɜ ɚɜɬɨɦɚ-
ɬɢɡɚɰɢɢ ɡɚɞɚɸɬɫɹ ɜ ɜɢɞɟ ɤɨɧɫɬɚɧɬ, ɤɨɬɨɪɵɟ ɧɟ ɭɫɬɚɧɨɜɥɟɧɵ ɜ Delphi.
ɑɬɨɛɵ ɩɨɥɭɱɢɬɶ ɡɧɚɱɟɧɢɟ ɬɚɤɢɯ ɤɨɧɫɬɚɧɬ ɜ VisualBasic, ɧɚɞɨ ɜɧɭɬɪɢ
ɦɚɤɪɨɫɚ ɧɚɩɢɫɚɬɶ MsgBox(<ɧɭɠɧɚɹ_ɤɨɧɫɬɚɧɬɚ>).
6.2. Ɉɛɴɟɤɬɧɵɟ ɦɨɞɟɥɢ Microsoft Office
ȼ ɨɛɴɟɤɬɧɵɯ ɦɨɞɟɥɹɯ ɜɫɟɯ ɩɪɢɥɨɠɟɧɢɣ Microsoft Office ɜɫɟɝɞɚ ɢɦɟ-
ɟɬɫɹ ɫɚɦɵɣ ɝɥɚɜɧɵɣ ɨɛɴɟɤɬ, ɞɨɫɬɭɩɧɵɣ ɩɪɢɥɨɠɟɧɢɸ-ɤɨɧɬɪɨɥɥɟɪɭ ɢ ɩɪɟɞ-
ɫɬɚɜɥɹɸɳɢɣ ɫɚɦɨ ɚɜɬɨɦɚɬɢɡɢɪɭɟɦɨɟ ɩɪɢɥɨɠɟɧɢɟ. Ⱦɥɹ ɜɫɟɯ ɩɪɢɥɨɠɟɧɢɣ
Microsoft Office ɨɧ ɧɚɡɵɜɚɟɬɫɹ Application, ɢ ɦɧɨɝɢɟ ɟɝɨ ɫɜɨɣɫɬɜɚ ɢ ɦɟɬɨ-
ɞɵ ɞɥɹ ɜɫɟɯ ɷɬɢɯ ɩɪɢɥɨɠɟɧɢɣ ɬɚɤɠɟ ɨɞɢɧɚɤɨɜɵ. ɇɚɢɛɨɥɟɟ ɱɚɫɬɨ ɢɫɩɨɥɶ-
ɡɭɸɬɫɹ ɫɥɟɞɭɸɳɢɟ ɢɡ ɧɢɯ.
1. ɋɜɨɣɫɬɜɨ Visible (ɞɨɫɬɭɩɧɨɟ ɞɥɹ ɨɛɴɟɤɬɚ Application ɜɫɟɯ ɩɪɢɥɨ-
ɠɟɧɢɣ Microsoft Office) ɩɨɡɜɨɥɹɟɬ ɩɪɢɥɨɠɟɧɢɸ ɩɨɹɜɢɬɶɫɹ ɧɚ ɷɤɪɚɧɟ ɢ ɜ
ɩɚɧɟɥɢ ɡɚɞɚɱ; ɨɧɨ ɩɪɢɧɢɦɚɟɬ ɡɧɚɱɟɧɢɹ True (ɩɨɥɶɡɨɜɚɬɟɥɶɫɤɢɣ ɢɧɬɟɪɮɟɣɫ
ɩɪɢɥɨɠɟɧɢɹ ɞɨɫɬɭɩɟɧ) ɢɥɢ False (ɩɨɥɶɡɨɜɚɬɟɥɶɫɤɢɣ ɢɧɬɟɪɮɟɣɫ ɩɪɢɥɨɠɟ-
ɧɢɹ ɧɟɞɨɫɬɭɩɟɧ; ɷɬɨ ɡɧɚɱɟɧɢɟ ɭɫɬɚɧɚɜɥɢɜɚɟɬɫɹ ɩɨ ɭɦɨɥɱɚɧɢɸ). ȿɫɥɢ ɜɚɦ
ɧɭɠɧɨ ɫɞɟɥɚɬɶ ɱɬɨ-ɬɨ ɫ ɞɨɤɭɦɟɧɬɨɦ Office ɜ ɮɨɧɨɜɨɦ ɪɟɠɢɦɟ, ɧɟ ɢɧɮɨɪ-
ɦɢɪɭɹ ɨɛ ɷɬɨɦ ɩɨɥɶɡɨɜɚɬɟɥɹ, ɦɨɠɧɨ ɧɟ ɨɛɪɚɳɚɬɶɫɹ ɤ ɷɬɨɦɭ ɫɜɨɣɫɬɜɭɜ
ɷɬɨɦ ɫɥɭɱɚɟ ɩɪɢɥɨɠɟɧɢɟ ɦɨɠɧɨ ɛɭɞɟɬ ɧɚɣɬɢ ɬɨɥɶɤɨ ɜ ɫɩɢɫɤɟ ɩɪɨɰɟɫɫɨɜ ɫ
ɩɨɦɨɳɶɸ ɩɪɢɥɨɠɟɧɢɹ Task Manager.
2. Ɇɟɬɨɞ Quit ɡɚɤɪɵɜɚɟɬ ɩɪɢɥɨɠɟɧɢɟ Office. ȼ ɡɚɜɢɫɢɦɨɫɬɢ ɨɬ ɬɨɝɨ,
ɤɚɤɨɟ ɩɪɢɥɨɠɟɧɢɟ Office ɚɜɬɨɦɚɬɢɡɢɪɭɟɬɫɹ, ɨɧɨ ɦɨɠɟɬ ɢɦɟɬɶ ɩɚɪɚɦɟɬɪɵ
ɢɥɢ ɧɟ ɢɦɟɬɶ ɬɚɤɨɜɵɯ.
ɉɪɢɦɟɱɚɧɢɟ 6.2.
ȼ ɧɟɤɨɬɨɪɵɯ ɩɪɨɝɪɚɦɦɚɯ ɦɟɬɨɞ Quit ɦɨɠɟɬ
ɢɦɟɬɶ ɩɚɪɚɦɟɬɪɵ (ɧɚɩɪɢɦɟɪ, ɜ Microsoft Word), ɨɞɧɚɤɨ ɩɪɢ ɩɨɡɞɧɟɦ ɫɜɹ-
ɡɵɜɚɧɢɢ ɢɯ ɦɨɠɧɨ ɧɟ ɭɱɢɬɵɜɚɬɶ.
57
6.3. Ɉɛɳɢɟ ɩɪɢɧɰɢɩɵ ɫɨɡɞɚɧɢɹ ɤɨɧɬɪɨɥɥɟɪɨɜ
ɚɜɬɨɦɚɬɢɡɚɰɢɢ
ɉɪɢɥɨɠɟɧɢɟ, ɜ ɤɨɬɨɪɨɦ ɢɫɩɨɥɶɡɭɸɬɫɹ ɫɟɪɜɟɪɵ ɚɜɬɨɦɚɬɢɡɚɰɢɢ, ɞɚɥɟɟ
ɛɭɞɭɬ ɧɚɡɵɜɚɬɶɫɹ ɤɨɧɬɪɨɥɥɟɪɚɦɢ ɚɜɬɨɦɚɬɢɡɚɰɢɢ. ȼ ɨɛɳɟɦ ɫɥɭɱɚɟ ɤɨɧ-
ɬɪɨɥɥɟɪ ɚɜɬɨɦɚɬɢɡɚɰɢɢ ɞɨɥɠɟɧ ɜɵɩɨɥɧɹɬɶ ɫɥɟɞɭɸɳɢɟ ɞɟɣɫɬɜɢɹ:
1) ɩɪɨɜɟɪɢɬɶ, ɡɚɩɭɳɟɧɚ ɥɢ ɤɨɩɢɹ ɩɪɢɥɨɠɟɧɢɹ-ɫɟɪɜɟɪɚ;
2) ɜ ɡɚɜɢɫɢɦɨɫɬɢ ɨɬ ɪɟɡɭɥɶɬɚɬɨɜ ɩɪɨɜɟɪɤɢ ɡɚɩɭɫɬɢɬɶ ɤɨɩɢɸ ɚɜɬɨɦɚ-
ɬɢɡɢɪɭɟɦɨɝɨ ɩɪɢɥɨɠɟɧɢɹ Office ɥɢɛɨ ɩɨɞɤɥɸɱɢɬɶɫɹ ɤ ɭɠɟ ɢɦɟɸɳɟɣ-
ɫɹ ɤɨɩɢɢ;
3) ɫɞɟɥɚɬɶ ɨɤɧɨ ɩɪɢɥɨɠɟɧɢɹ-ɫɟɪɜɟɪɚ ɜɢɞɢɦɵɦ (ɜ ɨɛɳɟɦ ɫɥɭɱɚɟ ɷɬɨ
ɧɟ ɨɛɹɡɚɬɟɥɶɧɨ);
4) ɜɵɩɨɥɧɢɬɶ ɤɚɤɢɟ-ɬɨ ɞɟɣɫɬɜɢɹ ɫ ɩɪɢɥɨɠɟɧɢɟɦ-ɫɟɪɜɟɪɨɦ (ɧɚɩɪɢɦɟɪ,
ɫɨɡɞɚɬɶ ɢɥɢ ɨɬɤɪɵɬɶ ɞɨɤɭɦɟɧɬɵ, ɢɡɦɟɧɢɬɶ ɢɯ ɞɚɧɧɵɟ, ɫɨɯɪɚɧɢɬɶ ɞɨɤɭ-
ɦɟɧɬɵ ɢ ɩɪ.);
5) ɡɚɤɪɵɬɶ ɩɪɢɥɨɠɟɧɢɟ-ɫɟɪɜɟɪ, ɟɫɥɢ ɟɝɨ ɤɨɩɢɹ ɛɵɥɚ ɡɚɩɭɳɟɧɚ ɞɚɧ-
ɧɵɦ ɤɨɧɬɪɨɥɥɟɪɨɦ, ɢɥɢ ɨɬɤɥɸɱɢɬɶɫɹ ɨɬ ɧɟɝɨ, ɟɫɥɢ ɤɨɧɬɪɨɥɥɟɪ
ɩɨɞɤɥɸɱɢɥɫɹ ɤ ɭɠɟ ɢɦɟɸɳɟɣɫɹ ɤɨɩɢ
ɢ.
Ⱦɥɹ ɷɬɢɯ ɰɟɥɟɣ ɦɨɠɧɨ ɜɨɫɩɨɥɶɡɨɜɚɬɶɫɹ ɮɭɧɤɰɢɹɦɢ GetActiveOleObject
ɞɥɹ ɩɨɞɤɥɸɱɟɧɢɹ ɤ ɭɠɟ ɡɚɩɭɳɟɧɧɨɣ ɤɨɩɢɢ ɩɪɢɥɨɠɟɧɢɹ-ɫɟɪɜɟɪɚ ɢ
CreateOleObject ɞɥɹ ɡɚɩɭɫɤɚ ɧɨɜɨɣ, ɟɫɥɢ ɫɟɪɜɟɪ ɧɟ ɡɚɩɭɳɟɧ. ɇɚɩɪɢɦɟɪ, ɱɬɨ-
ɛɵ ɫɨɡɞɚɬɶ ɧɨɜɵɣ ɷɤɡɟɦɩɥɹɪ COM-ɫɟɪɜɟɪɚ ɩɪɢɥɨɠɟɧɢɹ Word, ɧɟɨɛɯɨɞɢɦɨ
ɢɫɩɨɥɶɡɨɜɚɬɶ ɫɥɟɞɭɸɳɢɣ ɤɨɞ:
App := CreateOleObject(‘App.Application’);
ȼ ɪɟɡɭɥɶɬɚɬɟ ɜ ɩɟɪɟɦɟɧɧɭɸ ɜɚɪɢɚɧɬɧɨɝɨ ɬɢɩɚ
App ɛɭɞɟɬ ɩɟɪɟɞɚɧ ɨɫɧɨɜɧɨɣ
ɢɧɬɟɪɮɟɣɫ ɩɪɢɥɨɠɟɧɢɹ.
6.4. Ⱥɜɬɨɦɚɬɢɡɚɰɢɹ Microsoft Word
ȼ ɞɚɧɧɨɦ ɪɚɡɞɟɥɟ ɦɵ ɨɛɫɭɞɢɦ ɧɚɢɛɨɥɟɟ ɱɚɫɬɨ ɜɫɬɪɟɱɚɸɳɢɟɫɹ ɡɚɞɚɱɢ,
ɫɜɹɡɚɧɧɵɟ ɫ ɚɜɬɨɦɚɬɢɡɚɰɢɟɣ Microsoft Word. ɇɨ ɩɟɪɟɞ ɷɬɢɦ ɪɚɫɫɦɨɬɪɢɦ,
ɤɚɤɨɜɵ ɩɪɨɝɪɚɦɦɧɵɟ ɢɞɟɧɬɢɮɢɤɚɬɨɪɵ ɨɫɧɨɜɧɵɯ ɨɛɴɟɤɬɨɜ Microsoft Word
ɢ ɱɬɨ ɩɪɟɞɫɬɚɜɥɹɟɬ ɫɨɛɨɣ ɟɝɨ ɨɛɴɟɤɬɧɚɹ ɦɨɞɟɥɶ.
6.4.1. ɉɪɨɝɪɚɦɦɧɵɟ ɢɞɟɧɬɢɮɢɤɚɬɨɪɵ ɢ ɨɛɴɟɤɬɧɚɹ ɦɨɞɟɥɶ
Microsoft Word
Ⱦɥɹ ɩɪɢɥɨɠɟɧɢɹ-ɤɨɧɬɪɨɥɥɟɪɚ ɞɨɫɬɭɩɧɵ ɧɟɩɨɫɪɟɞɫɬɜɟɧɧɨ ɫɥɟɞɭɸɳɢɟ
ɨɛɴɟɤɬɵ:
58
    ����� �������, ����� ������, ��� ����������� �����-���� ��������,                6.3. ����� �������� �������� ������������
��������� ������� �������������, ���������� ��������� ���������                                    �������������
��������:
    1) �������� ������������������ �������� � ������;                            ����������, � ������� ������������ ������� �������������, �����
    2) ����������� ���������� ��� � ��������� (���. 1) � ��������� ���      ����� ���������� ������������� �������������. � ����� ������ ���-
    �� ���� ����������������, ������� ������������ ��� ����������           ������� ������������� ������ ��������� ��������� ��������:
    ����������;                                                                  1) ���������, �������� �� ����� ����������-�������;
    3) ��� ������ �������������� ���������� ����� ������������ ��-               2) � ����������� �� ����������� �������� ��������� ����� ������-
    �����������-���������� ������� MSDN [1] ��� VBAxxx9.CHM                      ����������� ���������� Office ���� ������������ � ��� �������-
    (��� Microsoft Office 97 — VBxxx8.HLP ��������������).                       �� �����;
    ���������� 6.1. ��������� ��������� ������� �������� ������-                 3) ������� ���� ����������-������� ������� (� ����� ������ ���
������� �������� � ���� ��������, ������� �� ����������� � Delphi.               �� �����������);
����� �������� �������� ����� �������� � VisualBasic, ���� ������                4) ��������� �����-�� �������� � �����������-�������� (��������,
������� �������� MsgBox(<������_���������>).                                     ������� ��� ������� ���������, �������� �� ������, ��������� ����-
                                                                                 ����� � ��.);
             6.2. ��������� ������ Microsoft Office                              5) ������� ����������-������, ���� ��� ����� ���� �������� ���-
                                                                                 ��� ������������, ��� ����������� �� ����, ���� ����������
     � ��������� ������� ���� ���������� Microsoft Office ������ ���-            ����������� � ��� ��������� �����.
���� ����� ������� ������, ��������� ����������-����������� � ����-             ��� ���� ����� ����� ��������������� ��������� GetActiveOleObject
���������� ���� ���������������� ����������. ��� ���� ����������            ��� ����������� � ��� ���������� ����� ����������-������� �
Microsoft Office �� ���������� Application, � ������ ��� �������� � ����-   CreateOleObject ��� ������� �����, ���� ������ �� �������. ��������, ���-
�� ��� ���� ���� ���������� ����� ���������. �������� ����� ������-         �� ������� ����� ��������� COM-������� ���������� Word, ����������
������ ��������� �� ���.                                                    ������������ ��������� ���:
     1. �������� Visible (��������� ��� ������� Application ���� �����-         App := CreateOleObject(‘App.Application’);
����� Microsoft Office) ��������� ���������� ��������� �� ������ � �        � ���������� � ���������� ����������� ���� App ����� ������� ��������
������ �����; ��� ��������� �������� True (���������������� ���������       ��������� ����������.
���������� ��������) ��� False (���������������� ��������� �������-
��� ����������; ��� �������� ��������������� �� ���������). ���� ���                       6.4. ������������� Microsoft Word
����� ������� ���-�� � ���������� Office � ������� ������, �� �����-
����� �� ���� ������������, ����� �� ���������� � ����� �������� — �            � ������ ������� �� ������� �������� ����� ������������� ������,
���� ������ ���������� ����� ����� ����� ������ � ������ ��������� �        ��������� � �������������� Microsoft Word. �� ����� ���� ����������,
������� ���������� Task Manager.                                            ������ ����������� �������������� �������� �������� Microsoft Word
     2. ����� Quit ��������� ���������� Office. � ����������� �� ����,      � ��� ������������ ����� ��� ��������� ������.
����� ���������� Office ����������������, ��� ����� ����� ���������
��� �� ����� �������.
    ���������� 6.2. � ��������� ���������� ����� Quit �����                       6.4.1. ����������� �������������� � ��������� ������
����� ��������� (��������, � Microsoft Word), ������ ��� ������� ���-                                 Microsoft Word
������� �� ����� �� ���������.
                                                                                ��� ����������-����������� �������� ��������������� ���������
                                                                            �������:



                                   57                                                                          58