我可以在函数中使用“ ifwinexist”作为参数吗?

时间:2018-10-23 11:50:18

标签: autohotkey

请查看下面的代码

;----------------------------------------------------------------
;  INFORMATION
;----------------------------------------------------------------
; Full resolution is 2560 * 1600
; 
; Taskbar is 40 pixels high
;----------------------------------------------------------------
#NoEnv
SetTitleMatchMode, 2

^j::ResizeWin()

ResizeWin()
{
  ifwinexist ahk_exe Chrome.exe                     ;Google Chrome
  DoTheThing(0,0,1280,800)

  ifwinexist ahk_class CommunicatorMainWindowClass  ;Skype
  DoTheThing(0,800,400,760)

  ifwinexist ahk_class rctrl_renwnd32               ;Outlook
  DoTheThing(1280,0,1280,1560)

  ifwinexist ahk_exe WhatsApp.exe                   ;WhattsApp
  DoTheThing(400,800,880,760)
}

DoTheThing(posX = 0, posY = 0, Width = 0, Height = 0)
{
  WinActivate
  WinMove,%WindowID%,,posX,posY,%Width%,%Height%
}

我编写了上面的代码,每当我将打开的窗口拖动到其他位置时,它们都会在桌面上重新排列。目前,这种方法还可以,但是我认为可以通过在函数调用中处理窗口的选择来清理代码。

在我看来,我应该只以的多个实例结束

DoTheThing(posX,posY,Width,Height,Name/class/exe_of_the_window)

并在功能主体中处理激活和移动。 我将如何去做?

1 个答案:

答案 0 :(得分:0)

我认为这是最简单的解决方案:

^j::ResizeWin()

ResizeWin(){
  WinMove, ahk_exe Chrome.exe,, 0,0,1280,800
  WinMove, ahk_class CommunicatorMainWindowClass,, 0,800,400,760
  ; ...
}