![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() |
-=CHE@TER=- |
![]()
Сообщение
#1
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,371 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 318 раз(а) ![]() |
Delphi programs in API.
На английском. Очень подробно всё описано, плюс есть исходные коды готовых юнитов. Например SmallUtil, в котором есть все частоиспользуемые подпрограммы, и который в размере меньше, чем SysUtils (автор так утверждает - я не проверял). |
![]() ![]() |
-=CHE@TER=- |
![]()
Сообщение
#2
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,371 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 318 раз(а) ![]() |
Думаю, тут будет полезно приводить некоторые полезные куски кода.
Вот пара из них. Handle - не обязательно какой-то элемент вашей программы - это может быть и хэндл чужой программы. Эмулирование нажатия какой-нибудь клавиши на клавиатуре: CODE SendMessage(Handle, WM_KEYDOWN, VK_SPACE, 0); SendMessage(Handle, WM_CHAR, VK_SPACE, 0); SendMessage(Handle, WM_KEYUP, VK_SPACE, 0); В данном случае посылается код пробела элементу с хэндлом Handle. Обратите внимание, для чтобы нажатая клавиша обработалась корректно, необходимо послать все три сообщения! Т.е. сначала что нажата клавиша пробел, затем, символ клавиши, и потом, что она отжата. Это удобно делать, например, для ListView, если нужно чтобы после удаления элемента автоматом выделился тот, на котором сейчас стоит курсор. Эмулирование нажатия клавиши мыши реализуется по схожей схеме: CODE SendMessage(Handle, WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG(X, Y)); SendMessage(Handle, WM_LBUTTONUP, MK_LBUTTON, MAKELONG(X, Y)); В данном случае, эмулируется нажатие на левую клавишу мышки. X, Y - координаты точки от левого верхнего угла элемента с хэндлом Handle, где "произошло" нажатие. Сразу скажу, что я этот код не тестировал. Хотя, по идее, он должен работать. |
![]() ![]() |
Упрощённая версия | Сейчас: 30th April 2025 - 20:52 |