[源碼]AHK管理器

;源碼


;by Sixtyone At 2016.4.10

;更新說明

/*

2016.4.24:

1.運(yùn)行#腳本后壁涎,gui自動隱藏休弃;

2.啟動腳本目錄后介牙,gui自動隱藏。

2016.4.17:

1. 增加過濾中使用%A_ScriptDir%變量慨默。

2016.4.14:

1.修復(fù)2016.4.13版本中的1個bug;

2.添加文件(夾)過濾功能:添加到過濾中的文件(夾),將不會被讀取到AHK管理器中贩耐;

3.修復(fù)之前版本某些腳本不能關(guān)閉問題峦萎;

4.修復(fù)腳本不能正確讀取ini配置問題肖粮。

2016.4.13:

1.更新添加“Scripts文件夾內(nèi)的第一層子文件夾腳本”,但所有腳本不能同名谆构。

2016.4.11:

1.腳本庫中啟動條目后,焦點(diǎn)自帶設(shè)置為上一條,正在運(yùn)行庫同;

2.更新腳本庫雙擊運(yùn)行腳本,正在運(yùn)行庫雙擊關(guān)閉腳本;

3.腳本庫增加右鍵菜單:"編輯","運(yùn)行"--正在運(yùn)行庫增加右鍵菜單:"編輯","重載","關(guān)閉"虾攻。

*/

#SingleInstance Force

#NoEnv

;#Warn

SetWorkingDir %A_ScriptDir%

Process, Priority,, High

DetectHiddenWindows,On

Menu, Tray, NoStandard? ? ? ? ? ? ? ? ? ;刪除自帶托盤菜單

Menu, tray, add, 管理,ShowGui? ;? 顯示gui

Menu, tray, add? ; 創(chuàng)建分隔線.

Menu, tray, add ,過濾,Menu_Tray_過濾? ? ? ? ;? 過濾

Menu, tray, add ,腳本目錄,Menu_Tray_OpenDir? ? ? ? ? ;? 腳本目錄

Menu, tray, add ,重啟管理器,Menu_Tray_Reload? ? ? ? ? ; 重啟

Menu, tray, Add

Menu, tray, Add,幫助,Help ;Help

Menu, tray, Add,關(guān)于,About ;關(guān)于

Menu, tray, Add

Menu, tray, Add, 退出, ExitSub? ? ? ? ? ? ? ? ? ; 創(chuàng)建? ? 退出

Menu, Tray, Default, 管理? ;;默認(rèn)? 菜單:配置

Menu, Tray, Icon, Shell32.dll, 258

;IntelligentScript:

Gui,Destroy

Gui Add, ListView, x8 y30 w200 h400 AltSubmit vScriptLibrary g運(yùn)行 , 腳本名稱

Gui Add, Text, x10 y3 w120 h23 +0x200, 腳本庫

Gui Add, ListView, x233 y30 w200 h400 AltSubmit vScriptRun g運(yùn)行2, 腳本名稱

Gui Add, Text, x234 y3 w120 h23 +0x200, 已運(yùn)行腳本

Gui Add, Button, x440 y30 w60 h42 gtsk_open, 啟動腳本

Gui Add, Button, x440 y100 w60 h42 gtsk_restart, 重載腳本

Gui Add, Button, x440 y170 w60 h42 gtsk_close, 關(guān)閉腳本

Gui Add, Button, x440 y240 w60 h42 gMenu_Tray_OpenDir, 腳本目錄

Gui Add, Button, x440 y310 w60 h42 gMenu_Tray_Reload, 重啟管理器

Gui Add, Button, x440 y380 w60 h42 gExitSub, 退出

;Gui Show,, AHK管理器

Gui Default

Gui,ListView,ScriptLibrary

scriptCount = 0

IniRead,Golv,過濾.ini,過濾

OpenList := Array()

UnOpenList := Array()

Loop, %A_ScriptDir%\scripts\*.ahk,,1

{

if !(A_LoopFileLongPath~="i).+?\\scripts\\[^\\]*\\?[^\\]+\.ahk")? ? ? ? ? ? ? ? ? ? ? ? ? ;增加一層子文件讀取

continue

_Golv=0

loop,Parse,Golv,`n,`r? ? ? ? ? ? ? ? ? ;增加過濾判斷

{

StringReplace,_GolvPath,A_LoopField,`%A_ScriptDir`%,%A_ScriptDir%

ifInString,A_LoopFileLongPath ,%_GolvPath%

{

_Golv=1

break

}

}

if? _Golv=1

continue

StringReplace, MenuName, A_LoopFileName, .ahk

scriptCount += 1

%MenuName%_Path :=A_LoopFileLongPath

%MenuName%_Dir :=A_LoopFileDir

scriptsName%scriptCount% := A_LoopFileName

;scriptsOpened%scriptCount% = 0

UnOpenList.Insert(MenuName)

}

