MainMenu
От: Аноним  
Дата: 08.04.03 22:48
Оценка:
Господа, помогите разобраться...
Имеется окно с mainmenu (например InternetExplorer). И в этом mainmenu необходимо программно вызвать File->SaveAs.
Для этого я последовательно посылаю 3 сообщения WM_KEYDOWN:
1) VK_F10 ---переход в mainmenu
2) ord('F') ---File
3) ord('A') ---SaveAs

Что не так???
Re: MainMenu
От: Jenyay http://jenyay.net
Дата: 09.04.03 03:23
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Для этого я последовательно посылаю 3 сообщения WM_KEYDOWN:

А>1) VK_F10 ---переход в mainmenu
А>2) ord('F') ---File
А>3) ord('A') ---SaveAs

А>Что не так???


Я сейчас попробовал руками такую комбинацию нажимать. В русском IE не работает, т.к. там клавиши надо жать с русскими буквами. И еще. Может, надо еще WM_KEYUP посылать?
... << RSDN@Home 1.0 beta 6 >>
Софт, исходники и фото
Re[2]: MainMenu
От: Аноним  
Дата: 09.04.03 07:54
Оценка:
J>Я сейчас попробовал руками такую комбинацию нажимать. В русском IE не работает, т.к. там клавиши надо жать с русскими буквами. И еще. Может, надо еще WM_KEYUP посылать?

Тут дело то не в русских буквах. Окно IE я взял для примера. Проблема в том, что mainmenu не получает фокус при Sendmessage(MyHWND,WM_KEYDOWN или WM_CHAR,VK_F10,0)
Re[3]: MainMenu
От: teekanne  
Дата: 09.04.03 08:18
Оценка:
Здравствуйте, Аноним, Вы писали:

J>Я сейчас попробовал руками такую комбинацию нажимать. В русском IE не работает, т.к. там клавиши надо жать с русскими буквами. И еще. Может, надо еще WM_KEYUP посылать?


А>Тут дело то не в русских буквах. Окно IE я взял для примера. Проблема в том, что mainmenu не получает фокус при Sendmessage(MyHWND,WM_KEYDOWN или WM_CHAR,VK_F10,0)


а не легче ли былобы узнать id от menuitem'а и послать команду (WM_COMMAND, id, ...) напрямую?
Re[4]: MainMenu
От: Аноним  
Дата: 09.04.03 13:52
Оценка:
Здравствуйте, teekanne, Вы писали:

T>Здравствуйте, Аноним, Вы писали:


J>Я сейчас попробовал руками такую комбинацию нажимать. В русском IE не работает, т.к. там клавиши надо жать с русскими буквами. И еще. Может, надо еще WM_KEYUP посылать?


А>Тут дело то не в русских буквах. Окно IE я взял для примера. Проблема в том, что mainmenu не получает фокус при Sendmessage(MyHWND,WM_KEYDOWN или WM_CHAR,VK_F10,0)


T>а не легче ли былобы узнать id от menuitem'а и послать команду (WM_COMMAND, id, ...) напрямую?


Может и легче. Только КАК?
Re[5]: MainMenu
От: teekanne  
Дата: 09.04.03 15:53
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, teekanne, Вы писали:


T>Здравствуйте, Аноним, Вы писали:


J>Я сейчас попробовал руками такую комбинацию нажимать. В русском IE не работает, т.к. там клавиши надо жать с русскими буквами. И еще. Может, надо еще WM_KEYUP посылать?


А>Тут дело то не в русских буквах. Окно IE я взял для примера. Проблема в том, что mainmenu не получает фокус при Sendmessage(MyHWND,WM_KEYDOWN или WM_CHAR,VK_F10,0)


T>а не легче ли былобы узнать id от menuitem'а и послать команду (WM_COMMAND, id, ...) напрямую?


А>Может и легче. Только КАК?



ну например через spy++.

на немецком ie5.5 id = 258.
меня не удивит, если id у тругих версий такаяжее будет.
Re[6]: MainMenu
От: Аноним  
Дата: 10.04.03 13:38
Оценка:
T>ну например через spy++.

T>на немецком ie5.5 id = 258.

T>меня не удивит, если id у тругих версий такаяжее будет.

Спасибо. Получилось

Подскажите пожалуйста, как теперь определить HWND появившегося модального окна "Сохранение Веб-страницы" и кликнуть по кнопке "Сохранить"
Re[7]: MainMenu
От: teekanne  
Дата: 10.04.03 15:42
Оценка:
Здравствуйте, Аноним, Вы писали:

T>ну например через spy++.


T>на немецком ie5.5 id = 258.

T>меня не удивит, если id у тругих версий такаяжее будет.

А>Спасибо. Получилось


А>Подскажите пожалуйста, как теперь определить HWND появившегося модального окна "Сохранение Веб-страницы" и кликнуть по кнопке "Сохранить"


ну можно например в цикле подождать пока GetLastActivePopup(hwndInternetExplorer) != hwndInternetExplorer. (посмотрите описание в msdn'е)
а потом просто sendmessage(hwndSaveDialog, WM_COMMAND, 0, ID_OK);
Re: MainMenu
От: c-smile Канада http://terrainformatica.com
Дата: 11.04.03 03:28
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Господа, помогите разобраться...

А>Имеется окно с mainmenu (например InternetExplorer). И в этом mainmenu необходимо программно вызвать File->SaveAs.
А>Для этого я последовательно посылаю 3 сообщения WM_KEYDOWN:
А>1) VK_F10 ---переход в mainmenu
А>2) ord('F') ---File
А>3) ord('A') ---SaveAs

А>Что не так???


Про WM_COMMAND тебе сказали.

А нажатия клавиш эмулируются с пом. VkKeyScan(...) + WM_KEYDOWN + WM_KEYUP
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.