AutoHotkey: Duplicate starter menu entry
Jump to navigation
Jump to search
; //////////////////////////////////////////////////////////////////////////// ; // TC_StartMenu_DuplicateEntry.ahk V1.2 ; // (W) StatusQuo 2008-2009 for TC 7.02a (tested up to 7.04a and 7.50 rc1) ; // ; // Duplicates an entry in TC Start Menu or Directory Hotlist ; //////////////////////////////////////////////////////////////////////////// ; *** set window class names sClassMainWin := "TUSERMENUCHANGE" sClassDialog := "TSTDTREEDLG" ; *** wait for & activate window WinWait , ahk_class %sClassMainWin%, IfWinNotActive, ahk_class %sClassMainWin%,, WinActivate, ahk_class %sClassMainWin%, WinWaitActive , ahk_class %sClassMainWin%, ; main "Change Start Menu" ; *** store source values ControlGetText, sText3, TEdit3, ahk_class %sClassMainWin%, ; main window ; TC 7.04a, command ControlGetText, sText2, TEdit2, ahk_class %sClassMainWin%, ; main window ; TC 7.04a, parameters ControlGetText, sText1, TEdit1, ahk_class %sClassMainWin%, ; main window ; TC 7.04a, start path sEditName1 := "TEdit1" ; <= TC 7.04a sEditName2 := "TEdit2" ; <= TC 7.04a sEditName3 := "TEdit3" ; <= TC 7.04a if (sText3 . sText2 . sText1 = "") { sEditName1 := "TAltEdit1" ; >= TC 7.50 sEditName2 := "TAltEdit2" ; >= TC 7.50 sEditName3 := "TAltEdit3" ; >= TC 7.50 ControlGetText, sText3, TAltEdit3, ahk_class %sClassMainWin%, ; main window ; TC 7.50 , command ControlGetText, sText2, TAltEdit2, ahk_class %sClassMainWin%, ; main window ; TC 7.50 , parameters ControlGetText, sText1, TAltEdit1, ahk_class %sClassMainWin%, ; main window ; TC 7.50 , start path } /* ; --- TC7.04 uses TEdit1+2 for dir menu, TEdit3 is "command" in start menu and empty in dir menu ; --- unusable in TC 7.50 (Beta 4): both dialogs use the same control names + window classes ; *** Auto-detect dir <> starter menu if (sText3 = "") ; "command" string empty => only usable up to TC 7.04a { sDialogType := "dir" } else { sDialogType := "start" ControlGet, iCBox2, Checked,, TCheckBox2, ahk_class %sClassMainWin%, ; main window, as symbol ControlGet, iCBox1, Checked,, TCheckBox1, ahk_class %sClassMainWin%, ; main window, fullscreen } */ ; *** Auto-detect dir <> starter menu If (WinActive("Startermenü ändern ahk_class TUSERMENUCHANGE") or WinActive("Change start menu ahk_class TUSERMENUCHANGE")) { sDialogType := "start" ControlGet, iCBox2, Checked,, TCheckBox2, ahk_class %sClassMainWin%, ; main window, as symbol ControlGet, iCBox1, Checked,, TCheckBox1, ahk_class %sClassMainWin%, ; main window, fullscreen } else { If (WinActive("Verzeichnismenü ändern ahk_class TUSERMENUCHANGE") or WinActive("Change directory menu ahk_class TUSERMENUCHANGE")) { sDialogType := "dir" } } If (sDialogType = "") ; autodetect failed { MsgBox, 3,, Dialog auto-detection failed (unknown language or version).`n`nIs the dialog = directory hotlist?`n`tYes = directory hotlist`n`tNo = starter menu IfMsgBox, Yes sDialogType := "dir" IfMsgBox, No sDialogType := "start" IfMsgBox, Cancel Return } ; *** get entry title if (sDialogType = "dir") { ; ControlClick, TButton4, ahk_class %sClassMainWin%, ; Button "Change Title"; DirMenu ControlSend, TButton4, {Space}, ahk_class %sClassMainWin%, ; Button "Change Title"; DirMenu } else { ; ControlClick, TButton5, ahk_class %sClassMainWin%, ; Button "Change Title"; StartMenu ControlSend, TButton5, {Space}, ahk_class %sClassMainWin%, ; Button "Change Title"; StartMenu } WinWaitActive, ahk_class %sClassDialog%, ; dialog "Change Title" ; ControlGetText, sMenuTitle, TEdit1, ahk_class %sClassDialog% ; get old title ControlGetText, sMenuTitle, %sEditName1%, ahk_class %sClassDialog% ; get old title ; ControlClick, TButton1, ahk_class %sClassDialog%, ; Button Cancel, close "Change Title" dialog ControlSend, TButton1, {Space}, ahk_class %sClassDialog%, ; Button Cancel, close "Change Title" dialog WinWaitActive, ahk_class %sClassMainWin%, ; main window ; *** add new entry if (sDialogType = "dir") { ; ControlClick, TButton7, ahk_class %sClassMainWin%, ; Button "Add Menu Entry" ControlSend, TButton7, {Space}, ahk_class %sClassMainWin%, ; Button "Add Menu Entry" } else { ; ControlClick, TButton8, ahk_class %sClassMainWin%, ; Button "Add Menu Entry" ControlSend, TButton8, {Space}, ahk_class %sClassMainWin%, ; Button "Add Menu Entry" } WinWaitActive, ahk_class %sClassDialog%, ; dialog "Change Title" ; ControlSetText, TEdit1, %sMenuTitle% [copy], ahk_class %sClassDialog% ; Title ControlSetText, %sEditName1%, %sMenuTitle% [copy], ahk_class %sClassDialog% ; Title (TC7.04a:TEdit1) sOKButTit := "TButton3" ; >= TC 7.50 if (sEditName1 = "TEdit1") ; <= TC 7.04a sOKButTit := "TButton2" ; ControlClick, TButton2, ahk_class %sClassDialog%, ; Button OK, close "Title" dialog ; ControlClick, %sOKButTit%, ahk_class %sClassDialog%, ; Button OK, close "Title" dialog ControlSend, %sOKButTit%, {Space}, ahk_class %sClassDialog%, ; Button OK, close "Title" dialog WinWaitActive, ahk_class %sClassMainWin%, ; main window ; *** fill stored values from source entry ; if (sDialogType = "start") ; only TC 7.04a uses just TEdit1+2 for dir menu { ; ControlSetText, TEdit3, %sText3%, ahk_class %sClassMainWin%, ; main window ControlSetText, %sEditName3%, %sText3%, ahk_class %sClassMainWin%, ; main window } ControlSetText, %sEditName2%, %sText2%, ahk_class %sClassMainWin%, ; main window ControlSetText, %sEditName1%, %sText1%, ahk_class %sClassMainWin%, ; main window if (sDialogType = "start") { if iCBox2 Control, Check,, TCheckBox2, ahk_class %sClassMainWin%, ; main window else Control, UnCheck,, TCheckBox2, ahk_class %sClassMainWin%, ; main window if iCBox1 Control, Check,, TCheckBox1, ahk_class %sClassMainWin%, ; main window else Control, UnCheck,, TCheckBox1, ahk_class %sClassMainWin%, ; main window ; *** set cursor to command value ; ControlFocus, TEdit3, ahk_class %sClassMainWin%, ; main window ControlFocus, %sEditName3%, ahk_class %sClassMainWin%, ; main window ControlSend, %sEditName3%, {HOME}, }
Back to AutoHotkey