1,026

Re: AHK: Замена "Window Spy"

Malcev пишет:

Так контрол - это и есть окно.

Предлагаешь применять к тем контролам у которых нет специфичных стилей?

Malcev пишет:

Показывает процесс ApplicationFrameHost.

А в каком виде инфо выводить?

По вопросам возмездной помощи пишите письма E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey

1,027

Re: AHK: Замена "Window Spy"

Предлагаю выводить и те и другие, как сделано в утилите winId.

serzh82saratov пишет:

А в каком виде инфо выводить?

Можно в графе контрол писать, также как и в графе windows - название процесса и его PID.

1,028

Re: AHK: Замена "Window Spy"

И у тебя похоже ошибка с определением стилей.
Сравни результат, например на окне калькулятора, который дает WinId и AhkSpy.

1,029 (изменено: serzh82saratov, 2019-01-03 18:56:03)

Re: AHK: Замена "Window Spy"

Да, там стили из нулей, но их как бы нигде нет, или они везде есть... Как их определять?

MsgBox % 0x00000000 & 0x00000000
По вопросам возмездной помощи пишите письма E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey

1,030 (изменено: Malcev, 2019-01-04 13:40:05)

Re: AHK: Замена "Window Spy"

Наверное как-нибудь так:

ES_LEFT := 0
ES_CENTER := 1
ES_RIGHT := 2

style := 0x50300104
if !(style & (ES_CENTER|ES_RIGHT))
  msgbox left

Алгоритм можно взять отсюда:
https://github.com/strobejb/winspy/blob … tyleInfo.c
Список стилей лучше брать отсюда:
https://www.autohotkey.com/boards/viewt … amp;t=4557

1,031 (изменено: serzh82saratov, 2019-01-05 09:29:23)

Re: AHK: Замена "Window Spy"

Я тут смотрел стили https://autohotkey.com/board/topic/70454-gui-constants/

Malcev пишет:

Алгоритм можно взять отсюда:

Я там мало что понял.
И в твоём примере тоже. Если нет ни того ни другого стиля, то есть нулевой? То есть если не определено ни одного, например из 20 стилей, то значит есть все нулевые?
Их же там много.

Styles.Static := {"SS_LEFT":"0x00000000","SS_CENTER":"0x00000001","SS_RIGHT":"0x00000002","SS_ICON":"0x00000003","SS_BLACKRECT":"0x00000004","SS_GRAYRECT":"0x00000005","SS_WHITERECT":"0x00000006"
			,"SS_BLACKFRAME":"0x00000007","SS_GRAYFRAME":"0x00000008","SS_WHITEFRAME":"0x00000009","SS_USERITEM":"0x0000000A","SS_SIMPLE":"0x0000000B","SS_LEFTNOWORDWRAP":"0x0000000C","SS_OWNERDRAW":"0x0000000D"
			,"SS_BITMAP":"0x0000000E","SS_ENHMETAFILE":"0x0000000F","SS_ETCHEDHORZ":"0x00000010","SS_ETCHEDVERT":"0x00000011","SS_ETCHEDFRAME":"0x00000012","SS_TYPEMASK":"0x0000001F","SS_REALSIZECONTROL":"0x00000040"
			,"SS_NOPREFIX":"0x00000080","SS_NOTIFY":"0x00000100","SS_CENTERIMAGE":"0x00000200","SS_RIGHTJUST":"0x00000400","SS_REALSIZEIMAGE":"0x00000800","SS_SUNKEN":"0x00001000","SS_EDITCONTROL":"0x00002000"
			,"SS_ENDELLIPSIS":"0x00004000","SS_PATHELLIPSIS":"0x00008000","SS_WORDELLIPSIS":"0x0000C000","SS_ELLIPSISMASK":"0x0000C000"}