InsertionSort(UnOpenList)

for Index, MenuName in UnOpenList

{

LV_Add("",MenuName)

}

LV_ModifyCol()

gosub tsk_openAll

;Gui,Show

return

運(yùn)行:

if A_GuiEvent = DoubleClick

{

goto,tsk_open

}

return

運(yùn)行2:

if A_GuiEvent = DoubleClick

goto,tsk_close

return

GuiContextMenu:? ; 運(yùn)行此標(biāo)簽來響應(yīng)右鍵點(diǎn)擊或按下 Appskey.

if A_GuiControl = ScriptLibrary? ; 這個檢查是可選的. 讓它只為 ListView 中的點(diǎn)擊顯示菜單.

{

Gui,Default

Gui,ListView,ScriptLibrary

RowNumber = 0

Loop,%scriptCount%

{

RowNumber := LV_GetNext(RowNumber)

if not RowNumber

Return

break

}

Menu,PopC,Add,編輯,P_edit

Menu,PopC,Add,運(yùn)行,tsk_open

menu,PopC,Show

return

}

if? A_GuiControl = ScriptRun

{

Gui,Default

Gui,ListView,ScriptRun

RowNumber = 0

Loop,%scriptCount%

{

RowNumber := LV_GetNext(RowNumber)

if not RowNumber

Return

break

}

Menu,PopC2,Add,編輯,P_edit

Menu,PopC2,Add,重載,tsk_restart

Menu,PopC2,Add,關(guān)閉,tsk_close

menu,PopC2,Show

return

}

return

P_edit:

LV_GetText(thisScript, RowNumber)

P_editpath :=%thisScript%_path

Run, F:\Program Files\AutoHotkey\SciTE\SciTE.exe? "%P_editpath%"

return

tsk_open:

Gui,Default

Gui,ListView,ScriptLibrary

RowNumber = 0

Loop,%scriptCount%

{

RowNumber := LV_GetNext(RowNumber)

if not RowNumber

Return

LV_GetText(thisScript, RowNumber)

Run,% %thisScript%_Path,% %thisScript%_Dir,,%thisScript%

IfInString, thisScript, #

{

Gui, Hide

Return

}

;scriptsOpened%A_Index% := 1

break

}

Gui,ListView,ScriptRun

LV_Add("",ThisScript)

LV_ModifyCol()

Gui,ListView,ScriptLibrary

Loop, %scriptCount%

{

LV_GetText(outputname,A_Index,1)

if (outputname=ThisScript)

{

LV_Delete(A_Index)

if A_Index<>1

{

LV_Modify(A_Index-1, "Select")

}

else

{

LV_Modify(1, "Select")

}

break

}

}

LV_ModifyCol()

return

tsk_close:

Gui,Default

Gui,ListView,ScriptRun

RowNumber = 0

Loop,%scriptCount%

{

RowNumber := LV_GetNext(RowNumber)

if not RowNumber

Return

LV_GetText(thisScript, RowNumber)

ID:=%thisScript%

WinClose, ahk_pid %ID%

IfWinExist,ahk_pid %ID%

Process,Close,%ID%

;scriptsOpened%A_Index% := 0

break

}

Gui,ListView,ScriptLibrary

LV_Add("",ThisScript)

LV_ModifyCol()

Gui,ListView,ScriptRun

Loop, %scriptCount%

{

LV_GetText(outputname,A_Index,1)

if (outputname=thisScript)

{

LV_Delete(A_Index)

if A_Index<>1

{

LV_Modify(A_Index-1, "Select")

}

else

{

LV_Modify(1, "Select")

}

break

}

}

LV_ModifyCol()

return

tsk_restart:

Gui,Default

Gui,ListView,ScriptRun

RowNumber = 0

Loop,%scriptCount%

{

RowNumber := LV_GetNext(RowNumber)

if not RowNumber

Return

LV_GetText(thisScript, RowNumber)

ID:=%thisScript%

WinClose, ahk_pid %ID%

IfWinExist,ahk_pid %ID%

Process,Close,%ID%

Run,% %thisScript%_Path,% %thisScript%_Dir,,%thisScript%

break

}

return

tsk_openAll:

Loop, %scriptCount%

{

thisScript := scriptsName%A_Index%

StringReplace, thisScript, thisScript, .ahk

;if scriptsOpened%A_Index% = 0

;{

IfInString, thisScript, _? ? ? ? ? ;IfInString,%thisScript%_Path,%A_ScriptDir%\Scripts\_? ? 不自動啟動_文件夾內(nèi)的腳本

{

continue

}

IfInString, thisScript, #

{

continue

}

Run, % %thisScript%_Path,% %thisScript%_Dir,,%thisScript%

;scriptsOpened%A_Index% = 1

Gui,Default

Gui,ListView,ScriptRun

LV_Add("",thisScript)

LV_ModifyCol()

Gui,ListView,ScriptLibrary

Loop, %scriptCount%

{

LV_GetText(outputname,A_Index,1)

if (outputname=thisScript)

{

LV_Delete(A_Index)

break

}

}

LV_ModifyCol()

;}

}

