Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.01 c
7-8693
Дмитрий В. Белькевич
2003-08-22 15:47
2003.11.03
Печатаю прямо на канвас принтера. Как создать новую страницу?


6-8571
не3дох
2003-09-06 14:09
2003.11.03
Как програмно сменить шлюз (т.е прописать новый) и DNS сервера


4-8739
Miralex
2003-08-27 14:00
2003.11.03
Как получить список всех переменных чужой програмы?


1-8452
Recruit
2003-10-24 13:27
2003.11.03
Как автоматически заменить exe-файл?


8-8550
dozer
2003-06-29 01:05
2003.11.03
ShockwaveFlash в Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский