Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Клик мышью, в чужом окне 
:(
    Опции темы
Самурай
  Дата 28.10.2005, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 20.10.2005
Где: Воронежская облас ть > Семилуки

Репутация: нет
Всего: 1



Нужно произвести клик мышкой (левая клавиша) программно в чужом окне в определенном месте. Т. е. пример: есть окно с MainMenu, я программно подвожу к пункту меню курсор мыши и совершаю клик по этому элементу меню, т. е. раскрывается пункт меню... Как осуществить?
PM MAIL ICQ   Вверх
Girder
Дата 28.10.2005, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 25
Всего: 155



SendMessage(XXX,BM_CLICK,0,0)


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Самурай
Дата 28.10.2005, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 20.10.2005
Где: Воронежская облас ть > Семилуки

Репутация: нет
Всего: 1



Я взял пока собственную форму:
Код

procedure TForm1.Button4Click(Sender: TObject);
var
 Wnd: HWND;
begin
 SetCursorPos(Form1.Left + 10, Form1.Top + 30);
 Wnd:=GetActiveWindow;
 SendMessage(Wnd, BM_CLICK, 0, 0);
end;

Эффект нулевой, т. е. меню не раскрывается... smile smile
PM MAIL ICQ   Вверх
Girder
Дата 28.10.2005, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 25
Всего: 155



Код
procedure TForm1.Button1Click(Sender: TObject);
begin
 Close;
end;

procedure TForm1.Button2Click(Sender: TObject);
var i:DWord;
begin
 i:=FindWindowEx(Form1.Handle,0,nil,'Button1');
 if i<>0 then SendMessage(i,BM_Click,0,0);
end;



--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Самурай
Дата 28.10.2005, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 20.10.2005
Где: Воронежская облас ть > Семилуки

Репутация: нет
Всего: 1



С кнопкой-то понятно, т. к. все просто. Но что с MainMenu делать?
PM MAIL ICQ   Вверх
Alexeis
Дата 28.10.2005, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



Цитата
С кнопкой-то понятно, т. к. все просто. Но что с MainMenu делать?

PostMessage(....Handle, WM_KeyDown, VK_DOWN, 0);



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Самурай
Дата 28.10.2005, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 20.10.2005
Где: Воронежская облас ть > Семилуки

Репутация: нет
Всего: 1



alexeis1, не работает.
Код

var
 Wnd: HWND;
begin
 SetCursorPos(Form1.Left + 10, Form1.Top + 30);
 Wnd:=Form1.Handle;
 PostMessage(Wnd, WM_KeyDown, VK_DOWN, 0);

Добавлено @ 12:27
Все поиски ищут у нас объекты типа HWND, а меню у нас типа HMENU. Может есть похожий способ отыскания меню и работы с ним?
PM MAIL ICQ   Вверх
Alexeis
Дата 28.10.2005, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



Вероятно
PostMessage(MainMenu1.Handle, WM_KeyDown, VK_DOWN, 0);


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Самурай
Дата 28.10.2005, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 20.10.2005
Где: Воронежская облас ть > Семилуки

Репутация: нет
Всего: 1



Цитата(alexeis1 @ 28.10.2005, 13:32)
MainMenu1.Handle

А как узнать Handle этого меню в абсолютно чужом окне?
PM MAIL ICQ   Вверх
Alexeis
Дата 28.10.2005, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



С помощью программы
WinSight - поставка Delphi
Ставишь галочку Spy -> Folow focus -> жмешь на меню нужной программы


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Самурай
Дата 28.10.2005, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 20.10.2005
Где: Воронежская облас ть > Семилуки

Репутация: нет
Всего: 1



Сторонняя программа отпадает сразу. Все нужно делать в программе, т. е. на месте. smile
PM MAIL ICQ   Вверх
Romikgy
Дата 28.10.2005, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Можно поинтересоватся , что за прога в которой нужно нажать на меню, мож в меню есть связанные клавиши с пунктами меню???


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Самурай
Дата 28.10.2005, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 20.10.2005
Где: Воронежская облас ть > Семилуки

Репутация: нет
Всего: 1



Цитата(Romikgy @ 28.10.2005, 16:11)
мож в меню есть связанные клавиши с пунктами меню

Очень может быть... Но это уже в другой теме.

Как я начинаю понимать, реализовать задуманное невозможно. smile
PM MAIL ICQ   Вверх
Самурай
Дата 28.10.2005, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 20.10.2005
Где: Воронежская облас ть > Семилуки

Репутация: нет
Всего: 1



Как я вижу решение проблемы отсутсвует... smile smile
PM MAIL ICQ   Вверх
Girder
Дата 28.10.2005, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 25
Всего: 155



Цитата
Но что с MainMenu делать?
А...а! Не правильно понял... smile

Цитата
Как я вижу решение проблемы отсутсвует...
Вот смотри к примеру первое меню не имеет вложенного мени(SubMenu)... тогда задействовать обработчик за ним вот так: SendMessage(XXX,WM_Command,3,0); А если он имеет под меню... то тогда а тебе надо его вызвать, то енто: TrackPopupMenu(дискрептор вызываемого меню, TPM_LEFTALIGN or TPM_LEFTBUTTON,...)

К примеру тебе надо вызвать обработчик меню которое находиться во втором меню в 2 позиции(и при ентом первое меню содержит 3 подменю, и они без вложенных меню smile ), тогда так: SendMessage(XXX,WM_Command,7,0);

Где XXX - енти дескриптор окна которому принадлежит меню(MainMenu)

Удачи.

Добавлено @ 23:10
Забыл добавить... что было проше в вычислениях номера используй GetMenuItemID


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0971 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.