;Gui,Show

return

Menu_Tray_過濾:

Run, Notepad.exe? 過濾.ini

return

Menu_Tray_OpenDir:

Run, %A_ScriptDir%\scripts

gui,Hide

return

Menu_Tray_Reload:

gui,Hide

Gui,Default

Gui,ListView,ScriptRun

Loop % LV_GetCount()

{

LV_GetText(thisScript, A_Index)

ID:=%thisScript%

WinClose, ahk_pid %ID%

IfWinExist,ahk_pid %ID%

Process,Close,%ID%

}

Reload

return

GuiEscape:

GuiClose:

Gui, Hide

return

ExitSub:

msgbox,260,是否退出铡买?,退出腳本,將退出所有經(jīng)過AHK管理器啟動的腳本,你是否確認(rèn)退出霎箍?

IfMsgBox No

return

gui,Hide

Gui,Default

Gui,ListView,ScriptRun

Loop % LV_GetCount()

{

LV_GetText(thisScript, A_Index)

ID:=%thisScript%

WinClose, ahk_pid %ID%

IfWinExist,ahk_pid %ID%

Process,Close,%ID%

}

Gui,Destroy

ExitApp

return

InsertionSort(ByRef array)

{

target := Array()

count := 0

for Index, Files in array

{

files%Index% := Files

count += 1

}

j := 2

while (j <= count)

{

key := files%j%

i := j-1

while (i >= 0 && key < files%i%)

{

k := i+1

files%k% := files%i%

i -= 1

}

k := i+1

files%k% := key

j += 1

}

Loop, %count%

{

target.Insert(files%A_Index%)

}

array := target

}

About:

msgbox,AHK管理器`n版本號:2016.4.24`nCopyright?2016 Sixtyone.? All Rights Reserved.`n`n關(guān)于作者:`n`tName:Sixtyone`n`tQQ:576642385

return

Help:

msgbox,將AHK腳本放在腳本目錄下進(jìn)行管理:`n1.以_開頭的腳本不會自動加載`n2.以#開頭的腳本為臨時腳本即運(yùn)行完就退出`n3.腳本名字不能有空格及除_奇钞、#以為的符號`n4.腳本不能為快捷方式

return

F18::

ShowGui:

gui,Show,,AHK管理器

return

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市漂坏,隨后出現(xiàn)的幾起案子景埃,更是在濱河造成了極大的恐慌,老刑警劉巖顶别,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谷徙,死亡現(xiàn)場離奇詭異,居然都是意外死亡驯绎,警方通過查閱死者的電腦和手機(jī)完慧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剩失,“玉大人屈尼,你說我怎么就攤上這事册着。” “怎么了脾歧?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵甲捏,是天一觀的道長。 經(jīng)常有香客問我涨椒,道長摊鸡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任蚕冬,我火速辦了婚禮,結(jié)果婚禮上是辕,老公的妹妹穿的比我還像新娘囤热。我一直安慰自己,他們只是感情好获三,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布旁蔼。 她就那樣靜靜地躺著,像睡著了一般疙教。 火紅的嫁衣襯著肌膚如雪棺聊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天贞谓,我揣著相機(jī)與錄音限佩,去河邊找鬼。 笑死裸弦,一個胖子當(dāng)著我的面吹牛祟同,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播理疙,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼晕城,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了窖贤?” 一聲冷哼從身側(cè)響起砖顷,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赃梧,沒想到半個月后滤蝠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡槽奕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年几睛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粤攒。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡所森,死狀恐怖囱持,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情焕济,我是刑警寧澤纷妆,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站晴弃,受9級特大地震影響掩幢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜上鞠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一际邻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧芍阎,春花似錦世曾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至岭佳,卻和暖如春血巍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背珊随。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工述寡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人玫恳。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓辨赐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親京办。 傳聞我的和親對象是個殘疾皇子掀序,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容

  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,444評論 0 17
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)惭婿。 張土汪:刷leetcod...
    土汪閱讀 12,748評論 0 33
  • afinalAfinal是一個android的ioc不恭,orm框架 https://github.com/yangf...
    passiontim閱讀 15,436評論 2 45
  • 我記得那時他的笑钥星,晃瞎了我的眼沾瓦。從此我只記得那雙眼,再也看不清這個世間。 那時候認(rèn)識他的原因很簡單贯莺。因?yàn)樗娴暮苡?..
    于無閱讀 565評論 0 1
  • 感恩節(jié)的尾巴风喇,想說很多心里話 第一個謝的當(dāng)然是老媽。爸不在的這幾年里缕探,知道了什么是相依為命魂莫,老媽來煙臺的這幾年,照...
    王大晟閱讀 144評論 0 1