Форум: "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