autohotkey:如何在`InputBox`

时间:2017-10-18 03:24:01

标签: windows window autohotkey

我用

InputBox, height_i, Resize, Height:, , 140, 130

获取输入,然后使用height_i相应地更改窗口大小。

问题是如何区分以下情况:

  • +80,使用当前高度+ 80作为新高度。
  • 80,使用80作为新的高度。
  • -80,使用当前高度 - 80作为新高度。

WinGetActiveStats获取当前高度,将窗口大小设置为WinMove

我目前正在使用

WinMove, ahk_id %window%, , , , , height_i

只能通过绝对高度设置窗口高度。我怎么能按相对高度设置窗口高度,例如+80-80

最初的想法来自Program to resize any window to specific sizes

编辑编辑

实际上我使用更复杂的变体来设置活动窗口的四个(X,Y,宽度,高度)中的一个。请参阅下面的答案。

修改

最后,我使用下面的

#=:: ; set height of active window, `A` for active window
    InputBox, height_i, Resize, Height:, , 140, 130
    first_char := SubStr(height_i, 1, 1)
    if (first_char = "+" or first_char = "-")
    {
        WinGetPos,,,,height, A
        height_i += height
    }
    WinMove, A, , , , , height_i
    return

1 个答案:

答案 0 :(得分:0)

最后,我使用下面的方法来改变活动窗口的四个(X,Y,宽度,高度)中的一个。

[
array([[-0.08758801, -0.20260376,  0.23681498, -0.59153044, -0.26144034,
         0.48446459, -0.02285194,  0.0874517 ,  0.0555284 , -0.14660612,
         0.05574059, -0.14752924],
       [ 0.20496374, -0.4272995 ,  0.07676286, -0.38965166,  0.47710329,
        -0.26640627, -0.33820981, -0.48640659,  0.11153179, -0.01180136,
        -0.52833426,  0.56279379],
       [-0.12849617,  0.2982074 ,  0.38974017, -0.58133346, -0.09883761,
         0.56037289,  0.57482034,  0.08853614,  0.14282584, -0.52498174,
        -0.35414279, -0.49750996]], dtype=float32), array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.], dtype=float32), array([[-0.65539688],
       [-0.58926439],
       [ 0.6232332 ],
       [-0.6493122 ],
       [ 0.57437611],
       [-0.42971158],
       [ 0.66621709],
       [-0.17393446],
       [ 0.57196724],
       [-0.01042461],
       [ 0.32426012],
       [-0.08326346]], dtype=float32), array([ 0.], dtype=float32)]
[array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]], dtype=float32), array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.], dtype=float32), array([[ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.]], dtype=float32), array([ 0.], dtype=float32)]

使用示例
Win = 之后,在输入框中输入以下内容

  • #=:: ; set X/Y/width/height of window, `A` for active window InputBox, new_i, Resize, Height:, , 140, 130 prefix := "" first_char := SubStr(new_i, 1, 1) if (first_char = "x" or first_char = "y" or first_char = "w" or first_char = "h") { prefix := first_char new_i := SubStr(new_i,2) first_char := SubStr(new_i, 1, 1) } if (first_char = "+" or first_char = "-") { if (prefix = "x") WinGetPos,old,,,, A else if (prefix = "y") WinGetPos,,old,,, A else if (prefix = "w") WinGetPos,,,old,, A else WinGetPos,,,,old, A new_i += old } if (prefix = "x") WinMove, A, , new_i, , , else if (prefix = "y") WinMove, A, , , new_i, , else if (prefix = "w") WinMove, A, , , , new_i, else WinMove, A, , , , , new_i return ,将身高设置为800
  • 800,身高增加300
  • +300,身高增加300
  • h+300,将宽度减少300
  • w-100,将X设为300
  • x300,将Y增加200,(向下移动)