Сейчас на форуме: tyns777 (+4 невидимых)

 eXeL@B —› Программирование —› MFC ToolBar и неактивные кнопки.
Посл.ответ Сообщение


Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 10 октября 2009 14:21 · Поправил: ARCHANGEL
· Личное сообщение · #1

Всем доброго времени суток и здоровья. Недавно начал ковырять программку, защищнную hardlock'ом, не имея ни ключа, ни эмулятора. Но, как выяснилось, даже без них у меня получилось снять почти все ограничения функциональности. Почти... Кроме одного - в проге остаётся неактивной одна кнопочка на ToolBar. Все попытки отловить хоть какие-то SendMessageA/W, которые бы создавали/удаляли/меняли атрибуты кнопок (и были бы адресованы при этом ToolBar'у) ни к чему не привели. Я бьюсь уже третий день над этим ограничением и если перечислить весь объём проделанной работы, то получится реферат на 20 страниц, поэтому этого здесь делать не будем. Внимание, вопрос : Можно ли каким-то ещё способом, применяя функции и методы MFC, руководить кнопками на Тулбаре? Приветствуются развёрнутые ответы с примером кода.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 10 октября 2009 14:35
· Личное сообщение · #2

Я в свое время делал кнопки Enabled через "The Customiser" - попробуй узнать есть ли обработчик под кнопкой или там муляж. Подобных утилей - много.
Можно самому в коде попробовать слать Message в кнопку



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 10 октября 2009 16:54
· Личное сообщение · #3

с msvs идуи исходники atlmfc, можно глянуть там, как включаются или отключаются кнопки




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 12 октября 2009 13:08 · Поправил: ARCHANGEL
· Личное сообщение · #4

sendersu
Слать в кнопку? Это что-то новенькое для тулбара.

Av0id
Посмотрим, спасибо. Только вот чё-то не нашёл в своей студии таких исходников. В гугле написано, что есть в 2005, но у меня 6.0. Может кто-нибудь из добрых людей выложить исходник + собраный ехе, заранее признателен.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 12 октября 2009 14:45
· Личное сообщение · #5

ARCHANGEL
да, ступил, я кнопки таким макаром делал (не на тулбаре)

Eсть опен-срс наследник АТЛ - WTL (hxtp://wtl.sourceforge.net/)

Посмотрел в дистриб VS2k3 - папка atlmfc весит 126 МБ (из них папка Lib - 105 MB)
если надо - можно закинуть куда-нить

P.S.
также можно организовать из 2к5 и 2к8 VS



Ранг: 159.1 (ветеран), 7thx
Активность: 0.130
Статус: Участник

Создано: 12 октября 2009 14:47 · Поправил: tempread
· Личное сообщение · #6

--> Эта <-- тема про отправления сообщений окнам не поможет?

P.S. Я встречался с программами,которые не только делали enable кнопке, но и меняли обработчик ее нажатия,при валидной регистрации.




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 12 октября 2009 16:27 · Поправил: OKOB
· Личное сообщение · #7

активностью кнопок на тулбаре как и активностью пунктов меню в МФК управляет функа

void CCmdUI::Enable(BOOL bOn)

MS: Программирование на Microsoft Visual C++ 6.0 для профессионалов. Круглински Д., Уингоу С, Шеферд Дж.

страница 239

ее сырок из 6й студии выглядит так
Code:
  1. void CCmdUI::Enable(BOOL bOn)
  2. {
  3.          if (m_pMenu != NULL)
  4.          {
  5.                  if (m_pSubMenu != NULL)
  6.                         return; // don't change popup menus indirectly
  7.  
  8.                  ASSERT(m_nIndex < m_nIndexMax);
  9.                  m_pMenu->EnableMenuItem(m_nIndex, MF_BYPOSITION |
  10.                         (bOn ? MF_ENABLED : (MF_DISABLED | MF_GRAYED)));
  11.          }
  12.          else
  13.          {
  14.                  // enable/disable a control (i.e. child window)
  15.                  ASSERT(m_pOther != NULL);
  16.  
  17.                  // if control has the focus, move the focus before disabling
  18.                  if (!bOn && (::GetFocus() == m_pOther->m_hWnd))
  19.                         m_pOther->GetParent()->GetNextDlgTabItem(m_pOther)->SetFocus();
  20.                  m_pOther->EnableWindow(bOn);
  21.          }
  22.          m_bEnableChanged = TRUE;
  23. }


в прицепе сырки и скомпилированный пример (при нажатии на кнопку Cut, кнопка Сору, то запрещается, то разрешается)

7516_12.10.2009_CRACKLAB.rU.tgz - test.rar

-----
127.0.0.1, sweet 127.0.0.1




Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 12 октября 2009 19:05
· Личное сообщение · #8

чтобы исходники atlmfc были, там при установке студии галку поставить нужно


 eXeL@B —› Программирование —› MFC ToolBar и неактивные кнопки.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати