1

Тема: AHK: Доступ к контекстному меню

Как можно вызвать пункт контекстного меню проводника (ahk_class #32768) что бы сменить вид файлов (например на список id 31006). Естественно не симулируя клавиши
Для обычного окна проводника  отлично работает этот код


#Numpad1::PostMessage, 0x111, 28747,,ShellTabWindowClass1, ahk_class CabinetWClass ; Таблица
#Numpad2::PostMessage, 0x111, 28751,,ShellTabWindowClass1, ahk_class CabinetWClass ; Крупные значки
#Numpad3::PostMessage, 0x111, 28749,,ShellTabWindowClass1, ahk_class CabinetWClass ; Огромные значки

Нашел в глубинах интернета эту тему - https://autohotkey.com/board/topic/96655-changing-folder-view-to-detail/

 
F10::
ControlGet, ctrlid,hwnd,, SysListView321, A
ControlGet,hwnd_child,hwnd,,,ahk_id %ctrlid% 
parent:=DllCall("GetParent","UInt",hwnd_child) 
PostMessage,0x111,0x702c,0,,ahk_id %parent%  ;set listview mode detail
sleep 20
PostMessage, 0x111, 30213,,, ahk_id %parent% ; sort Date modified
sleep 20
PostMessage, 0x111, 30213,,, ahk_id %parent% ; to get sort reversed 
return

Но он не везде срабатывает. Дело  в том, что разные программы открывают вроде как разный подвиды окон (Open/ Save/ Save as )
Например блокнот при сохранении открывает один, а фотошоп другой. В блокноте  скрипт сработал, в Фотошопе нет.

Кроме того у меня "sort Date modified" и " to get sort reversed" вообще нигде не работают - но это и не важно.

Чтоб было понятно о чем речь, что я хочу "нажать" желательно без вызова на экран (чтоб не мельтешило, "прямой" командой)
Я так понимаю надо из "родителя" (главное окно ahk_class #32770) вызвать "ребенка" ? 
Я в принципе хочу понять как оно работает.

https://habrastorage.org/webt/vx/pg/kg/vxpgkgn27duij6ncpsvce6ilu04.png

2

Re: AHK: Доступ к контекстному меню

Вызвать пункт контекстного меню окна другого приложения (не проводника) — думаю, это утопия. Я бы действовал по тому же принципу (PostMessage). Возможно, там просто другие MenuID (второй параметр команды). Их можно отследить с помощью инструмента типа Spy++, или любого, который может перехватывать оконные сообщения.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

3

Re: AHK: Доступ к контекстному меню

По моему там нет сообщений.


1::
	ViewMode := 3
	hWnd := WinExist("A")
	shell := ComObjCreate("Shell.Application")
	Loop, % shell.Windows.Count  {
		If ( (win := shell.Windows.Item(A_Index-1)).hWnd != hWnd )
			Continue
		sFolder := win.Document
		If (sFolder.CurrentViewMode != ViewMode)
			sFolder.CurrentViewMode := ViewMode
		Return 
	}
	Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

4

Re: AHK: Доступ к контекстному меню

Спасибо разобрался!
https://habrastorage.org/webt/4u/jp/hm/4ujphmxy5jlz14o-uwz25kzmjrk.png

F2::
ControlGet, ctrlid,hwnd,, SysListView321, A
ControlGet,hwnd_child,hwnd,,,ahk_id %ctrlid% 
parent:=DllCall("GetParent","UInt",hwnd_child) 
PostMessage,0x111,28747,0,,ahk_id %parent%  ;set listview mode detail
PostMessage,0x111,30210,0,,ahk_id %parent%  ;set listview mode detail

return

F3::
ControlGet, ctrlid,hwnd,, DirectUIHWND2, A
ControlGet,hwnd_child,hwnd,,,ahk_id %ctrlid% 
parent:=DllCall("GetParent","UInt",hwnd_child) 
PostMessage,0x111,28747,0,,ahk_id %parent%  ;set listview mode detail
PostMessage,0x111,30210,0,,ahk_id %parent%  ;set listview mode detail

return

F2 в одном виде окон, F3 в другом.

5

Re: AHK: Доступ к контекстному меню

На 10 сообщений из проводника нет.
А метод из 3 поста в семёрке не работает?

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

6

Re: AHK: Доступ к контекстному меню

serzh82saratov пишет:

1::

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

7 (изменено: Utopia, 2020-05-21 18:31:12)

Re: AHK: Доступ к контекстному меню

У меня не сработал

Я только что запустил твой код, из него не вышел, после чего не понимал почему введенный пароль в пейпал не проходит.

8

Re: AHK: Доступ к контекстному меню

Malcev
Другие под левой рукой заняты.

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

9

Re: AHK: Доступ к контекстному меню

На 10 сообщений из проводника нет.

Прошу прощения - а битность совпадает? у меня сработал только spyxx_amd64.exe -
spyxx.exe - ничего не показывал...

10

Re: AHK: Доступ к контекстному меню

Да, дело было в битности. Но сообщения 0x111 у меня нет.

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

11

Re: AHK: Доступ к контекстному меню

А всё ок, были непонятки  с фильтрами сообщений.
У меня работает без сообщения с 30210.

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