В Button 2 нулевых,  BS_PUSHBUTTON и BS_TEXT:

		Styles.Button := {"BS_PUSHBUTTON":"0x00000000","BS_DEFPUSHBUTTON":"0x00000001","BS_CHECKBOX":"0x00000002","BS_AUTOCHECKBOX":"0x00000003","BS_RADIOBUTTON":"0x00000004","BS_3STATE":"0x00000005"
			,"BS_AUTO3STATE":"0x00000006","BS_GROUPBOX":"0x00000007","BS_USERBUTTON":"0x00000008","BS_AUTORADIOBUTTON":"0x00000009","BS_PUSHBOX":"0x0000000A","BS_OWNERDRAW":"0x0000000B"
			,"BS_TYPEMASK":"0x0000000F","BS_LEFTTEXT":"0x00000020","BS_TEXT":"0x00000000","BS_ICON":"0x00000040","BS_BITMAP":"0x00000080","BS_LEFT":"0x00000100","BS_RIGHT":"0x00000200","BS_CENTER":"0x00000300"
			,"BS_TOP":"0x00000400","BS_BOTTOM":"0x00000800","BS_VCENTER":"0x00000C00","BS_PUSHLIKE":"0x00001000","BS_MULTILINE":"0x00002000","BS_NOTIFY":"0x00004000","BS_FLAT":"0x00008000"
			,"BS_RIGHTBUTTON":"0x00000020","BS_SPLITBUTTON":"0x0000000C","BS_DEFSPLITBUTTON":"0x0000000D","BS_COMMANDLINK":"0x0000000E","BS_DEFCOMMANDLINK":"0x0000000F"}
По вопросам возмездной помощи пишите письма E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey

1,032 (изменено: Malcev, 2019-01-05 13:24:24)

Re: AHK: Замена "Window Spy"

serzh82saratov пишет:

Я тут смотрел стили https://autohotkey.com/board/topic/70454-gui-constants

Это старая ссылка. Новая тут:
https://www.autohotkey.com/boards/viewt … amp;t=4557
Например у нас есть контрол static, он же дочернее окно static.
У него могут быть следующие стили:
1) общие, для всех окон:
https://github.com/AHK-just-me/AHK_Gui_ … s.ahk#L238
В тех стилях только 1 нулевой WS_OVERLAPPED, он же WS_TILED.
Заходим по этой ссылке и вбиваем в поиск WS_OVERLAPPED.
https://github.com/strobejb/winspy/blob … tyleInfo.c
Видим:

STYLE_(WS_OVERLAPPED), 0, -1, (WS_POPUP|WS_CHILD), //0x00000000

Из этого следует, что окно у которого нету ни WS_POPUP ни WS_CHILD стиля считается WS_OVERLAPPED.

if !(style & (WS_POPUP|WS_CHILD))
  msgbox WS_OVERLAPPED

2) Стили присущие данному типу дочернего окна:
https://github.com/AHK-just-me/AHK_Gui_ … ic.ahk#L19
Нулевой там только SS_LEFT.
Заходим опять по ссылке исходника winspy и видим:

STYLE_(SS_LEFT), 0x1f, -1,SS_CENTER|SS_RIGHT,//0x0000

Из чего делаем вывод, что стиль SS_LEFT будет у дочернего контрола static у которого нету ни SS_CENTER ни SS_RIGHT.
3) Теперь смотрим расширенные стили по такому же алгоритму.
Общие расширенные стили:
https://github.com/AHK-just-me/AHK_Gui_ … s.ahk#L267

WS_EX_LEFT
STYLE_(WS_EX_LEFT), 0, -1, (WS_EX_RIGHT), //0x00000000L   ; если нет стиля WS_EX_RIGHT, то значит есть стиль WS_EX_LEFT
WS_EX_LTRREADING
STYLE_(WS_EX_LTRREADING), 0, -1, (WS_EX_RTLREADING), //0x00000000L
WS_EX_RIGHTSCROLLBAR
STYLE_(WS_EX_RIGHTSCROLLBAR), 0, -1, (WS_EX_LEFTSCROLLBAR),//0x00000000L

