Здравствуйте, mighty, Вы писали:
M>Здравствуйте, wellwell, Вы писали:
W>>А может в этой чужой проге, просто проверяется некий внутренний фланг в MenuItem.OnClick: M>Речь идет о Delphi. Я сам создал приложение (Form1) на нем расопложил меню и сделал недоступным один из его пунктов(в его обработчике выдаю сообщение showmessage('Готово')) и запустил его.А потом создал второе приложение с кнопкой, событие по которой я привел. Все как будто нормально, и пункт подсвечивается, будто активным становится, но событие не срабатывает, сообщение не появляется..Больше того, я сделал меню и во втором приложении, даже в нем, если я ищу его через чистый API (wnd:=FindWindow(nil,'Form2')) происходит тоже самое.
Для программы на Дельфи через WinAPI так не сделать. Нужно внедриться в адресное пространство процесса, получить там указатель на объект TMenuItem, соответствующий нужному пункту меню, и вызвать TMenuItem.SetEnabled (опять же, как-то определив адрес этой процедуры). Имхо, требуемые для этого усилия явно не стоят того, чтобы заниматься этим со своими программами — проще реализовать некий собственный механизм изменения пунктов меню.