Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.014 c
1-8418
senya
2003-10-24 15:30
2003.11.03
ShowModal


7-8701
stLAM
2003-08-25 21:42
2003.11.03
Народ, как писать на десктопе


4-8730
Сергей Резников
2003-08-28 14:08
2003.11.03
как получить hIcon иконки файла, используя SHGetFileInfo ?


3-8257
Term
2003-10-14 15:56
2003.11.03
Есть ли средства для редактирования отчётов в run-time...


14-8632
andre
2003-10-13 00:04
2003.11.03
RLE




   Наверх