Расширенных же стилей для конкретно контрола static нет.
Ну и если какие-то стили определить не удалось, то, думаю, стоит показывать просто их значение.
Посмотри как показывает WinId при наведении на Notepad++ (0x2000).
Хотя у него баг - перепутаны колонки (0x2000 надо в колонку style, а WS_EX_CLIENTEDGE в ExStyle).

1,033 (изменено: serzh82saratov, 2019-01-05 14:30:24)

Re: AHK: Замена "Window Spy"

Во спасибо, объяснил так объяснил.
А где он это !(style & (WS_POPUP|WS_CHILD)) взял, на мсдн почему то нет такого описания. https://docs.microsoft.com/en-us/window … ton-styles

Это старая ссылка. Новая тут:

В WinId вроде старые стили, на момент ХР. Например там нет:

BS_SPLITBUTTON       := 0x000C   ; >= Vista

Думаешь между ссылками на форуме есть разница в стилях?

То есть нулевые выводить не как

BS_PUSHBUTTON:= 0x00000000

а как

BS_PUSHBUTTON := !(BS_DEFPUSHBUTTON|BS_CHECKBOX|BS_AUTOCHECKBOX|BS_RADIOBUTTON|BS_GROUPBOX|BS_AUTORADIOBUTTON)

Кстати BS_PUSHBUTTON там не как все, а без (),//0x00000000, это может что то значить. https://github.com/strobejb/winspy/blob … nfo.c#L106
Простые оконные стили и дочерние вроде не пересекаются по значениям, а расширенные имеют совпадения например LVS_EX_MULTIWORKAREAS и WS_EX_RTLREADING, выводить и тот и другой?

Ну и если какие-то стили определить не удалось, то, думаю, стоит показывать просто их значение.

Это займёт много места, а если выводить оконные стили, то очень много. Может сделать это опционально, и в таком режиме сделать возможность включения и выключения каждого стиля.

По вопросам возмездной помощи пишите письма E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey

1,034 (изменено: serzh82saratov, 2019-01-05 15:44:52)

Re: AHK: Замена "Window Spy"

serzh82saratov пишет:

Кстати BS_PUSHBUTTON там не как все, а без (),//0x00000000

Вот ещё:

STYLE_(WS_MAXIMIZEBOX),			0, WS_POPUPWINDOW|WS_OVERLAPPEDWINDOW|WS_CAPTION, 0, //0x00010000
мсдн пишет:

WS_MAXIMIZEBOX
0x00010000L
В окне есть кнопка максимизации. Нельзя комбинировать со стилем WS_EX_CONTEXTHELP . Стиль WS_SYSMENU также должен быть указан.

При этом

мсдн пишет:

WS_TABSTOP
0x00010000L

По вопросам возмездной помощи пишите письма E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey

1,035

Re: AHK: Замена "Window Spy"

serzh82saratov пишет:

А где он это !(style & (WS_POPUP|WS_CHILD)) взял, на мсдн почему то нет такого описания

Думаю пришел к этому выводу логически.

serzh82saratov пишет:

Думаешь между ссылками на форуме есть разница в стилях?

Я проверял - на новом форуме добавлены новые стили.
Нулевые я проверял так:

ES_LEFT := 0
ES_CENTER := 1
ES_RIGHT := 2

style := 0x50300104   ; left
if !(style & (ES_CENTER|ES_RIGHT))
  msgbox left
else
   msgbox right or center

style := 0x50300106   ; right
if !(style & (ES_CENTER|ES_RIGHT))
  msgbox left
else
   msgbox right or center

Насчет кнопок - первые 11 флагов экслюзивные:

STYLE_(BS_DEFPUSHBUTTON), 0xf, -1, 0, //0x0001

поэтому нужно проверять так:

msgbox % style & 0xF
serzh82saratov пишет:

