Autohotkey if语句不起作用

时间:2016-04-04 20:04:48

标签: autohotkey

我在第8行的if声明无效。即使%{宽度%Msgbox显示3200,我总是得到“宽度不是3200”消息框。将if更改为==并检查“3200”而非3200无效。

我还将if语句放在activeMonitorInfo方法中,并在那里显示相同的行为。

#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.

activeMonitorInfo( X, Y, Width, Height ) 
Msgbox %Width%

if ( %Width% = 3200 ) {
    msgbox "Width is 3200"
    return
} else {
    msgbox "Width is not 3200"
    return
}

activeMonitorInfo( ByRef X, ByRef Y, ByRef Width, ByRef Height )
{
    CoordMode, Mouse, Screen
    MouseGetPos, mouseX , mouseY
    SysGet, monCount, MonitorCount
    Loop %monCount%
    {   
        SysGet, curMon, Monitor, %a_index%
        if ( mouseX >= curMonLeft and mouseX <= curMonRight and mouseY >= curMonTop and mouseY <= curMonBottom ) {
                X      := curMonTop
                y      := curMonLeft
                Height := curMonBottom - curMonTop
                Width  := curMonRight  - curMonLeft
                return
        }
    }
}

1 个答案:

答案 0 :(得分:1)

忽略百分号:

if ( Width = 3200 ) {

相同
if width = 3200
{

相同
if(width=="3200") {

但由于某些原因,if width == 3200if width = "3200"无效。我只是使用上面的第一种方法,没有什么可以出错。

在Ahk中,如果文档明确要求您提供%(或名称,文字,数字等),则只需要value

此外,在文字分配中使用百分号:a = %width%。但是,不是在使用表达式赋值时:a := width