1 (изменено: димитрий2, 2019-09-29 20:08:56)

Тема: AHK: как отобразить "Alt+Tab" на всех мониторах

Здравствуйте, уважаемые специалисты.

Ответьте пожалуйста на вопрос:
Как кодом ahk - отобразить меню переключения окон "Alt+Tab" на всех мониторах, а не только на главном  ?
(Windows 7)

Post's attachments

SAMP.ahk 746.76 kb, 3 downloads since 2019-09-29 

You don't have the permssions to download the attachments of this post.

2

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Можно сделать скриншот Alt-Tab-меню и вывести эту картинку в нужных координатах. Вот код, как сделать скриншот Alt-Tab-меню. Проверял в Windows7.

~!Tab:: ;Срабатывает по нажатию Alt+Tab
WinWait, ahk_class #32771
WinGet, Myhwnd, ID, ahk_class #32771

pToken := Gdip_Startup()
raster := 0x40000000 + 0x00CC0020
bmpHaystack := Gdip_BitmapFromScreen("hwnd:" Myhwnd, raster)
Gdip_SaveBitmapToFile(bmpHaystack, "D:\test.bmp") ;сохраняет картинку в файл (как пример)
Gdip_DisposeImage(bmpHaystack)
Gdip_Shutdown(pToken)
Return

В GDI+ не особо разбираюсь, может кто лучше знает способ.

3

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

ypppu, не работает.
Выдает ошибку при запуске:

"Error: Call to nonexistent function"
И показывает на строку 005:
pToken := Gdip_Startup()

4

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

димитрий2, вас в гугле забанили?

5

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Malcev, нет - не забанили.
Пролистал гугл - ничего по этому поводу не нашел.

6

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Не верю.
Хотя если пролистывать, а не искать, то всякое возможно.

7

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Malcev пишет:

Не верю.

Да я вас уверяю - так и есть - вот ссылка:
https://www.google.com/search?q=Error%3A+Call+to+nonexistent+function&oq=Error%3A+Call+to+nonexistent+function&aqs=chrome..69i57j69i58j69i61j69i60j69i61.610j0j1&sourceid=chrome&ie=UTF-8

Эта проблема довольно многообразная.
У меня ошибка указывает на строку:
pToken := Gdip_Startup()

Так что тут гугл - сомнительный помощник.

8 (изменено: Malcev, 2019-09-29 19:35:21)

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

По первой же ссылке написана причина почему эта ошибка выходит.

ну блин новорожденным понятно же что не найдена функция isDialogOpen() а значит что и не найден SAMP UDF........

https://cheat-master.ru/forum/149-747712-1

9 (изменено: димитрий2, 2019-09-29 20:02:02)

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Malcev, спасибо, что объяснили.
А делать-то что ?
Я имею ввиду - что в коде менять ?

10 (изменено: димитрий2, 2019-09-29 20:09:30)

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Вот я даже скачал SAMP.ahk (прикрепил в первом сообщении)
Но как его подключать или что-то другое с ним делать ?

11

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

А при чем тут samp.ahk?
Вам же пишется, что в вашем коде нету функции pToken := Gdip_Startup(), к которой вы обращаетесь.
Чтобы понять, что такое функции - читайте справку по функциям.

12

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Malcev пишет:

Вам же пишется, что в вашем коде нету функции pToken := Gdip_Startup(), к которой вы обращаетесь.

Слушайте - сам модератор написал, что :

ypppu пишет:

Вот код, как сделать скриншот Alt-Tab-меню. Проверял в Windows7.

То есть у него-то запустилось.

13

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Значит у модератора библиотека с этой функцией имеется.
Почему вы так упорствуете с прочтением справки, где эти вопросы описываются?

14

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

димитрий2, в моём примере используется библиотека GDI+ (она же GDIP). Что такое GDI+, где её брать - на нашем форуме многократно обсуждалось. Поиск в помощь.
Что такое библиотека и куда её помещать - есть в русском переводе справки.

15

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

ypppu, я скачал и подключил библиотеку Gdip.ahk
Теперь ваш код выглядит вот так:


#include Gdip_All.ahk

~!Tab:: ;Срабатывает по нажатию Alt+Tab
WinWait, ahk_class #32771
WinGet, Myhwnd, ID, ahk_class #32771

