Тема: AHK: как отобразить "Alt+Tab" на всех мониторах
Здравствуйте, уважаемые специалисты.
Ответьте пожалуйста на вопрос:
Как кодом ahk - отобразить меню переключения окон "Alt+Tab" на всех мониторах, а не только на главном ?
(Windows 7)
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Здравствуйте, уважаемые специалисты.
Ответьте пожалуйста на вопрос:
Как кодом ahk - отобразить меню переключения окон "Alt+Tab" на всех мониторах, а не только на главном ?
(Windows 7)
Можно сделать скриншот 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+ не особо разбираюсь, может кто лучше знает способ.
ypppu, не работает.
Выдает ошибку при запуске:
"Error: Call to nonexistent function"
И показывает на строку 005:
pToken := Gdip_Startup()
димитрий2, вас в гугле забанили?
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()
Так что тут гугл - сомнительный помощник.
По первой же ссылке написана причина почему эта ошибка выходит.
ну блин новорожденным понятно же что не найдена функция isDialogOpen() а значит что и не найден SAMP UDF........
Malcev, спасибо, что объяснили.
А делать-то что ?
Я имею ввиду - что в коде менять ?
Вот я даже скачал SAMP.ahk (прикрепил в первом сообщении)
Но как его подключать или что-то другое с ним делать ?
А при чем тут samp.ahk?
Вам же пишется, что в вашем коде нету функции pToken := Gdip_Startup(), к которой вы обращаетесь.
Чтобы понять, что такое функции - читайте справку по функциям.
Вам же пишется, что в вашем коде нету функции pToken := Gdip_Startup(), к которой вы обращаетесь.
Слушайте - сам модератор написал, что :
Вот код, как сделать скриншот Alt-Tab-меню. Проверял в Windows7.
То есть у него-то запустилось.
Значит у модератора библиотека с этой функцией имеется.
Почему вы так упорствуете с прочтением справки, где эти вопросы описываются?
димитрий2, в моём примере используется библиотека GDI+ (она же GDIP). Что такое GDI+, где её брать - на нашем форуме многократно обсуждалось. Поиск в помощь.
Что такое библиотека и куда её помещать - есть в русском переводе справки.
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
Запускаю скрипт - и он висит в трее.
А дальше что делать ?
Жму Альт+Таб, но ничего не происходит.
Вроде бы по логике кода - должен где-то скриншот появиться... но что-то вот нигде ничего не появляется.
Путь сохранения файла: "D:\test.bmp". Если на компьютере нет диска D:\ , то пропишите здесь какой-нибудь другой путь.
Строку #include Gdip_All.ahk можно было не добавлять, если положить библиотеку в папку "Lib" (которую нужно создать внутри папки "AutoHotkey" - туда, где программа установлена).
Путь сохранения файла: "D:\test.bmp".
Это я понял, но ведь - там же ничего не появляется.
Сравните свой код с кодом ypppu и сделайте выводы почему там ничего не появляется.
В GDI+ не особо разбираюсь, может кто лучше знает способ.
Сравните свой код с кодом ypppu
Так это один и тот же код.
Что сравнивать-то ?
Не один и тот же.
Сравнивайте построчно.
Не один и тот же.
Да нет, именно - один и тот же.
Malcev, я скопировал этот скрипт при помощи Ctrl+C Ctrl+V
А затем запустил.
Если ваш код выглядит так, как код под сообщением 15, то вы еще зачем-то закомментировали нужную строку кода.
зачем-то закомментировали нужную строку кода
Разумеется при запуске я раскомментировал эту строчку.
Вот так выглядит код:
#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
Тогда проверяйте, где у вас зависает скрипт - доходит ли он до получения хендла окна, получает ли он правильный хэндл окна.
Погуглите использованные вами функции, посмотрите что должны возвращать и что возвращают, проверьте их на ErrorLevel.
я скачал и подключил библиотеку Gdip.ahk
#include Gdip_All.ahk
Не замечаете противоречия?
teadrinker, это та же самая библиотека.
Теперь я скачал с того же сайта и подключил библиотеку Gdip.ahk - по прежнему на Alt+Tab не реагирует и ничего по указанному адресу не сохраняет.
Ну я ж написал, что надо делать.
Если вы по каким-то причинам этим заниматься не хотите, то можете нанять фрилансера, который всё сделает за вас.
Malcev, вот же написали.
Вот код, как сделать скриншот Alt-Tab-меню. Проверял в Windows7.
Как я понимаю - скрипт рабочий.
Вот я и спрашиваю - почему не работает.
Может у него бейсик версия, а у вас аэро или наоборот.
Я ж говорю, вам надо самому проверять почему у вас не работает.
У меня AutoHotkey Unicode 64-bit 1.1.30.03. Windows 7 без аэро (классическая тема). Хотя, кажется, меню Alt-Tab имеет ahk_class #32771 и в других версиях форточек.
У меня стоит самая последняя версия: AutoHotkey Version 1.1.31.00.
Также Windows 7 без аэро (классическая тема)
После нажатия Alt-Tab ничего не происходит.
Никакого фотофайла по адресу "D:\test.bmp" - не появляется.
Зайдите в папку AutoHotkey, создаёте в ней подпапку Lib. В Lib закиньте файл GDIP.ahk.
Потом запустите вот такой скрипт:
~!Tab:: ;Срабатывает по нажатию Alt+Tab
WinWait, ahk_class #32771
WinGet, Myhwnd, ID, ahk_class #32771
MsgBox, 3%Myhwnd%2
и напишите, что было написано в MsgBox.
напишите, что было написано в MsgBox.
Все сделал как написано.
Не появляется MsgBox.
А Вы нажимали Alt+Tab ?
А Вы нажимали Alt+Tab ?
Разумеется нажимал.
При нажатии Alt+Tab ничего не происходит. (Разве что окна можно переключать таким образом.)
Похоже на то, что у Вашего Alt-Tab-меню класс окна отичается от #32771. Попробуйте узнать его, воспользовавшись AhkSpy от serzh82saratov.
ypppu, я использовал данную программу и при нажатии Alt+Tab на окне выводится вот такой результат:
димитрий2, а вы понимаете, что делает этот код?
~!Tab:: ;Срабатывает по нажатию Alt+Tab
WinWait, ahk_class #32771
WinGet, Myhwnd, ID, ahk_class #32771
MsgBox, 3%Myhwnd%2
По картинке видно, что AhkSpy находилась в режиме Button. А класс окна надо смотреть в режиме Window.
А класс окна надо смотреть в режиме Window.
Вот что показывает в режиме Window:
Что-то не сходится.
У меня стоит самая последняя версия: AutoHotkey Version 1.1.31.00.
Также Windows 7 без аэро (классическая тема)После нажатия Alt-Tab ничего не происходит.
ypppu, если верить тому что написано в свойствах моей ОС - то у меня стоит Windows 7 Ultimate, Service Pack 1 (64x) (а не виндоус 8)
Попробуйте использовать код из 2 сообщения, заменив #32771 на TaskSwitcherWnd.
Да, в Windows 7 есть окно Alt-Tab-меню с классом TaskSwitcherWnd. Но, блин, это либо упрощённый стиль, либо аэро. А я выше написал, что мой скрипт работает при классической теме.
Попробуйте использовать код из 2 сообщения, заменив #32771 на TaskSwitcherWnd.
Заменил.
Не работает.
Никаких картинок по указанному адресу не появляется.
Но, блин, это либо упрощённый стиль, либо аэро. А я выше написал, что мой скрипт работает при классической теме.
Поставил классическую схему.
Не работает.
По указанному адресу - картинка не появляется.
C классической не нужно заменять #32771 на TaskSwitcherWnd - должен просто заработать код из 2го сообщения.
C классической не нужно заменять #32771 на TaskSwitcherWnd - должен просто заработать код из 2го сообщения.
Я же уже написал в предпоследнем сообщении, что заменил.
Не работает.
димитрий2,на текущем уровне ваших знаний автохотки задача неразрешима.
Так что смиритесь.
Malcev, при чем тут уровень моих знаний ?
Человек пишет - запускайте код и приводит код.
Я запускаю этот код - он не работает.
Malcev, при чем тут уровень моих знаний ?
При том, что если бы вместо того, чтобы канючить, вы взяли и изучили справку, то сами бы разобрались почему у вас код не работает.
вместо того, чтобы канючить
Это - неконструктивный подход.
Лучше внесите свое предложение - как заставить скрипт работать (он же вроде бы рабочий).
Вношу.
Оплатите работу специалистов.
Помогите.
Друзья, не оставьте в беде.
Все, что вы сможете добиться таким поведением, так это бана.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться