본문 바로가기

업무 자동화

오토핫키 단축키 등록 프로그램 - By YoucefHam

반응형

 

  • 단축키 지정해서 원하는 프로그램 실행 가능
  • 프로그램 실행 후 아이콘 트레이에서 Show/Hide 선택하여 키 등록
  • key 창에서 원하는 단축키를 누르고 실행할 프로그램 이름 혹은 Brows 버튼을 통해 프로그램 지정
  • 제작자: YoucefHam
  • zip 비밀번호:1234,  zip 압축 해제 이후 reg.bat을 관리자 권한으로 실행
register_hotkey.zip
0.37MB



소스코드 변경 사항
1 관리자 권한 실행 제거
시작 프로그램 등록 후 컴퓨터 재부팅 시 매번 UAC 창이 발생하므로
이를 제거하고 권한이 필요하지 않은 폴더(C:\Tools)에 이동하도록 조치함

2 GUI 창 제거
프로그램 실행 시 GUI 창이 팝업되는데 시작 프로그램에 등록하면 부팅할 때마다
GUI 창이 보여지므로 해당 소스코드를 제거하고 아이콘 트레이에서 show hide로만 GUI 창을
볼 수 있도록 조치함

3 타임스탬프 기록
대괄호 꺽쇠("]")를 두 번 입력하면 현재 시간이 기록됨.
메모장에서 F5 버튼을 누른 것과 동일한 기능임


