Тема: AHK: WinSpy++, WinSpector
Добрый вечер, может кто подсказать как работать в WinSpy++ или же в WinSpector. Почему-то при каждой попытке считать сообщение поля пустые. Цель "totalcommander" может ли быть у него защита anti-hook?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Добрый вечер, может кто подсказать как работать в WinSpy++ или же в WinSpector. Почему-то при каждой попытке считать сообщение поля пустые. Цель "totalcommander" может ли быть у него защита anti-hook?
Проблема может быть в разности битностей. Если перехватчик 32-битный, он не может перехватить сообщения 64-битного приложения.
teadrinker 00E00230 S WM_COMMAND wNotifyCode:0004 wID:1786 hwndCtl:030706FA вышла вот такая строка, возможно ли как-то сделать из этого postmessage команду?
Наверно, как-то так:
SendMessage, 0x111, (4 << 16)|1786, 0x30706FA,, ahk_id [здесь хэндл окна, которому отправлять, возможно подойдёт 0x30706FA]
Значения 0x30706FA и возможно 1786 будут меняться после каждой перезагрузки приложения.
Но что такое 00E00230 S не знаю.
00E00230 - хендл окна.
S - сообщение послано функцией SendMessage.
Использую ГК для копирования сообщения в один клик сразу в нашем формате (сообщение должно быть выделено) и прицела в один клик:
Hotkey("^C", "Microsoft Spy++ - Messages (", "spyCopy")
Hotkey("^C", "Microsoft Spy++ - [Messages (", "spyCopy")
Hotkey("^W", "Microsoft Spy++", "spyClose")
Hotkey("^N", "Microsoft Spy++", "spyWindows")
Hotkey("!F", "Microsoft Spy++", "spyAim")
Hotkey("+^!Space",, "doNotDelete")
Return
doNotDelete() { ; for spyAim work
}
spyCopy() {
Send !{Enter}
WinWaitActive Message Properties,, 5
If ErrorLevel
Return
ControlGetText CommandComm, Static4
CommandNum := SubStr(CommandComm, 1, 4)
CommandType := SubStr(CommandComm, 8, -1)
ControlGetText CommandName, Static5
ControlGet Params, List,, ListBox1
Sleep 10
WinClose ;ControlClick Button2
aLine := StrSplit(Params, "`n", "`r")
wParam := "0x" SubStr(aLine[1], -7)
lParam := "0x" SubStr(aLine[2], -7)
; MsgBox % CommandNum "`n" CommandName "`n" CommandType "`n" wParam " " lParam
ComTypeTransl := {Sent: "SendMessage", Posted: "PostMessage"}
; MsgBox % ComTypeTransl[CommandType] " 0x" CommandNum ", " dec(wParam) ", " dec(lParam)
Clipboard := ComTypeTransl[CommandType] " " hex("0x" CommandNum) ", " hex(wParam) ", " hex(lParam)
; SendMessage, Msg, wParam, lParam
}
spyClose() {
WinMenuSelectItem, Microsoft Spy++,, 5&, 5&
}
spyWindows() {
Send ^w
}
spyAim() {
CoordMode, Mouse, Screen
MouseGetPos, x, y, OutputVarWin
CoordMode, Mouse, Relative
If (OutputVarWin != WinExist("Microsoft Spy++"))
MouseMove 0, 0, 0
WinMenuSelectItem, Microsoft Spy++,, 1&, 7& ; Send ^f
WinWaitActive, Find Window ahk_class #32770,, 3
If ErrorLevel
{
MsgBox Find Window not found
Return
}
Control Check,, Button5 ;&Messages
ControlClick, Static3,,,,, NA D ;Take AIM
Click D
Hotkey LButton, SpyAimLButton, On
DllCall("SetCursorPos", int, x, int, y)
}
SpyAimLButton:
KeyWait, LButton
Click U
Hotkey LButton, SpyAimLButton, Off
ControlSend,, {Enter}, Find Window ahk_class #32770
Return
dec(n) {
Return Format("{:u}", n)
}
hex(n) {
Return Format("{:#0x}", n)
}
Hotkey(keyName, winTitle:="", func:="", args*) {
funcObj := Func(func).Bind(args*)
Hotkey IfWinActive, % winTitle
Hotkey % keyName, % funcObj
}
Стоит наверно сделать лаунчер со своим прицелом и автоматическим выбором разрядности spyxx, и сразу установить (HKEY_CURRENT_USER\Software\Microsoft\Spy++) дефолтный фильтр сообщений с галкой на General (или ограничиться WM_Command? А может наоборот General недостаточно?). Пишите что надо будет.
SendMessage, 0x111, (4 << 16)|1786, 0x30706FA,, ahk_id [здесь хэндл окна, которому отправлять, возможно подойдёт 0x30706FA]
Ничего не получилось, хоть и пытался подставлять значения которые были актуальны на время открытия программы, но всё равно спасибо за попытку помочь)
А хэндл окна правильно подставили? Если, например, значение было 00E00230, то ahk_id 0x00E00230.
teadrinker Сначала нет, но потом исправил и всё равно ничего не заработало
У меня выбирало только первый пункт меню в totalcommander в поисках файлах (как пример). Затем значения поменялись и вообще ничего не выбирает.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться