информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Я эту канитель задумал с целью вытащить ID пункта меню,... 11.12.08 14:12  Число просмотров: 1268
Автор: Vedrus <Serokhvostov Anton> Статус: Member
Отредактировано 11.12.08 14:30  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
Я эту канитель задумал с целью вытащить ID пункта меню, чтобы его потом через SendMessage(hwnd, WM_COMMAND, ...) можно было активировать из своей программы.

Можно ли это как-нибудь по простому сделать? Программа, из которой мне нужно вытащить ID известна, так что подойдёт метод однократного определения ID.

И вообще можно ли напрямую выполнить пункт меню чужой программы? Написал простенькую программу с меню. Попробовал выполнить её пункт меню (благо не забыл его ID), и ничего не произошло ((
<programming>
[Win32] Как по HWND получить хэндл меню и его подменю? 11.12.08 12:32  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
Собственно сам хендл меню получить удалось при помощи функции GetMenu:
HMENU hmenu = GetMenu((HWND) 0xa01ba);

А вот с подменю возникли проблемы. Вызов GetSubMenu возвращает 0:
MENU hsub = GetSubMenu(hmenu, 0);

GetLastError возвращает ошибку 1401 (неверный дескриптор меню).

Причём, если я натравливаю эти функции на меню своей программы, то всё работает, а на чужие нет (например, Visual C++ 6.0).
Дескрипторы меню «живут» в контексте процесса, поэтому не получится пошарить по меню чужих процессов тривиально. Ну а если нетривиально, то это code injection уже будет. Удачи. 11.12.08 13:59  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Я эту канитель задумал с целью вытащить ID пункта меню,... 11.12.08 14:12  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
Отредактировано 11.12.08 14:30  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
Я эту канитель задумал с целью вытащить ID пункта меню, чтобы его потом через SendMessage(hwnd, WM_COMMAND, ...) можно было активировать из своей программы.

Можно ли это как-нибудь по простому сделать? Программа, из которой мне нужно вытащить ID известна, так что подойдёт метод однократного определения ID.

И вообще можно ли напрямую выполнить пункт меню чужой программы? Написал простенькую программу с меню. Попробовал выполнить её пункт меню (благо не забыл его ID), и ничего не произошло ((
Уф, сам разобрался. Посмотрел ID меню через ResHack и всё получилось. HandleX, спасибо за постоянную заботу. 11.12.08 15:29  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach