Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2009, 20:35   #1
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию И сново sendMessage =) Как нажать пункт верхнего меню и меню правой кнопки?

На скрине понятней =)
Изображения
Тип файла: png example.png (47.9 Кб, 133 просмотров)
TwiX вне форума Ответить с цитированием
Старый 14.10.2009, 00:49   #2
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Эээ как то не особо понятно.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 14.10.2009, 00:56   #3
apocalypce
Пользователь
 
Аватар для apocalypce
 
Регистрация: 08.08.2009
Сообщений: 65
По умолчанию

нда... уважаемый по конкретнее пожалуйста опишите то, что вы хотите реализовать!
Error 404: Подпись not found
apocalypce вне форума Ответить с цитированием
Старый 14.10.2009, 02:06   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
Счастье

дык, автоматизацию делаете?

..ну если нажать правую кнопку, то
Код:
h:= FindWindowEx(FindWindow('notepad', nil), 0, 'Edit', nil);
 setforegroundwindow(h);
//GetWindowRect(h,r); // кстати и координаты x:= r.left y:= r.top
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_RIGHTDOWN,x,y,0,0);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_RIGHTUP,x,y,0,0);
2) по второму имхо набор действий...
Код:
h:= FindWindowEx(FindWindow('notepad', nil), 0, 'Edit', nil);
 setforegroundwindow(h);

 keybd_event(VK_F10,0,0,0);
 keybd_event(VK_F10,0,KEYEVENTF_KEYUP,0);

 //Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN,r.Left,r.Top,0,0);
 //Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP,r.Left,r.Top,0,0);

 keybd_event(VK_RIGHT,0,0,0);
 keybd_event(VK_RIGHT,0,KEYEVENTF_KEYUP,0);
 keybd_event(VK_RIGHT,0,0,0);
 keybd_event(VK_RIGHT,0,KEYEVENTF_KEYUP,0);

 keybd_event(VK_DOWN,0,0,0);
 keybd_event(VK_DOWN,0,KEYEVENTF_KEYUP,0);

 //закоментил для наглядности с вашим рисунком
 //последнее раскоментируйте, если надо чтоб нажало
 //keybd_event(VK_RETURN,0,0,0);
 //keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
Вложения
Тип файла: zip выбрать в меню пункт.zip (196.4 Кб, 20 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 14.10.2009, 10:58   #5
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Не работает.
По-подробнее: я хочу программно нажать пункт меню в блокноте и пункт в меню правой кнопки.
Это делать надо параллельно работе пользователя, т.е. не выводя окно блокнота не передний план.

т.е. через sendmessage
Например, нажать ПкМ
sendmessage(h, wm_lbuttondown, 0, {координаты})
TwiX вне форума Ответить с цитированием
Старый 14.10.2009, 11:04   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

Цитата:
по-подробнее...
- с первого раза по скринам и так было ясно...
...в мене работает

Цитата:
не выводя окно блокнота не передний план
- это другое дело и другой подход нужен... найдите хендлы всех нужных вам пунктов
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 14.10.2009, 11:19   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

В принципе кликнуть по меню можно так:
Код:
 //********** FUNCTION **********
 function Click_MainMenu_item(Form: Thandle; NumMenu:integer=0;
   NumItem:integer=0):variant;

var hm:Hmenu;  i, idmen:integer;
begin

hm:=GetMenu(form);
//hm:=GetSubMenu(hm,NumMenu);
idMen:=GetMenuItemID(hm,NumItem);
if idMen<>0 then
 PostMessage(form,WM_COMMAND,idMen,0);
result:=idmen;
end;
//********** END FUNCTION ******

procedure TForm1.Button1Click(Sender: TObject);
var hm:HMENU;
begin
 Click_MainMenu_item(Handle,1,0);

end;
Только не всегда получается получить хендлы подменюшек.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.10.2009, 16:36   #8
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

2Stilet, спасибо огромное) Именно это и искал) Вечером буду экспериментировать )
А можно ли как-нибудь получить хендл менюшки, которая появляется при нажатии ПКМ?
TwiX вне форума Ответить с цитированием
Старый 14.10.2009, 16:40   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
А можно ли как-нибудь получить хендл менюшки, которая появляется при нажатии ПКМ?
Ты это... если узнаешь как без особого геморра - обязательно отпишись
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.10.2009, 01:57   #10
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

2Stilet, сейчас лазил всё в поиске ответа для ПКМ, наткнулся на функцию... Разобрался в ней, но потом вспонил, что Вы тоже выкладывали код=) Пришёл сюда - почти тоже самое =)
Сейчас всё-таки постараюсь найти для ПКМ =\
TwiX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить в системное меню пункт не совего окна Zirr Win Api 0 24.05.2009 16:02
Меню с Items в виде набора Bitmap (как меню редактирования в Word'е) chandrasecar Мультимедиа в Delphi 7 14.01.2009 09:20
Отключить пункт меню (Программно) ScreN Общие вопросы Delphi 1 27.12.2008 13:40
Как в Excele2007 назначить макрос на пункт пользовательского меню Suroejka Microsoft Office Excel 3 28.05.2008 14:02
Macromedia Dreamweaver закрывается при наведении на пункт меню Xardas Софт 2 04.05.2008 21:39