Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2-5-8-11...doc
Скачиваний:
10
Добавлен:
21.04.2019
Размер:
122.88 Кб
Скачать

Вопрос 32. Статическая загрузка dll.

DLL возможно загружать двумя способами:

статически

динамически

Давайте создадим простую библиотеку DLL:

{Project file name: c:\example\exdouble\exdouble.dpr}

library ExDouble;

// my simple dll

function calc_double(r: real): real; stdcall;

begin

result := r * 2;

end;

exports

calc_double index 1;

end;

Теперь посмотрим, как её можно загружать:

Статическая загрузка DLL

При таком способе загрузки достаточно поместить файл DLL в директорию приложения или в директорию Windows, или в Windows\System, Windows\Command. Однако, если система не найдёт этого файла в этих директория, то высветится сообщение об ошибке (DLL не найдена, или что-то в этом духе).

unit untMain;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

function calc_double(r: real): real; stdcall; external 'ExDouble.dll';

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

begin

// в окошке сообщения будет цифра 21

ShowMessage(FloatToStr(calc_double(10.5)));

end;

end.

Вопрос 35 Функции api. CloseWindow, GetWindowText, SetWindowText.

Функция CloseWindow свертывает (но не разрушает) заданное окно.

BOOL CloseWindow(HWND hWnd // дескриптор окна, которое свертывается);

Параметры

hWnd

[in] Дескриптор окна, которое должно быть свернуто

Функция GetWindowText копирует текст заголовка определяемого окна (если окно имеет его) в буфер. Если заданное окно является органом управления, копируется его текст. Однако функция GetWindowText не может извлекать текст органа управления в другом приложении.

Синтаксисint GetWindowText(

HWND hWnd, // дескриптор окна или элемента

// управления с текстом

LPTSTR lpString, // адрес буфера для текста

int nMaxCount // максимальное число символов

// для копирования

);

Параметры

hWnd

[in] Дескриптор окна или органа управления, содержащего текст.

lpString

[out] Указывает на буфер, который примет текст. Указатель на буфер, который получит текст. Если строка является такой же длины или длиннее, чем буфер, она обрезается и завершается символом NULL.

nMaxCount

Устанавливает максимальное число символов для копирования в буфер, включая символ NULL. Если текст превышает это ограничение, он усекается.

Функция SetWindowText изменяет текст заголовка заданного окна (если таковой имеется). Если определяемое окно - орган управления, то изменяется его текст. Однако SetWindowText не может изменить текст органа управления в другом приложении.

Синтаксис

BOOL SetWindowText(

HWND hWnd, // дескриптор окна или элемента управления

LPCTSTR lpString // адрес строчки

);

Параметры

hWnd

[in] Дескриптор окна или органа управления, текст которого должен быть изменен.

lpString

[in] Указатель на строку с нулевым символом в конце, которую нужно использовать как новый заголовок или текст органа управления.