Главная страница
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.015 c
3-8263
Denisiy
2003-10-14 14:30
2003.11.03
Разрешить редактирование столбца в DBGrid ?


1-8511
LORDIK
2003-10-23 15:40
2003.11.03
Разделить


6-8574
DNT
2003-09-07 01:50
2003.11.03
Компонент FTP server а


3-8285
Анатолий
2003-10-13 08:59
2003.11.03
Ненашел нужного метода


1-8385
md
2003-10-24 16:10
2003.11.03
открытие группы файлов