Page 1 of 1

请问如何检测最后按下的键并执行相应操作?

Posted: 21 Dec 2018, 09:17
by willpangela

Code: Select all

#InstallKeybdHook

#InstallmouseHook

sleep 2222

if A_priorkey != lbutton or A_priorkey != enter

    exitapp

msgbox you confirmed


鼠标左击或者按回车提示已确认,不过我写的这个代码不管用,永远都是在if里面就退出了,希望高手指点迷津,谢谢!

Moderator Note: Added code tags. ~ sinkfaze

Re: 请问如何检测最后按下的键并执行相应操作?  Topic is solved

Posted: 22 Dec 2018, 09:54
by tmplinshi
有两个错误。

1. if 语法错误

AHK 中的 if 有两种写法。
  1. 第一种就是你代码中那样,这是 AHK 1.0.x 旧版本遗留下来的写法。

    Code: Select all

    if A_priorkey != lbutton or A_priorkey != enter
    但是这句代码并不是你以为的那样,它的意思其实是:如果 A_priorkey 不等于 lbutton or A_priorkey != enter。可运行以下代码验证一下就知道了:

    Code: Select all

    s := "lbutton or s = enter"
    if s = lbutton or s = enter
    	msgbox 是的,s 等于【lbutton or s = enter】
  2. 第二种写法: if (表达式),这是推荐的写法

    Code: Select all

    if (A_priorkey != "lbutton") or (A_priorkey != "enter")
2. if 逻辑错误

你那句 if 应该改成 and

Code: Select all

#InstallKeybdHook
#InstallmouseHook

sleep 2222

if (A_priorkey != "lbutton") and (A_priorkey != "enter")
	exitapp

msgbox you confirmed

Re: 请问如何检测最后按下的键并执行相应操作?

Posted: 22 Dec 2018, 10:48
by willpangela
tmplinshi wrote:
22 Dec 2018, 09:54
有两个错误。

1. if 语法错误

AHK 中的 if 有两种写法。
  1. 第一种就是你代码中那样,这是 AHK 1.0.x 旧版本遗留下来的写法。

    Code: Select all

    if A_priorkey != lbutton or A_priorkey != enter
    但是这句代码并不是你以为的那样,它的意思其实是:如果 A_priorkey 不等于 lbutton or A_priorkey != enter。可运行以下代码验证一下就知道了:

    Code: Select all

    s := "lbutton or s = enter"
    if s = lbutton or s = enter
    	msgbox 是的,s 等于【lbutton or s = enter】
  2. 第二种写法: if (表达式),这是推荐的写法

    Code: Select all

    if (A_priorkey != "lbutton") or (A_priorkey != "enter")
2. if 逻辑错误

你那句 if 应该改成 and

Code: Select all

#InstallKeybdHook
#InstallmouseHook

sleep 2222

if (A_priorkey != "lbutton") and (A_priorkey != "enter")
	exitapp

msgbox you confirmed

感谢回复