Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.03;
Скачать: CL | DM;

Вниз

Меню в чужой програме. Как с ним работать?   Найти похожие ветки 

 
Dexter   (2003-08-30 14:03) [0]

Народ, подскажите плиз, а то я ничего понять не могу.
Моя прога запускает другую прогу. Допустим "Блокнот". Хендл окна запушеной проги известен. Мне нужно достучатся до меню. Я делаю GetMnnu(wnd); где wnd хендл окна блокнота. После этого мне нужно зайли враздел View? и проверить доступен ли там пункт допутим Cut, и если он доступен, то "кликнуть" на него.
Я долго лазил по инету, и ничего толком не нашел, все что я понял, что нужно както использовать GetSubMenu (описание которой я не нашел), и PostMessage с параметром WM_MENUSELECT, но вот что должно быть в iParam и wParam я так и непонял.
Обьясниете чайнику плиз, если можно с примериком, или ссылочку дайте где почитать можно.


 
Dexter   (2003-08-30 20:58) [1]

Проблема решилась, кому интересно, решение тут http://www.delphikingdom.com/treasury/findwindow.htm


 
8ung ©   (2003-08-31 12:32) [2]

Спасибо за решение, сам давно ищу...


 
Dexter   (2003-08-31 17:42) [3]

Вот, наткнулся я на еще одну траблу. У меня все никак не получается проверить состояние элемента меню используя вот такой код:
procedure TForm1.Button2Click(Sender: TObject);
Var
note:hwnd;
WinMenu,SubMenu:HMenu;
Itemid:integer;
begin
note:=FindWindow("Notepad",nil);
WinMenu:=GetMenu(Note);
SubMenu:=GetSubMenu(WinMenu,1);
Label1.Caption:=IntToStr(1);
ItemId:=GetMenuItemID(SubMenu,item);
Case (GetMenuState(SubMenu,ItemID,MF_BYCOMMAND)) of
MF_CHECKED:application.MessageBox("MEnu Item Checked","YES");
MF_Enabled:application.MessageBox("MEnu Item Enabled","YES");
MF_DISABLED:application.MessageBox("MEnu Item Disabled","YES");
MF_GRAYED:application.MessageBox("MEnu Item Grayed","YES");
MF_HILITE:application.MessageBox("MEnu Item Hilited","YES");
MF_MENUBARBREAK:application.MessageBox("MEnu Item Menu Bar Brake","YES");
MF_MENUBREAK:application.MessageBox("MEnu Item Menu Brake","YES");
MF_OWNERDRAW:application.MessageBox("MEnu Item Menu Ownerdraw","YES");
MF_POPUP:application.MessageBox("MEnu Item Menu Popup","YES");
MF_SEPARATOR:application.MessageBox("MEnu Item Menu Separator","YES");
end;

end;
Тоесть если он Checked или Enabled то все нормально, все нормально, но если он во всех остальных случаях, это не почемуто работает. Что именно я делаю не так? Может флаги както совмещать можно или даже нужно?


 
Dexter   (2003-08-31 17:45) [4]

На строчку Label1.Caption:=IntToStr(1); не обращайте внимания, она туда случайно затусовалась. Этой глупости там быть не должно. :)



Страницы: 1 вся ветка

Текущий архив: 2003.11.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
1-8509
Term
2003-10-24 17:44
2003.11.03
В чём ошибка???


3-8300
KIR
2003-10-13 15:30
2003.11.03
Соргтировка по агрегированному полю в IB


1-8522
__Я__
2003-10-23 16:20
2003.11.03
Сервисы в NT


9-8243
Igor
2003-04-21 19:34
2003.11.03
Справочник по OpenGL


14-8638
Viks
2003-10-13 19:42
2003.11.03
Palm OS