Это займёт много места

Если ты про все стили имеешь в виду, то возможно.
Если же, про вывод остатка от неопределенных стилей - то на одну строку больше.

serzh82saratov пишет:

Вот ещё:

WS_MAXIMIZEBOX - может быть только у родительского окна, а WS_TABSTOP только у дочернего.

1,036

Re: AHK: Замена "Window Spy"

Malcev пишет:

Я проверял - на новом форуме добавлены новые стили.

По отношению к старому форуму, пример можно.

STYLE_(BS_DEFPUSHBUTTON), 0xf, -1, 0, //0x0001

Что за 0xf?
Тогда у него получается что сразу все эти стили есть, если есть 0xf, и что значат тогда 0x0001 - 0x0009...

STYLE_(BS_DEFPUSHBUTTON), 0xf, -1, 0, //0x0001
STYLE_(BS_CHECKBOX), 0xf, -1, 0, //0x0002
STYLE_(BS_AUTOCHECKBOX), 0xf, -1, 0, //0x0003
STYLE_(BS_RADIOBUTTON), 0xf, -1, 0, //0x0004
STYLE_(BS_3STATE), 0xf, -1, 0, //0x0005
STYLE_(BS_AUTO3STATE), 0xf, -1, 0, //0x0006
STYLE_(BS_GROUPBOX), 0xf, -1, 0, //0x0007
STYLE_(BS_USERBUTTON), 0xf, -1, 0, //0x0008
STYLE_(BS_AUTORADIOBUTTON), 0xf, -1, 0, //0x0009
STYLE_(BS_OWNERDRAW), 0xf, -1, 0,

Если же, про вывод остатка от неопределенных стилей - то на одну строку больше.

Не понял, это как.

WS_MAXIMIZEBOX - может быть только у родительского окна, а WS_TABSTOP только у дочернего.

У где

STYLE_(WS_MAXIMIZEBOX), 0, WS_POPUPWINDOW|WS_OVERLAPPEDWINDOW|WS_CAPTION, 0, //0x00010000
STYLE_(WS_TABSTOP), 0, -1, 0, //0x00010000

тут проверка родительского или дочернего, в WS_TABSTOP вообще пусто. Что значит //0x00010000 одинаковые в обоих случаях.
WS_MAXIMIZEBOX и ...|WS_CAPTION, есть MAXIMIZEBOX если нет заголовка?

По вопросам возмездной помощи пишите письма E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey

1,037

Re: AHK: Замена "Window Spy"

serzh82saratov пишет:

По отношению к старому форуму, пример можно.

https://github.com/AHK-just-me/AHK_Gui_ … oolbar.ahk

serzh82saratov пишет:

Что за 0xf?

Отделение младших битов от старших.

serzh82saratov пишет:

что значат тогда 0x0001 - 0x0009

Значения этих стилей. Так как они экслюзивные, то будет именно один из них.

style := 0x5000010B   ; bs_ownerdraw
msgbox % 0x5000010B & 0xf
serzh82saratov пишет:

Не понял, это как.

Смотри как показывает WinId в ноутпад++.

serzh82saratov пишет:

где тут проверка родительского или дочернего

Я C++ не знаю, поэтому могу только делать предположения основываясь на логике.
Наверное он вначале проверяет не является ли окно WS_POPUPWINDOW или WS_OVERLAPPEDWINDOW или WS_CAPTION, если является значит WS_MAXIMIZEBOX.
Наверное если совместить WS_CHILD с WS_CAPTION с 0x00010000, то получим WS_MAXIMIZEBOX.
Можно такое окно создать и протестировать.

1,038

Re: AHK: Замена "Window Spy"

Я нашёл что у меня нет ComboBoxEx32, ToolbarWindow32, SysHeader32, msctls_hotkey32, SysLink. И не понял для каких классов контролов Const_ImageList и Const_Controls?

Malcev пишет:

Отделение младших битов от старших.

