Stroke是一款鼠標(biāo)手勢(shì)程序,Stroke允許你通過(guò)劃動(dòng)鼠標(biāo)來(lái)執(zhí)行特定的操作,你可以使用Stroke.Configure來(lái)幫助你輕松地完成相關(guān)的設(shè)定。
基本簡(jiǎn)介
首先你需要了解的是“動(dòng)作”和“動(dòng)作包”的概念,動(dòng)作包是若干動(dòng)作的集合,這里的動(dòng)作指的是通過(guò)特定的手勢(shì)執(zhí)行特定的操作,這些操作需要你編寫 C# 代碼來(lái)實(shí)現(xiàn),你的代碼最終會(huì)在程序運(yùn)行時(shí)插入到一個(gè)臨時(shí)創(chuàng)建的方法體中。為了方便使用,你可以自行編寫動(dòng)態(tài)鏈接庫(kù)(dll),其命名空間建議使用“Stroke”,否則在編寫腳本的時(shí)候你需要指定其所在的命名空間。另外,大多數(shù)常用的 .net framework 的命名空間已經(jīng)被引入,你可以在腳本中直接使用。動(dòng)作包主要是為了匹配操作環(huán)境而設(shè)計(jì)的,這里的操作環(huán)境指的是當(dāng)前被操作的窗體(位于手勢(shì)起點(diǎn)下方的窗體),你需要在動(dòng)作包的代碼區(qū)域填寫正則表達(dá)式來(lái)匹配窗體所屬程序的路徑,每行填寫一條模式字符串,若路徑與某條模式字符串之間存在匹配成功的部分則動(dòng)作包里的動(dòng)作才有可能被觸發(fā)。每次使用鼠標(biāo)劃出手勢(shì)最多只能觸發(fā)一個(gè)動(dòng)作,且動(dòng)作包的匹配順序是從后往前的,換句話說(shuō),如果在后面的動(dòng)作包中有動(dòng)作匹配成功了,那么其他的所有在它前面動(dòng)作包內(nèi)的動(dòng)作都將不會(huì)再被觸發(fā)。因此,建議將全局類動(dòng)作包放在靠前的位置,這樣就不會(huì)影響特定程序的動(dòng)作匹配了。
使用說(shuō)明
Base 庫(kù)
為了方便你編寫實(shí)用的腳本,我提供了 Base.dll,以下介紹這個(gè)庫(kù)所提供的功能:
Base.Data:是一個(gè) Dictionary
Base.Activate():激活當(dāng)前操作的窗體。(為了避免激活窗體帶來(lái)的副作用,Stroke 在執(zhí)行動(dòng)作前并不激活任何窗體。)
Base.KeyDown(Keys key):按下鍵盤上的某個(gè)鍵。Keys 定義在 System.Windows.Forms.Keys 中。
Base.KeyUp(Keys key):彈起鍵盤上的某個(gè)鍵。
Base.PressKeys(string keys):允許你執(zhí)行一串按鍵序列操作。以下列出該函數(shù)所支持的所有字符(不區(qū)分大小寫)及其含義:
所有英文字母和數(shù)字:按下并彈起對(duì)應(yīng)的鍵。
修飾鍵:
(:按下 Ctrl 鍵。
):彈起 Ctrl 鍵。
[:按下 Shift 鍵。
]:彈起 Shift 鍵。
{:按下 Alt 鍵。
}:彈起 Alt 鍵。
<:按下 Win 鍵。
>:彈起 Win 鍵。
其他:
\t:Tab 鍵。
\r:Return(Enter) 鍵。
\e:Escape 鍵。
\s:Space 鍵。
\b:Backspace 鍵。
\i:Insert 鍵。
\d:Delete 鍵。
Base.WindowState:它是關(guān)于窗口狀態(tài)的枚舉類型,有以下四種:
Normal:正常。
Minimize:最小化。
Maximize:最大化。
Close:關(guān)閉。
Base.SetWindowState(WindowState state):設(shè)置當(dāng)前窗體的狀態(tài)。
Base.GetWindowState():獲取當(dāng)前窗體的狀態(tài),返回類型為 Base.WindowState。
Base.Run(string fileName, string arguments = "", string workingDirectory = ""):?jiǎn)?dòng)指定的應(yīng)用程序或文件。
常見(jiàn)問(wèn)題
為什么我不能操作某些窗體(例如:任務(wù)管理器)? 由于 Stroke 選擇了 uiAccess="false" 設(shè)置,你需要使用管理員權(quán)限運(yùn)行 Stroke 時(shí)才能與這些界面交互。
我想開(kāi)機(jī)就運(yùn)行 Stroke,我該怎么做? 我推薦以下兩種方式,可以根據(jù)你的需求進(jìn)行選擇。 第一種,使用任務(wù)計(jì)劃程序,在常規(guī)選項(xiàng)卡勾選“使用最高權(quán)限運(yùn)行”,觸發(fā)器選擇“登錄時(shí)”,操作選擇“啟動(dòng)程序”(注意:起始位置必須填寫 Stroke.exe 所在的目錄)。 第二種,將配置文件“Stroke/app.manifest”內(nèi)的 uiAccess 屬性設(shè)置為 true,編譯并對(duì)程序進(jìn)行簽名,然后將整個(gè)目錄放入“C:\Program Files”內(nèi),最后將 Stroke.exe 的快捷方式放入啟動(dòng)目錄(shell:startup)。
我應(yīng)該將寫好的 dll 放在哪里? 請(qǐng)放在 Stroke.exe 所在的同一目錄內(nèi)。
我在寫 dll 時(shí)需要知道當(dāng)前操作的窗體的句柄,如何獲取到它? 將 Stroke 引入你的項(xiàng)目,Stroke.CurrentWindow 就是當(dāng)前窗體的句柄。
為什么我修改后的手勢(shì)和我畫的不一樣? 當(dāng)你重畫已有手勢(shì)的時(shí)候,Stroke.Configure 不會(huì)直接覆蓋原有的手勢(shì),而是使用你新畫的手勢(shì)來(lái)修正它。你可以不斷地重畫已有的手勢(shì),這樣能讓它變得更一般化。
如何隱藏屏幕上的畫筆? 在 Stroke.Configure 中將畫筆的“不透明度”或“粗細(xì)”調(diào)至零即可。
為什么我每次打開(kāi) Stroke.Configure 時(shí) Stroke 都會(huì)退出? 由于 Stroke 會(huì)影響 Stroke.Configure 進(jìn)行手勢(shì)設(shè)置,因此 Stroke.Configure 在啟動(dòng)時(shí)會(huì)結(jié)束 Stroke 的進(jìn)程。請(qǐng)?jiān)谕瓿稍O(shè)置之后自行啟動(dòng) Stroke。