事情原由
Total Commander是神器,這個不多說玻孟;它不免費,分試用版和正式版鳍征,兩版在功能上無差異黍翎。
試用版除了在啟動時會彈出一個提示框之外,并無任何禁止/限制使用TC的措施艳丛,這是所有共享軟件中最寬大的匣掸。一定程度上趟紊,代表了作者的行為默許。TC的作者Ghisler兄弟曾表示:What if you cannot afford the TC licence? We tolerate the use of the unregistered version by private users who cannot afford the program. (如果你買不起TC許可怎么辦碰酝?我們?nèi)菰S經(jīng)濟能力有限的個人用戶使用非注冊版本霎匈。)[1]
未注冊版TC在打開時彈出的提示框中包含3個數(shù)字按鈕,并隨機生成1個數(shù)字送爸,需要你根據(jù)當(dāng)前生的數(shù)字去點選對應(yīng)的按鈕铛嘱,注冊后該提示框會消失。這個提示框處理起來雖然不麻煩袭厂,但如果一天打開TC很多次墨吓,每次都要做這種操作的話就有點抓狂了。破解版的TC當(dāng)然可以免受提示框之苦纹磺,但破解版跟不上最新版的節(jié)奏帖烘,同時存在很多小問題,而且破解版往往會將軟件重新冠名爽航,讓人用著特別不爽蚓让。
既然TC的作者默許了用戶可以一直使用未注冊版,那干脆就用正版的未注冊版好了讥珍。于是历极,需要尋找一個合適的解決方案,不讓那個數(shù)字提示框每天煩我N次衷佃。
我想到的辦法有兩個趟卸。
方法一,寫一個AutoHotKey腳本放在后臺氏义,每隔一段時間就檢查一下TC開了沒有锄列,然后去自動幫我們點數(shù)字。這樣做的壞處是惯悠,腳本只有在剛打開TC的時候起作用邻邮,然后其他大部分時間都在不停地頻繁地做無用功。
方法二克婶,寫AutoHotKey腳本為打開TC設(shè)置一個熱鍵筒严,同時自動點擊數(shù)字。這樣做唯一的壞處是情萤,如果通過非熱鍵方式打開TC的話鸭蛙,數(shù)字框是不會被自動點擊的。不過這并不是問題筋岛,既然都用TC了娶视,就意味著你是一個鍵盤流選手了,我可以說我的桌面一個圖標(biāo)都沒有打開程序全靠鍵盤么……所以睁宰,我最后選擇的就是方法二肪获。
自動點擊TC啟動時彈出的數(shù)字框
這里參考索思索想的博客[2]寝凌,用腳本實現(xiàn)在熱鍵win+t下打開TC并自動點擊彈窗的按鈕:
#t::
Run tc
WinWait, ahk_class TNASTYNAGSCREEN
WinGetText, Content, ahk_class TNASTYNAGSCREEN
StringMid, Num, Content, 10, 1
ControlSend,, %Num%, ahk_class TNASTYNAGSCREEN
return
這樣就一切OK了。但是贪磺,我又想再加點別的東西硫兰。
事實上每天打開電腦文件的操作是很頻繁的,如果總是對TC打開又關(guān)閉打開又關(guān)閉寒锚,也是一件很煩的事情,莫不如一旦打開违孝,就不要讓它關(guān)閉好了刹前,但是關(guān)閉是一件很容易誤操作的事情,如何能最有效地防止關(guān)閉呢雌桑?經(jīng)過一些嘗試喇喉,最后選擇了如下方法。
隱藏TC標(biāo)題欄里的關(guān)閉按鈕
這里參考了小眾軟件推薦的NoClose軟件[3]校坑,幸運的是拣技,這個小軟件是利用AutoHotKey寫的,所以代碼可以直接參考移植耍目。
原代碼中使用WinGet命令獲得當(dāng)前active窗口的ID膏斤,但是TC剛打開時active的窗口是彈出來的提示框而不是TC主窗口⌒巴裕看了AHK的手冊之后發(fā)現(xiàn)莫辨,可以利用參數(shù)強制選取指定標(biāo)題的窗口。測試了一下發(fā)現(xiàn)WinGet語句貌似在TC主窗口生成之前就執(zhí)行結(jié)束了毅访,無法截取到其ID沮榜。再看手冊,發(fā)現(xiàn)了WinWait命令喻粹,可以先等待TC窗口的exist蟆融,再繼續(xù)后面的語句,這樣就可以完全保證捕捉到TC的主窗口了守呜。
在原有代碼的基礎(chǔ)上型酥,在Run tc之后加上以下代碼即可:
WinWait, Total Commander 8.51a - NOT REGISTERED, , 2
WinGet,id,ID,Total Commander 8.51a - NOT REGISTERED
menu:=DllCall("user32\GetSystemMenu","UInt",id,"UInt",0)
DllCall("user32\DeleteMenu","UInt",menu,"UInt",0xF060,"UInt",0x0)
此AHK腳本放后臺運行后,我按win+T弛饭,系統(tǒng)會打開TC冕末,提示框彈一下瞬間就會消失,同時TC的主窗口的關(guān)閉按鈕已經(jīng)成灰色的了侣颂。在任務(wù)欄下TC的條上右鍵也不顯示關(guān)閉選項了档桃。即利用autohotkey,不必做特殊的操作便達到了防止TC誤關(guān)閉的效果憔晒。
參考:
[1] 善用佳軟:為什么善用佳軟大力推廣非免費的Total Commander