Можешь разжевать, я с битами и байтами так и не подружился. )

Malcev пишет:

Смотри как показывает WinId в ноутпад++.

Показывает только те которые есть.

Malcev пишет:

не является ли окно WS_POPUPWINDOW или WS_OVERLAPPEDWINDOW или WS_CAPTION, если является значит WS_MAXIMIZEBOX.

Опять путаница, до этого мы смотрели чтобы не было ни одного из стилей, теперь смотрим есть ли один из стилей... И почему если у окна есть заголовок, то обязательно должен быть MAXIMIZEBOX?

SetFormat, IntegerFast, h
Gui, -MaximizeBox -MinimizeBox +Caption +HWNDhGui
Gui, Show, w111 h111 x111 yCenter
WinGet, WinStyle, Style, ahk_id %hGui%
MsgBox % WinStyle
ExitApp
По вопросам возмездной помощи пишите письма E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey

1,039

Re: AHK: Замена "Window Spy"

У Const_ImageList стилей нету, там лишь флаги для создания слайдшоу.
https://docs.microsoft.com/en-us/window … -reference
Const_Controls:
https://docs.microsoft.com/en-us/window … rol-styles

serzh82saratov пишет:

я с битами и байтами так и не подружился

https://autoit-script.ru/autoit3_docs/t … itFlag.htm

serzh82saratov пишет:

Показывает только те которые есть.

У меня при наведении на ноутпад++:

Parent Class: Notepad++
Wnd Styles: 0x52302000 = WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_VSCROLL | WS_HSCROLL | 0x2000
Wnd ExStyles: 0x200 = WS_EX_CLIENTEDGE

serzh82saratov пишет:

если у окна есть заголовок, то обязательно должен быть MAXIMIZEBOX?

Если у окна есть WS_POPUPWINDOW или WS_OVERLAPPEDWINDOW или WS_CAPTION, и если у него есть флаг со значением 0x00010000, то это будет WS_MAXIMIZEBOX.

1,040 (изменено: Malcev, 2019-01-06 02:02:46)

Re: AHK: Замена "Window Spy"

Кстати, дополнительные стили присущие только данному типу контрола нужно получать отправляя сообщения.

Gui, Add, ListView, +icon +LV0x2000 +E0x2000  +hwndhwnd
Gui, Show
SendMessage, 0x1037, 0, 0, , % "ahk_id " hwnd  ; LVM_GETEXTENDEDLISTVIEWSTYLE
msgbox % errorlevel

То есть у контрола нужно определять стили, дополнительные стили и дополнительные стили, присущие только данному контролу 3 разными командами.
И для каждого контрола нужно создавать массив из стиля + операций с битами для данного стиля + сравнение с другими присутствующими стилями, который потом парсить и выполнять нужные для каждого стиля действия.

1,041

Re: AHK: Замена "Window Spy"

