1

Тема: AHK: Клик по программе в панели задач

Здравствуйте. Помогите в создании AHK для клика по программе с  определённым именем (например AkelPad) на панели задач. Спасибо.

Post's attachments

1.png
1.png 4.06 kb, 1 downloads since 2017-04-07 

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

2

Re: AHK: Клик по программе в панели задач

Рискну предположить, что конечной целью являются манипуляции с окном свернуть/развернуть. В таком случае в AutoHotkey предусмотрены более простые и надёжные команды, чем непосредственно щелки по кнопкам в панели задач: WinMaximizeWinMinimize, WinRestore.

3

Re: AHK: Клик по программе в панели задач

ImageSearch.

4

Re: AHK: Клик по программе в панели задач

ypppu, не всё так просто. Программа, для которой нужен AHK, запускается в нужном мне виде только кликом из панели задач.

5

Re: AHK: Клик по программе в панели задач

Так:

#NoEnv
#WinActivateForce
#SingleInstance Force

SetWorkingDir %A_ScriptDir%
CoordMode, Mouse
SendMode Input
SetTitleMatchMode 2
SetControlDelay 1
SetWinDelay 0
SetKeyDelay -1
SetMouseDelay -1
SetBatchLines -1

array := ["C:\Users\Azbooka_2\Pictures\Pictures.PNG"] ; тут добавляешь свой путь к скриншоту

Loop % Array.MaxIndex()
{
    MouseGetPos, xpos, ypos 
    CoordMode, Pixel
    ImageSearch, x, y, 0, 0, A_ScreenWidth, A_ScreenHeight, % array [A_Index]
    If ErrorLevel = 0
    Click %x%, %y%
    MouseMove, xpos, ypos
    if ErrorLevel = 0
    ExitApp
}
return

6

Re: AHK: Клик по программе в панели задач

p.polena пишет:

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

А что происходит при WinRestore?
ImageSearch в данном случае использовать непрактично.

7

Re: AHK: Клик по программе в панели задач

Что же такого в этом способе нереального? Ведь вроде нужен просто клик, а не свернуть/развернуть окно.

8

Re: AHK: Клик по программе в панели задач

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

PostMessage, 0x112, 0xF120,,, WinTitle, WinText  ; 0x112 = WM_SYSCOMMAND, 0xF120 = SC_RESTORE

9 (изменено: p.polena, 2017-04-08 02:04:52)

Re: AHK: Клик по программе в панели задач

svoboden, спасибо. Работает. Malcev, в exe программы такое:

+ открыть спойлер

object fmMain: TfmMain
  Left = 580
  Top = 0
  Caption = 'Program'
  ClientHeight = 826
  ClientWidth = 1012
  Color = clBtnFace
  Constraints.MinHeight = 500
  Constraints.MinWidth = 700
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  Menu = MainMenu
  OldCreateOrder = False
  Position = poDesigned
  WindowState = wsMaximized
  OnCloseQuery = FormCloseQuery
  OnCreate = FormCreate

Пока не заменишь WindowState = wsMaximized на Minimized (запуск свёрнутым) не даёт сделать ClientWidth (ширину) менее 1024. А мне нужно 1012.

10

Re: AHK: Клик по программе в панели задач

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


hwnd := WinExist("ahk_class CalcFrame ahk_exe calc.exe")
DummyActivateTab(hwnd)
Return

DummyActivateTab(Hwnd) {
	IID_ITaskbarList  := "{56FDF342-FD6D-11d0-958A-006097C9A090}"
	CLSID_TaskbarList := "{56FDF344-FD6D-11d0-958A-006097C9A090}"
	tbl := ComObjCreate(CLSID_TaskbarList, IID_ITaskbarList)
	DLLVar := NumGet(NumGet(tbl+0), 3 * A_PtrSize)  ;	HrInit
	DllCall(DLLVar, "ptr", tbl)
	DLLVar := NumGet(NumGet(tbl+0), 6 * A_PtrSize)  ;	ActivateTab
	DllCall(DLLVar, "ptr", tbl, "ptr", Hwnd)
	ObjRelease(tbl)
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11 (изменено: teadrinker, 2017-04-08 02:14:17)

Re: AHK: Клик по программе в панели задач

Через Accessible можно. В смысле, не по хэндлу, а по тексту, как нужно ТС.

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

12

Re: AHK: Клик по программе в панели задач

Наверное можно и без Accessible.
http://w-shadow.com/blog/2006/10/01/man … ar-buttons
Но у меня перевести этот алгоритм на ahk не получилось.
p.polena, я так и не понял, что у вас происходит по клику по минимизированному окну и почему вы не можете заменить этот клик на код из 8 поста?
Что за программа, если не секрет?

13

Re: AHK: Клик по программе в панели задач

Malcev пишет:

Наверное можно и без Accessible.
http://w-shadow.com/blog/2006/10/01/man … ar-buttons
Но у меня перевести этот алгоритм на ahk не получилось.

Начало прочитай:

Most information given here is applicable only to Windows XP

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

14

Re: AHK: Клик по программе в панели задач

Читал.
Поэтому и написал - "Наверное можно".
Правда, дальше получения хендла окна с иконками программ у меня не пошло:

taskmsn := dllcall("GetTaskmanWindow")

В конце-концов если есть твикер, то почему такое же нельзя написать и на автохотки?
http://rammichael.com/7-taskbar-tweaker

15

Re: AHK: Клик по программе в панели задач

А там разве можно координаты кнопки получить?

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

16

Re: AHK: Клик по программе в панели задач

p.polena пишет:

Пока не заменишь WindowState = wsMaximized на Minimized (запуск свёрнутым) не даёт сделать ClientWidth (ширину) менее 1024. А мне нужно 1012.

Свойства окна тоже стандартными командами меняются.

17

Re: AHK: Клик по программе в панели задач

Malcev пишет:

p.polena, я так и не понял, что у вас происходит по клику по минимизированному окну и почему вы не можете заменить этот клик на код из 8 поста?

   Malcev, действительно ваш код практичней. И главное, что нет зависимости от скриншота.
   Спасибо всем!

18 (изменено: Malcev, 2017-04-08 23:18:25)

Re: AHK: Клик по программе в панели задач

teadrinker пишет:

А там разве можно координаты кнопки получить?

Про координаты ничего не написано, но количество кнопок, их очередность и хендлы судя по апи можно:
https://gist.github.com/RaMMicHaeL/847458fcc75de83b36ed
Наверное есть какие-то недокумментированные возможности типа этого:

WinHide, % "ahk_id " DllCall("GetTaskmanWindow")
sleep 2000
WinShow, % "ahk_id " DllCall("GetTaskmanWindow")

19

Re: AHK: Клик по программе в панели задач

Malcev пишет:

В конце-концов если есть твикер, то почему такое же нельзя написать и на автохотки?
http://rammichael.com/7-taskbar-tweaker

Походив по ссылкам вроде бы сюда приводит.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

20

Re: AHK: Клик по программе в панели задач

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