.ahk
 ;if Not A_IsAdmin AND A_OSVersion <> WIN_XP
 ;{
 ;	Run *RunAs "%A_ScriptFullPath%"
 ;	ExitApp
 ;}
 #NoEnv [
 #MaxHotkeysPerInterval 99000000
 #HotkeyInterval 99000000
 #KeyHistory 0
 #SingleInstance Force
 SetWorkingDir %A_ScriptDir%
 ListLines Off
 Process, Priority, , A
 SetBatchLines, -1
 SetKeyDelay, -1, -1
 SetMouseDelay, -1
 SetDefaultMouseSpeed, 0
 SetWinDelay, -1
 SetControlDelay, -1
 SendMode Input
 
 IfNotExist, Saved File.INI
 	MiniW("","")
 else
 {
 	IniRead, var, % "Saved File.INI"
 	IfNotInString, Var, KeyList
 		MiniW("","")
 }
 
 Menu, Tray, NoStandard
 Menu, Tray, Add, Show/Hide, Show_Hide
 Menu, Tray, Default, Show/Hide
 Menu, Tray, Click, 1
 Menu, Tray, Add
 Menu, Tray, Add, Reload, Reload
 Menu, Tray, Add
 Menu, Tray, Add, Exit, Exit_Func
 
 
 Gui, Font, s8 bold
 Gui, Add, Text, x10 y10 cBlue, % "Key :"
 Gui, Add, Hotkey, x+5 y5 w425 vKey
 Gui, Add, Button, x10 y+10 w460 gSetFileDir, Brows
 Gui, Add, Text, x10 y+10 cBlue, % "File : "
 Gui, Add, Edit, x+2 y+-18 w425 r1 vFile 
 Gui, Add, Button, x10 w460 gSave, SAVE
 Gui, Add, Button, x10 y+5 w460 gDeleteRow, DELETE
 Gui, Font, s10 bold underline
 Gui, Add, Text, % "x10 y+10 cBlue", Saved Files :
 Gui, Font, s8 norm
 Gui, Font, norm bold
 Gui, Add, ListView, x10 y+5 r20 w460 -LV0x10 -Multi vSavedFileList gSelectKey AltSubmit, File|HotKey
 LV_ModifyCol(1, "330 Text")  ; For sorting purposes, indicate that column 2 is an integer.
 LV_ModifyCol(2, "125 Text")  ; For sorting purposes, indicate that column 2 is an integer.
 MiniGet()
 Title := "HotKey Launcher - By YoucefHam"
 Gui, show,, % Title
 Gui, Submit, Hide
 
 Gui, +LastFound -Theme -MinimizeBox
 return
 
 
 SelectKey:
 Gui, Submit, NoHide
 if (LV_GetCount("Selected") = 0)
 	LastItemSelected := ""
 else if (A_GuiEvent = "Normal") and !(A_EventInfo = 0) and (LV_GetCount("Selected") = 1)
 	LastItemSelected := A_EventInfo
 ;~ else if (A_GuiEvent = "DoubleClick") and !(A_EventInfo = 0) and (LV_GetCount("Selected") = 1)
 	;~ goto, DeleteRow
 return
 
 SetFileDir:
 FileSelectFile, SelectedFile, 3, , Open a file, All Files (*.*)
 if SelectedFile
 	GuiControl,, File, % SelectedFile
 return
 
 SAVE:
 Gui, Submit, NoHide
 if (Key = "") or (File = "")
 	return
 if !(MiniR(,Key) = "Error") or !(MiniR(,(RegExMatch(Key,"[\^\!\+]") ? RegExReplace(Key,"([\^\!\+]+)(.*?)$","$1~$2") : "*~" Key)) = "Error") or !(MiniR(,"*~" Key) = "Error") or !(MiniR(,"*$" Key) = "Error")
 {
 	MsgBox, 4144, , HotKey Exist, 1.5
 	return
 }
 MsgBox, 4148, Block Key Input, You want to Block Key Input (*$)
 IfMsgBox, Yes
 	Key := (RegExMatch(Key,"[\^\!\+]") ? Key : "*$" Key)
 else
 	Key := (RegExMatch(Key,"[\^\!\+]") ? RegExReplace(Key,"([\^\!\+]+)(.*?)$","$1~$2") : "*~" Key)
 LV_Add("","""" File """",Key)
 MiniW("""" File """",Key)
 Hotkey, % key, on, UseErrorLevel
 Hotkey, % key, _Hotkey
 return
 
 _Hotkey:
 Run, % MiniR(,A_ThisHotkey)
 return
 
 DeleteRow:
 Gui, Submit, NoHide
 if (!LastItemSelected) and (LV_GetCount("Selected") = 0)
 	return
 MsgBox, 4148, Delete Key, Are you sure to Delete!!!
 IfMsgBox, Yes
 {
 	LV_GetText(Key,LastItemSelected,2)
 	Hotkey, % key, Off
 	LV_Delete(LastItemSelected)
 	MiniD(Key)
 }
 return
 
 GuiClose:
 Gui, Submit, hide
 return
 
 Show_Hide:
 IfWinNotExist,  % Title
 	WinShow,  % Title
 else
 	WinHide,  % Title
 return
 
 Reload:
 Reload
 return
 
 Exit_Func:
 return
 
 MiniGet() {
 	global
 	IfExist, Saved File.INI
 		Loop, Parse, % MiniR("Saved File"), `n
 		{
 			IfInString, A_LoopField, [
 				continue
 			else IfInString, A_LoopField, =
 			Loop, Parse, % A_LoopField, =
 			{
 				if A_Index = 1
 					Key := A_LoopField
 				if A_Index = 2
 					File := A_LoopField
 				Hotkey, % key, _Hotkey
 			}
 			LV_Add("", File, Key)
 		}
 	return
 }
 MiniW(value,Key) {
 	global
 	IniWrite, %value%, % "Saved File.INI", % "KeyList", %Key%
 	return
 }
 MiniR(var = "var",Key="") {
 	global
 	IniRead, var, % "Saved File.INI", % "KeyList", %Key%, % ""
 	return % ((var == "Error") ? "Error" : var)
 }
 MiniD(Key) {
 	global
 	IniDelete, % "Saved File.INI", % "KeyList", %Key%
 	return
 }
 
 SetKeyDelay, -1
 
 
 ; time hotkey
 :*:]]::
 FormatTime, currDateTime, yyyy-MM-dd HH:mm
 Send, % currDateTime
 return


.INI
[KeyList]
*$F1="cmd"
*$F3="ncpa.cpl"​














 
 
 
반응형