2014-08-31 3 views
0

Привет, у меня есть приложение Windows, мне нужно щелкнуть по кнопке «One on Menu/Tabs». Я могу найти Меню со всеми параметрами, файлами, справками .... вкладками, но я не могу найти способ, как добраться до моего элемента.Как нажимать на пункты меню с помощью PostMessage/SendMessage User32

Я не могу отправить изображение своего приложения, но я отправлю тот же пример/логику с IE, где мне нужно щелкнуть по греческому (IOS).

1.I нужно нажать на View

2.Hover Кодирование

3.Hover Более

и 4. Нажмите греческий (IOS).

enter image description here

я могу найти все бар меню с File, Edut, Вид, Сервис, Справка

intWhdr = FindWindow(Step1Window.Class, Step1Window.Name);//Program 
currChild = FindWindowEx(intWhdr, 0, "WindowsForms10.Window.", "mainMenu");//Menu 

здесь у меня есть мое главное меню, здесь я застрял я не могу найти способ для нажатия на пункт меню (например, в примере Ie) меню «Вид». Мне даже не нужно действие наведения, которое я могу отправить SendMessage DownArrow и RightArrow, чтобы перейти к моему элементу, но я не хочу нажимать на «Просмотр в первую очередь».

Любые идеи, как нажать на меню Вид панели форма меню? С SendMessage/PostMessage

UPDATE

enter image description here

ответ

0

После долгих исследований и с помощью dvasanth, я считаю salution

1.Yon нужно найти WM_LBUTTONUP/DOWN НЕ WM_SETCURSOR как в IMG, чем открыть свойства и найти WPARAM и LPARAM

2.Изменение формат 011C16A8 просто добавив 0x + LPARAM/WPARAM

Ex: 011C16A8 = 0x011C16A8

EX: 00000001 = 0x01

EX: 00000012 = 0x12

Я думаю, что я получаю идею ....

В моем случае я найти в свойствах:

WM_LBUTTONUP

lParam=00000001 
wParam=000C0348 

WM_LBUTTONDOWN

lParam=00000000 
wParam=000C0348 

свиноматки после редактирования они выглядят следующим образом:

WM_LBUTTONUP

lParam=0x01 
wParam=0x000C0348 

WM_LBUTTONDOWN

lParam=0x00 
wParam=0x000C0348 

3.Just вставить это в ваш код.

Мой код, который работал:

intRes1 = PostMessage(currChild, WM_LBUTTONDOWN, 0x01, 0x000C0348); 
System.Threading.Thread.Sleep(100); 
intRes1 = PostMessage(currChild, WM_LBUTTONUP, 0x00, 0x000C0348); 
1

Использование Spy ++ отслеживать все события, доставленных в строке меню & затем попробуйте повторно отправить сообщение из своей программы.

+0

Я нашел это событие (см Update), я думаю, что привет отжимает пункт меню, но я реально не знаю, как использовать его в коде. –

+0

Вызвать API sendmessage с сообщением, lparam, wparam & handle к окну. – dvasanth

+0

Я пробовал, но wParam = 011C16A8 и handle = 011C16A8 не IntPtr или Int sow я не могу использовать sendmessage, я не знаю sendmessage, который будет работать с 011C16A8 (событие i не знает, что это за формат) –

Смежные вопросы