Re: Spy++, v.10
От: kero Россия  
Дата: 23.06.10 08:04
Оценка: 4 (1)
1) В 10-ой версиии Spy++ (8/9 не смотрел, может, и там) зачем-то изменили id пункта "Find Message..." меню,
так что 4spyxx пришлось подкорректировать: http://files.rsdn.ru/42164/4spyxx.zip (теперь — для версий Spy++ с 4 по 10).

2) Кроме того, захотелось отметить торжественной демкой юбилей нескольких спаевских глюков: 15 лет, с 4-ой версии (1995), — это вам не хухры-мухры.

Итак — SpyxxErr, юбилейная демка:



1) CLASS NAME
Top-level окна демки принадлежат одному классу, имя которого читаем в Edit-е нижнего окна.
Если зарядить Edit другим именем и нажать кнопку "CLASS NAME" — окна демки будут пересозданы, с заданным именем класса.
Зарядив Edit к.н. системным именем (#32768, #32770, ScrollBar, etc) — получим окна, у которых Spy++ (с 4-ой версии по текущую 10-ую) тупо считывает GetClassInfo с 0 в hInstance, и потом врет насчет памяти, стилей итд, а на #32768 итп — выдает следующее:
---------------------------
Microsoft Spy++
---------------------------
The specified window cannot be spied upon. Windows will not allow access to the message stream for this window.
---------------------------
ОК
---------------------------

2) OWNED POPUP, NON-OWNED POPUP
А тут вот что: Spy++ неверно определяет Parent окна, из-за неверного пользования GetParent.
Дело в том, что если GetWindow однозначно вычисляет Owner (через GW_OWNER),
то вот результат и GetParent, и GetWindowLong(GWL_HWNDPARENT) — типа "а это бабушка надвое сказала":
выдается, по обстоятельствам, то Parent, то Owner. Но Spy++ игнорирует обстоятельства и, соответственно, врет.
(И ведь в Win98 появилась GetAncestor(GA_PARENT), результат которой однозначен... но после 1995 года спаевцы в эту часть кода, очевидно, ни ногой).

3) TOP-LEVEL CHILD
А это мое самое любимое. Просто наведите любую из "потаскух" любой версии Spy++ на верхнее окно, и, тэсэзэть, — enjoy!

http://files.rsdn.ru/42164/spyxxerr.zip
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.