Вторник, 22.09.2026, 08:07
Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
Форма входа
Меню сайта
Главная » FAQ [ Добавить вопрос ]

Программирование Delphi [91]
Вопрос-Ответ по программированию

Приведенный пример демонстрирует использование API функции mouse_event() для имитации событий

мыши. При нажатии кнопки Button2 программа перемещает курсор мыши на кнопку Button1 и щелкает по

ней. Положение курсора мыши задается в "абсолютных" координатах ("Mickeys"), где 65535 "Mickeys" равно

ширине экрана.

procedure TForm1.Button1Click(Sender: TObject);

begin

ShowMessage('Button 1 clicked');

end;

 

procedure TForm1.Button2Click(Sender: TObject);

var

Pt : TPoint;

begin

{Позволим кнопке Button2 перерисоваться}

Application.ProcessMessages;

{Найдем координаты центра button 1}

Pt.x := Button1.Left + (Button1.Width div 2);

Pt.y := Button1.Top + (Button1.Height div 2);

{Преобразуем Pt к координатам экрана}

Pt := ClientToScreen(Pt);

{Преобразуем Pt к "mickeys" (аболютным координатам курсора мышки}

Pt.x := Round(Pt.x * (65535 / Screen.Width));

Pt.y := Round(Pt.y * (65535 / Screen.Height));

{Переместим курсор мыши}

Mouse_Event(MOUSEEVENTF_ABSOLUTE or

MOUSEEVENTF_MOVE,

Pt.x,

Pt.y,

0,

0);

{Имитируем нажатие левой кнопки мыши}

Mouse_Event(MOUSEEVENTF_ABSOLUTE or

MOUSEEVENTF_LEFTDOWN,

Pt.x,

Pt.y,

0,

0);;

{Имитируем отпускание левой кнопки мыши}

Mouse_Event(MOUSEEVENTF_ABSOLUTE or

MOUSEEVENTF_LEFTUP,

Pt.x,

Pt.y,

0,

0);;

end;

Добавил: casperof (casperof)

Отправьте этому приложению сообщение WM_QUIT

Пример :

PostMessage(FindWindow(Nil, 'Заголовок окна'), WM_QUIT, 0, 0);

 

Где "Заголовок окна" - заголовок окна, которому Вы посылаете сообщение.

Добавил: casperof (casperof)

ShellAPI функция ShFormatDrive().

Пример :

const SHFMT_DRV_A = 0;

const SHFMT_DRV_B = 1;

 

const SHFMT_ID_DEFAULT = $FFFF;

 

const SHFMT_OPT_QUICKFORMAT = 0;

const SHFMT_OPT_FULLFORMAT = 1;

const SHFMT_OPT_SYSONLY = 2;

 

const SHFMT_ERROR = -1;

const SHFMT_CANCEL = -2;

const SHFMT_NOFORMAT = -3;

 

function SHFormatDrive(hWnd : HWND;

Drive : Word;

fmtID : Word;

Options : Word) : Longint

stdcall; external 'Shell32.dll' name 'SHFormatDrive';

 

procedure TForm1.Button1Click(Sender: TObject);

var

FmtRes : longint;

begin

try

FmtRes:= ShFormatDrive(Handle,

SHFMT_DRV_A,

SHFMT_ID_DEFAULT,

SHFMT_OPT_QUICKFORMAT);

case FmtRes of

SHFMT_ERROR : ShowMessage('Error formatting the drive');

SHFMT_CANCEL :

ShowMessage('User canceled formatting the drive');

SHFMT_NOFORMAT : ShowMessage('No Format')

else

ShowMessage('Disk has been formatted');

end;

except

end;

 

end;

Добавил: casperof (casperof)

Приведенный пример прячет и показывает кнопку "Пуск", а также разрешает и запрещает ее.

Пример :

 

procedure TForm1.Button1Click(Sender: TObject);

var

Rgn : hRgn;

begin

{Cпрятать кнопку "Пуск"}

Rgn := CreateRectRgn(0, 0, 0, 0);

SetWindowRgn(FindWindowEx(FindWindow('Shell_TrayWnd', nil),

0,

'Button',

nil),

Rgn,

true);

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

{Показать кнопку "Пуск"}

SetWindowRgn(FindWindowEx(FindWindow('Shell_TrayWnd', nil),

0,

'Button',

nil),

0,

true);

end;

 

procedure TForm1.Button3Click(Sender: TObject);

begin

{Запретить кнопку "Пуск"}

EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil),

0,

'Button',

nil),

false);

end;

 

procedure TForm1.Button4Click(Sender: TObject);

begin

{Разрешить кнопку "Пуск"}

EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil),

0,

'Button',

nil),

true);

end

Добавил: casperof (casperof)

Вызовите функцию WinAPI LockWindowUpdate передав ей дескриптор окна, которое необходимо не обновлять. Передайте ноль в качестве параметра для восстановления нормального обновления.

LockWindowUpdate(Memo1.Handle);

.

.

LockWindowUpdate(0);

Добавил: casperof (casperof)

Наш опрос
Сколько вам лет
Всего ответов: 20
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Поиск