;pToken := Gdip_Startup()
raster := 0x40000000 + 0x00CC0020
bmpHaystack := Gdip_BitmapFromScreen("hwnd:" Myhwnd, raster)
Gdip_SaveBitmapToFile(bmpHaystack, "D:\test.bmp") ;сохраняет картинку в файл (как пример)
Gdip_DisposeImage(bmpHaystack)
Gdip_Shutdown(pToken)
Return

Запускаю скрипт - и он висит в трее.
А дальше что делать ?

Жму Альт+Таб, но ничего не происходит.
Вроде бы по логике кода - должен где-то скриншот появиться... но что-то вот нигде ничего не появляется.

16

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Путь сохранения файла: "D:\test.bmp". Если на компьютере нет диска D:\ , то пропишите здесь какой-нибудь другой путь.

Строку #include Gdip_All.ahk можно было не добавлять, если положить библиотеку в папку "Lib" (которую нужно создать внутри папки "AutoHotkey" - туда, где программа установлена).

17

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

ypppu пишет:

Путь сохранения файла: "D:\test.bmp".

Это я понял, но ведь - там же ничего не появляется.

18

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Сравните свой код с кодом ypppu и сделайте выводы почему там ничего не появляется.

ypppu пишет:

В GDI+ не особо разбираюсь, может кто лучше знает способ.

http://forum.script-coding.com/viewtopi … 17#p109217

19

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Malcev пишет:

Сравните свой код с кодом ypppu

Так это один и тот же код.
Что сравнивать-то ?

20

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Не один и тот же.
Сравнивайте построчно.

21

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Malcev пишет:

Не один и тот же.

Да нет, именно - один и тот же.
Malcev, я скопировал этот скрипт при помощи Ctrl+C Ctrl+V
А затем запустил.

22

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Если ваш код выглядит так, как код под сообщением 15, то вы еще зачем-то закомментировали нужную строку кода.

23

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Malcev пишет:

зачем-то закомментировали нужную строку кода

Разумеется при запуске я раскомментировал эту строчку.
Вот так выглядит код:

#include Gdip_All.ahk

~!Tab:: ;Срабатывает по нажатию Alt+Tab
WinWait, ahk_class #32771
WinGet, Myhwnd, ID, ahk_class #32771

pToken := Gdip_Startup()
raster := 0x40000000 + 0x00CC0020
bmpHaystack := Gdip_BitmapFromScreen("hwnd:" Myhwnd, raster)
Gdip_SaveBitmapToFile(bmpHaystack, "D:\test.bmp") ;сохраняет картинку в файл (как пример)
Gdip_DisposeImage(bmpHaystack)
Gdip_Shutdown(pToken)
Return

Он никаких рисунков по указанному адресу - не сохраняет.
Ни при запуске, ни при нажатии Alt+Tab

24

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Тогда проверяйте, где у вас зависает скрипт - доходит ли он до получения хендла окна, получает ли он правильный хэндл окна.
Погуглите использованные вами функции, посмотрите что должны возвращать и что возвращают, проверьте их на ErrorLevel.

25

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

димитрий2 пишет:

я скачал и подключил библиотеку Gdip.ahk

димитрий2 пишет:
#include Gdip_All.ahk

Не замечаете противоречия?

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

26 (изменено: димитрий2, 2019-10-03 20:26:47)

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

teadrinker, это та же самая библиотека.
Теперь я скачал с того же сайта и подключил библиотеку Gdip.ahk - по прежнему на Alt+Tab не реагирует и ничего по указанному адресу не сохраняет.

27

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

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

28

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Malcev, вот же написали.

ypppu пишет:

Вот код, как сделать скриншот Alt-Tab-меню. Проверял в Windows7.

Как я понимаю - скрипт рабочий.
Вот я и спрашиваю - почему не работает.

29

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Может у него бейсик версия, а у вас аэро или наоборот.
Я ж говорю, вам надо самому проверять почему у вас не работает.

30

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

У меня AutoHotkey Unicode 64-bit 1.1.30.03. Windows 7 без аэро (классическая тема). Хотя, кажется, меню Alt-Tab имеет ahk_class #32771 и в других версиях форточек.

31

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

У меня стоит самая последняя версия: AutoHotkey Version 1.1.31.00.
Также  Windows 7 без аэро (классическая тема)

После нажатия Alt-Tab  ничего не происходит.
Никакого фотофайла по адресу "D:\test.bmp" - не появляется.

