![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
может неправильно сформулировал конечно. Суть такова , хочу сделать хелп программы , сделав некую анимацию, то есть мышь устанавливается программно на нужную позицию Mainmenu, программно кликает и появляется либо хинт.
Вопрос 1 . как установить программно мышку на нужную позицию Mainmenu ? Вопрос 2 связан с первым вопросом , как заставить программно выпасть mainmenu ? |
|
#2
|
||||
|
||||
|
Используй функции перемещения и клика мышки.
Код:
procedure MouseClick(pT: TPoint; BackCursor: boolean = True);
// Переводим экранные координаты к принятым в mouse_event
function ScreenToAbsolute(const pT: TPoint): TPoint;
begin
Result.x := Round(pT.x * 65535 / Screen.Width);
Result.y := Round(pT.y * 65535 / Screen.Height);
end;
var
oldpt: TPoint;
begin
if BackCursor then
oldpt := ScreenToAbsolute(mouse.CursorPos);
pt := ScreenToAbsolute(pt);
{Переместим курсор мыши}
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);
if BackCursor then
{Перемещаем кнопку мыши обратно}
Mouse_Event(MouseEventf_Absolute or MouseEventf_Move, oldpt.x, oldpt.y, 0, 0);
end; |
|
#3
|
|||
|
|||
|
но может быть надо по другому делать ?
Код:
procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
Application.ProcessMessages;
{Alt Key Down}
keybd_Event(VK_MENU, 0, 0, 0);
{F Key Down - Drops the menu down}
keybd_Event(ord('2'), 0, 0, 0); //меню к примеру имеет caption=2
{F Key Up}
keybd_Event(ord('2'), 0, KEYEVENTF_KEYUP, 0);
keybd_event(BYTE(40), 0, 0, 0);
keybd_event(BYTE(40), 0, KEYEVENTF_KEYUP, 0);
keybd_event(BYTE(40), 0, 0, 0);
keybd_event(BYTE(40), 0, KEYEVENTF_KEYUP, 0);//lдважды нажимаю на курсор вниз , чтобы выделить нужный пункт меню
{Alt Key Up}
keybd_Event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
{F Key Down}
end;И еще заметил данный метод не подходит в случае если меню написано кириллицей, как у меня - с File прокатит , а с Файл не работает .. ((( Последний раз редактировалось aha, 28.09.2010 в 14:11. |