С ума сойти можно с этими стилями. (

По вопросам возмездной помощи пишите письма E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey

1,042

Re: AHK: Замена "Window Spy"

Я не думал, что так муторно будет.
Вопрос - насколько это необходимо в ahkspy?
Кстати, стили которых на форуме нет:
https://docs.microsoft.com/en-us/window … rol-styles
https://docs.microsoft.com/en-us/window … rol-styles
https://docs.microsoft.com/en-us/window … rol-styles
https://docs.microsoft.com/en-us/window … rol-styles

1,043

Re: AHK: Замена "Window Spy"

Да, не знаю даже, овчинка выделки... Лучше удалить стили и не позорится. Открыл для себя Window Detective, там и стили можно включать, и структура окон и контролов есть, которую давно хотел сделать, а тут приятный и сразу понятный фейс, вообщем всё что сам хотел добавить, но зачем так тужится если всё и так есть, видимо концепции что нибудь по быстрому определить под курсором, и кнопочки понажимать, мне будет достаточно.
Хотя стили может оставить только те, которые "однозначно" определяются, типа Style & WS_CAPTION?

По вопросам возмездной помощи пишите письма E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey

1,044 (изменено: Malcev, 2019-01-06 23:37:49)

Re: AHK: Замена "Window Spy"

У меня window detective не показывает расширенные стили присущие контролу listview.
Пишет об ошибке доступа.

Gui, Add, ListView, +icon +LV0x2000 +E0x2000  +hwndhwnd
Gui, Show

Да и вообще он с багами.
Например здесь он показывает и WS_TABSTOP и WS_MAXIMIZEBOX на edit контролах:

Gui, Add, edit, +0x00C00000 +0x00080000 +0x00010000 w100 h100
Gui, Add, edit, +0x00C00000  w100 h100
Gui, Show, w300 h300

А это неправильно, так как не может быть у флагов одинаковых значений кроме дефалтных нулей + сумма в итоге будет на 0x00010000 больше.
И из второго edit я убрал WS_SYSMENU, а без него WS_MAXIMIZEBOX быть не может, window detective же всё-равно показывает WS_MAXIMIZEBOX.

WS_MAXIMIZEBOX
0x00010000L
The window has a maximize button. Cannot be combined with the WS_EX_CONTEXTHELP style. The WS_SYSMENU style must also be specified.

https://docs.microsoft.com/en-us/window … dow-styles
Майкрософтский WinSpy++ и другие утилиты (WinId, WinSpy++) показывают WS_TABSTOP.
Так что, наверное, принято считать, что у дочернего окна не может быть WS_MAXIMIZEBOX.
Насчет ShkSpy, тут либо вообще определение стилей из него убирать (из окна тоже), либо доводить всё до ума, беря во внимание контролы.
Так как сейчас он показывает неправильно ни там ни там.
Но лично мне копаться в них уже неинтересно.
Как это работает я понял, а вникать в пол-тысячи стилей и изучать как они друг с другом взаимодействуют, желания особого нет.

1,045

Re: AHK: Замена "Window Spy"

Malcev пишет:

У меня window detective не показывает расширенные стили присущие контролу listview.
Пишет об ошибке доступа.

У меня показывает.
http://images.vfl.ru/ii/1546803515/8f68689a/24845311.png

Да и вообще он с багами.

Есть такое, а что без багов да за бесплатно. Мне главное что дерево окон есть.

Насчет ShkSpy, тут либо вообще определение стилей из него убирать (из окна тоже), либо доводить всё до ума, беря во внимание контролы.
Так как сейчас он показывает неправильно ни там ни там.

Оставлю для себя как есть, их и скрыть можно, ты в курсе, а кроме нас всё равно никто не юзает.

Но лично мне копаться в них уже неинтересно.
Как это работает я понял, а вникать в пол-тысячи стилей и изучать как они друг с другом взаимодействуют, желания особого нет.

Тут главное что на примере пришло понимание (у меня частично), может по немногу как нибудь и займусь, может нет.

По вопросам возмездной помощи пишите письма E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey

1,046

Re: AHK: Замена "Window Spy"

serzh82saratov пишет:

кроме нас всё равно никто не юзает

А есть статистика?
Я думаю используют, так как на форуме было несколько вопросов связанных с AhkSpy.
Можно следующим апдейтом отправлять информацию о скачавших.

1,047

Re: AHK: Замена "Window Spy"

Malcev пишет:

Можно следующим апдейтом отправлять информацию о скачавших.

А это как, на гитхабе как то смотреть?

Malcev пишет:

Я думаю используют, так как на форуме было несколько вопросов связанных с AhkSpy

Кроме тебя вопросов и предложений ни от кого не поступает, так что активных пользователей нет, но это и не цель.

По вопросам возмездной помощи пишите письма E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey

1,048

Re: AHK: Замена "Window Spy"

Нужно релиз сделать, тогда можно потом смотреть статистику скачивания релиза.