![]() |
|
|
Регистрация | << Правила форума >> | 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; Хорошо написанная программа не требует документации ICQ 9-184-668. |
#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. |