32

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Зайдите в папку AutoHotkey, создаёте в ней подпапку Lib. В Lib закиньте файл GDIP.ahk.
Потом запустите вот такой скрипт:

~!Tab:: ;Срабатывает по нажатию Alt+Tab
WinWait, ahk_class #32771
WinGet, Myhwnd, ID, ahk_class #32771
MsgBox,  3%Myhwnd%2

и напишите, что было написано в MsgBox.

33

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

ypppu пишет:

напишите, что было написано в MsgBox.

Все сделал как написано.
Не появляется MsgBox.

34

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

А Вы нажимали Alt+Tab ?

35

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

ypppu пишет:

А Вы нажимали Alt+Tab ?

Разумеется нажимал.
При нажатии Alt+Tab ничего не происходит. (Разве что окна можно переключать таким образом.)

36

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Похоже на то, что у Вашего Alt-Tab-меню класс окна отичается от #32771. Попробуйте узнать его, воспользовавшись AhkSpy от serzh82saratov.

37

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

ypppu, я использовал данную программу и при нажатии Alt+Tab на окне выводится вот такой результат:
https://b.radikal.ru/b11/1910/2b/b124b7d1e0b4.jpg

38

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

димитрий2, а вы понимаете, что делает этот код?

~!Tab:: ;Срабатывает по нажатию Alt+Tab
WinWait, ahk_class #32771
WinGet, Myhwnd, ID, ahk_class #32771
MsgBox,  3%Myhwnd%2

39

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

По картинке видно, что AhkSpy находилась в режиме Button. А класс окна надо смотреть в режиме Window.

40

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

ypppu пишет:

А класс окна надо смотреть в режиме Window.

Вот что показывает в режиме Window:
https://a.radikal.ru/a22/1910/75/a001ec5872ed.jpg

41

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Что-то не сходится. https://i.smiles2k.net/aiwan_smiles/meeting.gif

димитрий2 пишет:

У меня стоит самая последняя версия: AutoHotkey Version 1.1.31.00.
Также  Windows 7 без аэро (классическая тема)

После нажатия Alt-Tab  ничего не происходит.


42 (изменено: димитрий2, 2019-10-17 03:38:02)

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

ypppu, если верить тому что написано в свойствах моей ОС - то у меня стоит Windows 7 Ultimate, Service Pack 1 (64x)  (а не виндоус 8)

43

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Попробуйте использовать код из 2 сообщения, заменив #32771 на TaskSwitcherWnd.

44

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Да, в Windows 7 есть окно Alt-Tab-меню с классом TaskSwitcherWnd. Но, блин, это либо упрощённый стиль, либо аэро. А я выше написал, что мой скрипт работает при классической теме.

45

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

ypppu пишет:

Попробуйте использовать код из 2 сообщения, заменив #32771 на TaskSwitcherWnd.

Заменил.
Не работает.
Никаких картинок по указанному адресу не появляется.

ypppu пишет:

Но, блин, это либо упрощённый стиль, либо аэро. А я выше написал, что мой скрипт работает при классической теме.

Поставил классическую схему.
Не работает.
По указанному адресу - картинка не появляется.

46

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

C классической не нужно заменять #32771 на TaskSwitcherWnd - должен просто заработать код из 2го сообщения.

47

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

ypppu пишет:

C классической не нужно заменять #32771 на TaskSwitcherWnd - должен просто заработать код из 2го сообщения.

Я же уже написал в предпоследнем сообщении, что заменил.
Не работает.

48

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

димитрий2,на текущем уровне ваших знаний автохотки задача неразрешима.
Так что смиритесь.

49

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Malcev, при чем тут уровень моих знаний ?

Человек пишет - запускайте код и приводит код.
Я запускаю этот код - он не работает.

50 (изменено: Malcev, 2019-10-20 22:47:57)

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

димитрий2 пишет:

Malcev, при чем тут уровень моих знаний ?

При том, что если бы вместо того, чтобы канючить, вы взяли и изучили справку, то сами бы разобрались почему у вас код не работает.

51

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Malcev пишет:

вместо того, чтобы канючить

Это - неконструктивный подход.
Лучше внесите свое предложение - как заставить скрипт работать (он же вроде бы рабочий).

52

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Вношу.
Оплатите работу специалистов.

53

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Помогите.

54

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Друзья, не оставьте в беде.

55

Re: AHK: как отобразить "Alt+Tab" на всех мониторах

Все, что вы сможете добиться таким поведением, так это бана.