Как я устанавливаю действие для инициирования каждый раз, когда новое окно открывается в автогорячей клавише? Например, я мог установить любое окно Windows Explorer, которое будет отмечено как "Поверх остальных окон", как только оно подходит. Или я мог установить любые новые окна Skype, чтобы всегда открыться на втором мониторе или всегда быть полупрозрачным, и т.д...
Я думаю, что автогорячая клавиша может достигнуть этого, но я не знаю как. Мне нужен он для выполнения некоторого произвольного действия с новым окном, как только это подходит.
AutoHotkey является вне вращения, созданным специально для горячих клавиш...
Вы могли бы хотеть попробовать исходный AutoIt вместо этого, он имеет много функций автоматизации, включая события окна!
Более конкретный, можно найти сценарий здесь, который отслеживает окна и действует на новые окна.
#include <Array.au3>
; Initialize tracking arrays
Global $avWinListPrevious[1][2] = [[0, ""]], $avWinListCurrent
; Monitor unique window handles
While 1
$avWinListCurrent = WinList("[REGEXPTITLE:.+[ \- ]GIMP]", "GNU Image Manipulation Program")
For $n = $avWinListCurrent[0][0] To 1 Step -1
; Check has title and visible
If ($avWinListCurrent[$n][0] <> "") And BitAND(WinGetState($avWinListCurrent[$n][1]), 2) Then
; Check for already seen
$fFound = False
For $i = 1 To $avWinListPrevious[0][0]
If $avWinListCurrent[$n][1] = $avWinListPrevious[$i][1] Then
$fFound = True
ExitLoop
EndIf
Next
; New window found
If Not $fFound Then
WinMove("[REGEXPTITLE:.+[ \- ]GIMP]", "GNU Image Manipulation Program", 169, 0, 893, 771 )
EndIf
Else
_ArrayDelete($avWinListCurrent, $n)
EndIf
Next
$avWinListCurrent[0][0] = UBound($avWinListCurrent) - 1
$avWinListPrevious = $avWinListCurrent
Sleep(500)
WEnd