Интернет-журнал 'Домашняя лаборатория', 2007 №3 - Вудворт
Шрифт:
Интервал:
Закладка:
����� 5
������ � ������� ����������������
��� ����� API?��� ����, ����� ��������� ���� ����� ������ � ���������� ���� ���������� ��� Windows ������������� ���������, ������������ Microsoft ������� ����� ����, ��� API � "Application Programming Interface".
��� � ����� ������� � ��������, ������� ����� �������� ����� �������������� �����������: ����������� ������ ���������, ����� ������, ����������� ������������ ���� � �������� ��������, ����������� � ������������� �� ���� ����� � ������ ������. � ����� �����������, ��������� ��������� ��� Windows, �� ������ ����������� � ������������� ����������� ������������ ��� ����������� ���� ���������, ���� ��� ������ ����� � ��������� �������� ������������ ��������,�� ��� ���������� ������ ������� �� ��������� kernel32.dll ��� user32.dll, ���������� ������� � ��������� API, ������ ��� �������, � ��� ��� ��� ������� �� ���� ����. ����� ������� � �������� ����� � ������� 600.
� ������������ ������� MS-DOS ������ �������, ��� API, �� ����,�� ���, ��� ������ ������ ��������� ��� ���� ������������ �������, ������ ��� ���, �� ������ �� �����, ��������� � ����������� ������� ������ �� ����� �����������, ��������� ������ �� ������������, ����������� �� �������� �������, ��������� �������, ���� ������� ����������� ���� �����������[8]. ��� ������ ������� ���������� �������� � ������� ��� ������������ ����������� ������ ���������� ���������, �������� ������� ������� � ��� �� �������� ����������� ������������ ���������� ��������� ������������ ������� �� ���������� ������������ ��������� ���������, ���� �������� ��� � �����������. ������� ���� ����� �������������� ��� ���������� "����������" ����������, �� ���� ���������, ���������� ������ �� ��������� ������, ��� ����������,�� ���� ������ ���������� � ��� �� ��������� ������ ��� ������������ �� ���������� � ��� �����, � ����� ����������� ��� � ������� ��������� ������.
���.�5.1. ��� ���� ���������� �������� API.
� ���������� ������������ ������� Windows ��������� ���� ������������� �� ���������� �������� ���� ��������� � ������� �������� ����� � ������ ���������� ����� ����������,�� ��� � Windows 3.0 �������������� ������� API. ������ �����������, ���� ��, ��������, ����� ������� ���� ����� ������ ��� ������ ���������, ������ ��� ����� ���� �������� ����� ������� ����������� ������ ���� � ������������ ��� �����������, ��� ��, ��� � ����� ������ ������� �����, �� ������� �� ����� ���� ���������, � �� ������� �������� ������ ���� ���� �������� ���������, ������ �������� ����� ���� ��� ������ (�������� ��� ����, ��� ��� ���������� ��������� ���������, � ������� ���� ����� �������������� ����� �������, ��� �������� ����� ������������� ����� ��� ��� �������� �������� ������������ ������, �������������� ��� � ������ ���� ����� ���������). ������� ��������� API ��������� ������������� ������ � ���������� ����������������, �������� ��������� ������ ��������� � ��������� ������� ����������� ������� �������, �� �������� � ����� �������� �������, ��� ���������������� ����������� �������� ���������� ��� ����� � ������ ����������.
� ����� Visual Basic for Applications (VBA) ������ ������� � ��������� API ���������� ���� ��� ���������� ��������� ���������������, ��� ��� ������������ �� ��� ����������� ���� ����� � ������ ������, ��������� �� ������ �������������� ����� � ������ ������� �������� ���������� ��� �������������,�� �� VBA �������� �� ���� ����������, � ��������� �� ��� ���������� ������������ ��������������� ������� ����� �����. ������ ������ ��������� ������������� � ��������� ���������, ��� ������� ���� ��� �������� �� ���������� �������� VBA, ���� ��� �������� ������������� ��� ������� ��������. ��������, ���� ������ ����� � ������������ ������ ��������� (���.�5.1) ��� ��������� ������ ������ (������ �� �������� VBA � ������ "Application.FileSearch" � �������� ������� �������� ��� ������� ����������� ������). ��� ����� ������� � VBA ������������� ����������� ������ ������� API.
� ���������, ������������� ������� API � VBA �� ��������������� � �������, ���������� ���� ��� �������� �������� �� ���������� ���������� ���� ������ ����� ��� ��������� � ��������� �� �������� ����������������, ���� ������������� ��� ��������, � ������� ������� ������ ������� API. � ��������� �� ����� �������� ���������� � ��������� �����.
� ����������� ����������� ������� ��� ���������������� ��� Office ����� �������� ��� ������������� API, �� ������ ������ ����� API-������� ����� �������� � ���������� ������� ����������. ������, ��� ���� ���������� ����� ������ �������� ��� ������� ������� ����� ������ �� �����-���� ������ ������������ Word � � ������ �������������� ������� ���� ������ � ������� Shift ��� Control. ��� �������� ����, ��������� ���:
Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal kState As Long) As Integer
Sub Program()
GetAsyncKeyState (vbKeyShift Or vbKeyControl)
If GetAsyncKeyState(vbKeyShift) Then
Call macro1: Exit Sub
Elself GetAsyncKeyState(vbKeyControl) Then
Call macro2: Exit Sub
End If
Call m��r�3
End Sub
������ ������� � ��� ��� �� "��������������" ������� API ��� ������������� � ��������� �� VBA. �����, ��� ���������� ������� GetAsyncKeyState �� ���������� (�����, ����������� ���������, ��������������� ������ ��� ������������� ������� �����������) user32.dll, ������ � ��� ������� ���������� ����� �������, � ���������� ��� ����� ����� (� ������ � 0, ���� ������� � ��������������� ������� �� ������, � -32767 ��� 1, ���� ������). ����� ������� ��� ���������, ���������� �� ���������, �� ����������� � VBA, ���������� ��� ������������� � ������� ������� Declare.
����� vbKeyShift � ������� � ��� ���������� ���� ������� Shift (��� �������� � 16), a vbKeyControl, ��� �������� ������ � ���������� ���� ������� Control. ��������� ���������� "If�Then", ��������, ����[9], � ���� ��� � ���������� � ������� VBA. ������� Call ����� ������ �������, ��� ��