Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.09.2010, 09:49
aha aha вне форума
Прохожий
 
Регистрация: 01.12.2007
Сообщения: 20
Репутация: 10
По умолчанию Полдня искал по форумам решение моей проблемы

может неправильно сформулировал конечно. Суть такова , хочу сделать хелп программы , сделав некую анимацию, то есть мышь устанавливается программно на нужную позицию Mainmenu, программно кликает и появляется либо хинт.
Вопрос 1 . как установить программно мышку на нужную позицию Mainmenu ?
Вопрос 2 связан с первым вопросом , как заставить программно выпасть mainmenu ?
Ответить с цитированием
  #2  
Старый 28.09.2010, 10:12
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

Используй функции перемещения и клика мышки.

Код:
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  
Старый 28.09.2010, 11:06
aha aha вне форума
Прохожий
 
Регистрация: 01.12.2007
Сообщения: 20
Репутация: 10
По умолчанию я хотел вот такое получить , методом тыка получилось

но может быть надо по другому делать ?
Код:
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;
Admin: Пользуемся тегами!



И еще заметил данный метод не подходит в случае если меню написано кириллицей, как у меня - с File прокатит , а с Файл не работает .. (((

Последний раз редактировалось aha, 28.09.2010 в 14:11.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:49.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025