arthur2 писал(а):Поскольку в тематическом разделе я, кажется, уже задолбал всех своими попытками перехватить в ИДЕ команду End, спрошу здесь
Вопрос такой: как отладчиком поймать момент, когда в бейсике происходит выполнение этой команды, и посмотреть, что именно при этом происходит?
Предполагаю, что при этом вызывается какая-то функция из vba6.dll
(Мануалы по OllyDbg у меня - есть
arthur2 писал(а):Допишу вот это:
viewtopic.php?f=51&t=39461
Собственно, об энде я узнаю Но слишком поздно - уже после того, как он запущен. Так что мне удаётся только помахать ручкой вослед. Могу дать возможность сохранить проект при необходимости, но предотвратить выгрузку бейсика - уже не получается.
Другое дело, если я научусь снимать субклассинг ПЕРЕД ендом.
А откуда ещё это можно узнать?Joo писал(а):Для этого тебе нужно узнавать это из тела программы,
Joo писал(а):Гораздо проще завершать программу не кнопкой Stop в среде, а так-же из тела программы.
iGrok писал(а):Угу. И это надо будет объяснять пользователям. "Вот сюда не нажимайте, пожалуйста. И вот сюда - тоже. Ага, спасибо. Вы всё-таки нажали? Ну не беда, сейчас мы тут позакрываемся маленько, потом проектик заново откроем... Да Вы сидите, сидите..."
А в чём шок? Именно так Если пользователь - тот, кто занимается этой самой отладкой. Ты же например - тоже пользователь бейсика и ИДЕ.Joo писал(а):Пользователи твоих программ запускают их под IDE???
arthur2 писал(а):iGrok
Ага
К тому же - как перезапустить проект, мне выяснить так и не удалосьА в чём шок? Именно так Если пользователь - тот, кто занимается этой самой отладкой. Ты же например - тоже пользователь бейсика и ИДЕ.Joo писал(а):Пользователи твоих программ запускают их под IDE???
Хакер писал(а): Я не знаю, что такое «отладка субклассинга». Объясни мне, что это, и, соответственно, для чего библиотека, которую ты пишешь.
Joo писал(а):iGrok говорил не о разработчике, а о пользователе.
Хакер писал(а):Ты пишешь библиотеку для отладки субклассинга? Я не знаю, что такое «отладка субклассинга». Объясни мне, что это, и, соответственно, для чего библиотека, которую ты пишешь.
Function winProc(ляляля) As Long
Select Case EbMode
Case 1 'IDE в режиме запуска
пересылаем всё обратно в проект, ни чего не меняя
Case 2 'IDE в режиме паузы
вызываю DefWindowProc
Case Else 'case 0' нас остaновили эндом
пытаюсь снять субклассинг. Он нормально снимается. Но бейсик всё равно вываливается
End Select
End Function
при моём подходе - вполне получается! Вообще - практически ни каких неудобств, кроме невозможности эндаибо при включенном сабклассинге в режиме пошагового выполнения код в IDE, как и порядок его выполнения, менять не получается.
чтобы в проекте, в котором есть субклассинг, можно было делать все те же вещи, которые можно делать в обычном проекте: ставить бряки, проходить код пошагово, останавливать проект кнопкой стоп.
если энд УЖЕ начался выполняться, то, насколько я понял, ничего сделать нельзя: чтобы я ни делал, программа вернётся в процедуру, внутри которой был энд, а этой процедуры уже нету... Если конечно я правильно понимаю. Поэтому снятие субклассинга в моём варианте - ничего не даётХакер писал(а):А зачем отлавливать момент энда? Чтобы предпринять что?
arthur2 писал(а):Интересно, что по вопросу, вынесенному в заголовок никто не сказал вообще ничего Я конечно понимаю, что раздел такой, но всё-таки
ну какой-то же код всё-таки есть. Остановиться - перед нимХакер писал(а):А если нет функции? То где надо остановиться?
#If DEBUGING = 1 Then
setSbcls = SetWindowLong(hwnd, GWL_WNDPROC, AdrOfDbg(AddressOf winProc))
#Else
setSbcls = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf winProc)
#End If
Сейчас этот форум просматривают: AhrefsBot и гости: 52