[AHK-] IF ELSE 裡可以使用變數判斷按下次數嗎?

看板EzHotKey作者 (Keep The Faith)時間8年前 (2016/06/19 11:09), 編輯推噓4(4028)
留言32則, 2人參與, 最新討論串1/2 (看更多)
原本ELECOM滑鼠的軟體就有能自訂按鍵功能 我設定了兩個按鍵,用做放大鏡的開啟及關閉 按鍵5: Win + Numpad+ 按鍵6: Win + Esc 但微軟滑鼠的軟體只用一鍵就能做到 剛開始查看AHK的資料 想問看看能不能寫成單用按鍵5就行 例如 Bool bClicked = FALSE; LBUTTON: IF bClicked == FALSE THEN bClicked = TRUE; Win + Numpad+; ELSE bClicked = FALSE; Win + Esc; ENDIF -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.234.119.249 ※ 文章網址: https://www.ptt.cc/bbs/EzHotKey/M.1466305767.A.035.html

06/19 11:50, , 1F
按鍵5::
06/19 11:50, 1F

06/19 11:50, , 2F
if t := !t
06/19 11:50, 2F

06/19 11:50, , 3F
send 1
06/19 11:50, 3F

06/19 11:50, , 4F
else
06/19 11:50, 4F

06/19 11:51, , 5F
send 2
06/19 11:51, 5F

06/19 11:51, , 6F
return
06/19 11:51, 6F

06/20 01:18, , 7F
if後面要直接用變數的話不是要用誇號誇起來嗎?
06/20 01:18, 7F

06/20 01:18, , 8F
用:=不會跑起來怪怪的嗎 XD
06/20 01:18, 8F

06/20 12:58, , 9F
這個開關寫法的範例有誇號,但沒加也能執行,不知道差在哪?
06/20 12:58, 9F

06/20 12:59, , 10F
用:=那裡怪我也不知道,反正是範例抄來的,執行上也沒問題XD
06/20 12:59, 10F

06/20 13:00, , 11F
其實這跟 #1M-IICNw 的 PressKey := ! PressKey 是一樣邏輯
06/20 13:00, 11F

06/20 13:00, , 12F
第一次按熱鍵時變數還不存在,第二次按熱鍵時變數已存在,
06/20 13:00, 12F

06/20 13:00, , 13F
然後用if/else判斷執行,原範例 https://goo.gl/i3a6vh
06/20 13:00, 13F

06/20 16:21, , 14F
因為以前在跑的時候以if a := b來說
06/20 16:21, 14F

06/20 16:21, , 15F
只要b有值if就會判斷為true 即使a實際上和b的值不一樣
06/20 16:21, 15F

06/20 16:23, , 16F
然後那個範例其實不需要用到:=
06/20 16:23, 16F

06/20 16:24, , 17F
因為if 後面的判斷式只要加了誇號後裡面都會預設是變數
06/20 16:24, 17F

06/20 16:24, , 18F
所以if (a = b)跟if a = b是不同的
06/20 16:24, 18F

06/20 16:25, , 19F
然後記得不佳誇號的話if後面業無法直接用:=
06/20 16:25, 19F

06/20 16:26, , 20F
得用類似if a = %b%這樣
06/20 16:26, 20F

06/20 16:28, , 21F
話說發現一件事 這台電腦是以前灌的1.0.47.6版 XD
06/20 16:28, 21F

06/20 16:29, , 22F
可能AHK_L之後的1.1有不一樣?
06/20 16:29, 22F

06/20 16:46, , 23F
呃…我冒號拿掉改成 if (t = !t) 變成只會判定為false
06/20 16:46, 23F

06/20 16:46, , 24F
目前是用v1.1.23,話說1.0是快10年前的版本了吧… 囧
06/20 16:46, 24F

06/20 16:58, , 25F

06/20 16:58, , 26F
看了一下Docs,單詞 "if" 後的第一項為 函數調用
06/20 16:58, 26F

06/20 16:58, , 27F
或類似 "not" 或 "!" 這樣的運算符時, 開括號可以完全省略.
06/20 16:58, 27F

06/20 16:59, , 28F
另外~ 保存表達式的結果:要把結果賦值給變量,請使用:=運算符
06/20 16:59, 28F

06/20 16:59, , 29F
所以沒加冒號才會一直回傳false
06/20 16:59, 29F

06/20 17:35, , 30F
知道我錯在哪惹 其實是可以不用加誇號直接用:=啊 XD
06/20 17:35, 30F

06/20 17:35, , 31F
一直以來不知哪根筋不對覺得不行...勞煩你打這麼多字
06/20 17:35, 31F

06/20 17:35, , 32F
真是不好意思 _A_
06/20 17:35, 32F
文章代碼(AID): #1NPWpd0r (EzHotKey)
文章代碼(AID): #1NPWpd0r (EzHotKey)